Today I Learned :
- 4주차 과제 마무리, 5주차 수강 중
- 팀 과제 협업
- 팀 과제 깃세팅
- 코드 공유 및 참고사항 문서 작성(Wiki) https://github.com/rtanunity3/textdungeon/wiki
콘솔 텍스트게임 구조
개략적인 시퀀스다이어그램
4주차 턴제RPG
사망할때까지 루프
namespace turntextrpg
{
public class Program
{
static void Main(string[] args)
{
Warrior warrior = new Warrior("워리어", 100, 20);
Monster[] monster = { new Goblin("고블린", 30, 3), new Dragon("드래곤", 100, 10) };
List<IItem> rewards = new List<IItem>() {
new HealthPotion(),
new StrengthPotion(),
};
Random random = new Random();
while (!warrior.IsDead)
{
int rand = random.Next(0, monster.Length);
monster[rand].Init();
Stage stage = new Stage(warrior, monster[rand], rewards);
stage.Start();
}
}
}
class Stage
{
private Warrior player;
private Monster monster;
private List<IItem> rewardItems;
public Stage(Warrior player, Monster monster, List<IItem> rewardItems)
{
this.player = player;
this.monster = monster;
this.rewardItems = rewardItems;
}
public void Start()
{
Console.WriteLine($"스테이지 시작! {player.Name} vs {monster.Name}");
Console.WriteLine($"플레이어 정보: 체력({player.Health})");
Console.WriteLine($"몬스터 정보: 이름({monster.Name}), 체력({monster.Health}), 공격력({monster.Attack})");
Console.WriteLine("----------------------------------------------------");
while (!player.IsDead && !monster.IsDead)
{
Console.WriteLine($"현재상태: {player.Name} - 체력: {player.Health}, 공격력({player.Attack})");
Console.WriteLine($"몬스터 :{monster.Name} - 체력: {monster.Health}, 공격력({monster.Attack})");
// 플레이어의 턴
Console.WriteLine($"{player.Name}의 턴");
int damage = player.Attack;
Console.WriteLine($"{player.Name}이(가) {monster.Name}에게 {damage}의 피해를 입혔습니다.");
monster.TakeDamage(damage);
Thread.Sleep(1000);
if (monster.IsDead) {
break;
}
// 몬스터의 턴
Console.WriteLine($"{monster.Name}의 턴");
damage = monster.Attack;
Console.WriteLine($"{monster.Name}이(가) {player.Name}에게 {damage}의 피해를 입혔습니다.");
player.TakeDamage(damage);
Thread.Sleep(1000);
}
// 스테이지 종료
if (player.IsDead)
{
Console.WriteLine($"{player.Name}이(가) 전투에서 패배했습니다.");
}
else
{
Console.WriteLine($"{monster.Name}이(가) 처치되었습니다. 보상을 선택하세요.");
// 보상 아이템 사용
Console.WriteLine("보상 아이템 중 하나를 선택하세요:");
for (int i = 0; i < rewardItems.Count; i++)
{
Console.WriteLine($"{i + 1}. {rewardItems[i].Name}");
}
int choice;
while (!int.TryParse(Console.ReadLine(), out choice) || choice < 1 || choice > rewardItems.Count)
{
Console.WriteLine("올바른 번호를 선택하세요.");
}
rewardItems[choice - 1].Use(player);
}
}
}
}
'TIL' 카테고리의 다른 글
20240111 TIL (1) | 2024.01.11 |
---|---|
20240110 TIL (0) | 2024.01.10 |
20240108 TIL (1) | 2024.01.08 |
20240105 TIL (0) | 2024.01.05 |
20240104 TIL (0) | 2024.01.04 |