2023. 11. 14. 01:12ㆍ스파르타코딩클럽 게임개발
오늘은 4주차 과제를 해볼려고 한다.
챕터4: 과제
4-1 간단한 텍스트 RPG
- 목표: 기본적인 턴 기반 RPG 게임을 만들어 봅니다.
- 과제 요구사항:
- **ICharacter**라는 인터페이스를 정의하세요. 이 인터페이스는 다음의 프로퍼티를 가져야 합니다:
- Name: 캐릭터의 이름
- Health: 캐릭터의 현재 체력
- Attack: 캐릭터의 공격력
- IsDead: 캐릭터의 생사 상태 그리고 다음의 메서드를 가져야 합니다:
- TakeDamage(int damage): 캐릭터가 데미지를 받아 체력이 감소하는 메서드
- **Warrior**는 플레이어의 캐릭터를 나타내며, **Monster**는 몬스터를 나타냅니다.
- ICharacter 인터페이스를 구현하는 **Warrior**와 **Monster**라는 두 개의 클래스를 만들어주세요.
- Monster 클래스에서 파생된 **Goblin**과 **Dragon**이라는 두 개의 클래스를 추가로 만들어주세요.
- **IItem**이라는 인터페이스를 정의하세요. 이 인터페이스는 다음의 프로퍼티를 가져야 합니다:
- Name: 아이템의 이름 그리고 다음의 메서드를 가져야 합니다:
- Use(Warrior warrior): 아이템을 사용하는 메서드, 이 메서드는 Warrior 객체를 파라미터로 받습니다.
- IItem 인터페이스를 구현하는 **HealthPotion**과 **StrengthPotion**이라는 두 개의 클래스를 만들어주세요.
- **Stage**라는 클래스를 만들어 주세요. 이 클래스는 플레이어와 몬스터, 그리고 보상 아이템들을 멤버 변수로 가지며, **Start**라는 메서드를 통해 스테이지를 시작하게 됩니다.
- 스테이지가 시작되면, 플레이어와 몬스터가 교대로 턴을 진행합니다.
- 플레이어나 몬스터 중 하나가 죽으면 스테이지가 종료되고, 그 결과를 출력해줍니다.
- 스테이지가 끝날 때, 플레이어가 살아있다면 보상 아이템 중 하나를 선택하여 사용할 수 있습니다.
- **ICharacter**라는 인터페이스를 정의하세요. 이 인터페이스는 다음의 프로퍼티를 가져야 합니다:
- 추가적인 요구사항:
- 모든 코드는 C# 언어로 작성해주세요.
- 코드에는 적절한 주석을 달아주세요.
- 각 스테이지가 시작할 때 플레이어와 몬스터의 상태를 출력해주세요.
- 각 턴이 진행될 때 천천히 보여지도록 **Thread.Sleep**을 사용하여 1초의 대기시간을 추가해주세요.
자 이것들을 어떻게 구현해야 할까?
사실 아직 구현하지 않았다.
뭐.. 내일의 내가 하겠지 ㅎㅎ
계획을 세워 본다면 개인과제와 비슷한 영역도 있으니 거기서 조금만 추가하면 될것같다.
오늘은 개인과제에서 이쁘게 화면을 꾸미고 싶어서 어떻게든 해보려 했으나 쉽지 않다..
public void Title(string title)
{
Console.SetCursorPosition(Console.WindowWidth / 2 - (title.Length / 2), 1);
Console.WriteLine(title);
Console.Write("║");
foreach (var item in Enumerable.Range(0, Console.WindowWidth))
{
if (item == 0 || item == Console.WindowWidth - 1) continue;
else
{
Console.Write("═");
}
}
Console.WriteLine();
}
public void Drow()
{
foreach (var item in Enumerable.Range(0, Console.WindowWidth))
{
if (item == 0)
{
Console.SetCursorPosition(item, 0);
Console.Write("╔");
}
else if (item == Console.WindowWidth - 1)
{
Console.SetCursorPosition(item, 0);
Console.Write("╗");
}
else
{
Console.SetCursorPosition(item, 0);
Console.Write("═");
}
}
foreach (var item in Enumerable.Range(0, Console.WindowWidth))
{
if (item == 0)
{
Console.SetCursorPosition(item, Console.WindowHeight - 1);
Console.Write("╚");
}
else if (item == Console.WindowWidth - 1)
{
Console.SetCursorPosition(item, Console.WindowHeight - 1);
Console.Write("╝");
}
else
{
Console.SetCursorPosition(item, Console.WindowHeight - 1);
Console.Write("═");
}
}
foreach (var item in Enumerable.Range(0, Console.WindowHeight - 1))
{
if (item == 0 || item == Console.WindowHeight - 1) continue;
Console.SetCursorPosition(0, item);
Console.Write("║");
}
foreach (var item in Enumerable.Range(0, Console.WindowHeight - 1))
{
if (item == 0 || item == Console.WindowHeight - 1) continue;
Console.SetCursorPosition(Console.WindowWidth - 1, item);
Console.Write("║");
}
}
이 코드를 짜보았는데 너무 수동적이고 능동적이지 못한다고 생각했다..
또 하나 챗 gpt의 api를 사용해 답변을 콘솔창에 받아낼수있을까 싶었는데 잘 안된다.
static async Task Main()
{
// OpenAI API 키
string apiKey = "api키";
// OpenAI API 호출 URL
string apiUrl = "https://api.openai.com/v1/chat/completions";
// 모델 및 메시지 설정
string model = "gpt-3.5-turbo";
string userMessage = "Say this is a test!";
double temperature = 0.7;
// API 호출
string response = await GetOpenAIResponse(apiUrl, apiKey, model, userMessage, temperature);
// 콘솔에 응답 출력
Console.WriteLine(response);
}
static async Task<string> GetOpenAIResponse(string apiUrl, string apiKey, string model, string userMessage, double temperature)
{
using (HttpClient client = new HttpClient())
{
// API 요청 헤더 설정
client.DefaultRequestHeaders.Add("Content-Type", "application/json");
client.DefaultRequestHeaders.Add("Authorization", $"Bearer {apiKey}");
// API 요청 데이터 구성
var requestData = new
{
model,
messages = new[]
{
new { role = "user", content = userMessage }
},
temperature
};
// API 호출 및 응답 받기
HttpResponseMessage response = await client.PostAsync(apiUrl, new StringContent(JsonSerializer.Serialize(requestData), Encoding.UTF8, "application/json"));
// 응답 확인
if (response.IsSuccessStatusCode)
{
return await response.Content.ReadAsStringAsync();
}
else
{
return $"오류: OpenAI API 호출 실패 - {response.StatusCode}";
}
}
}
이 코드인데.. 챗 gpt를 사용해서 그런지 정확한지 모르곘다ㅣ..
작동이 안되니 아쉽다..
이것만 된다면 모든 npc와의 대화를 즐겁게 할 수있을텐데;
해결한다면 해결방법도 따로 올리겠다.
'스파르타코딩클럽 게임개발' 카테고리의 다른 글
오늘는 스파르타 코딩 클럽 unity 게임 개발 과정 13일차(팀과제 준비와 싱글톤을 사용하는 법) (1) | 2023.11.16 |
---|---|
오늘는 스파르타 코딩 클럽 unity 게임 개발 과정 12일차(4주차 과제 인터페이스와 Func과 Action) (0) | 2023.11.15 |
엊그제는 스파르타 코딩 클럽 unity 게임 개발 과정 10일차(개인과제 텍스트 RPG) (0) | 2023.11.13 |
오늘은 스파르타 코딩 클럽 unity 게임 개발 과정 9일차(스네이크 게임 발표 준비하기) (5) | 2023.11.10 |
오늘은 스파르타 코딩 클럽 unity 게임 개발 과정 8일차!(블랙잭 만들기) (2) | 2023.11.08 |