public RaceFlag JudgeRace() { RaceFlag flag = RaceFlag.None; float distance = player.GetDistance(); int durability = player.car.GetDurability(); Console.WriteLine($"플레이어 현재 거리 {distance}m, 남은 내구도 {durability}"); if (distance > 1000f) { Console.WriteLine("플레이어가 승리했습니다!"); flag = RaceFlag.DistanceWin; } else if (durability < 0) { Console.WriteLine("플레이어가 패배했습니다!"); flag = RaceFlag.DurabiltyLose; } distance = ai.GetDistance(); durability = ai.car.GetDurability(); Console.WriteLine($"AI 현재 거리 {distance}m, 남은 내구도 {durability}"); if (distance > 1000f) { Console.WriteLine("AI가 승리했습니다!"); flag = RaceFlag.DistanceLose; } else if (durability < 0) { Console.WriteLine("AI가 패배했습니다!"); flag = RaceFlag.DurabiltyWin; } return(flag); }
public void EndRace(RaceFlag flag) { Console.WriteLine(); Console.WriteLine("경기 종료"); float distance = player.GetDistance(); int durability = player.car.GetDurability(); if (flag == RaceFlag.DistanceWin) { distance = distance - ai.GetDistance(); Console.WriteLine($"플레이어가 {distance}m 만큼 앞섬"); } else if (flag == RaceFlag.DurabiltyWin) { durability = durability - ai.car.GetDurability(); Console.WriteLine($"플레이어가 {durability} 내구도 앞섬"); } else if (flag == RaceFlag.DistanceLose) { distance = ai.GetDistance() - distance; Console.WriteLine($"AI가 {distance}m 만큼 앞섬"); } else if (flag == RaceFlag.DurabiltyLose) { durability = ai.car.GetDurability() - durability; Console.WriteLine($"AI가 {durability} 내구도 앞섬"); } Console.WriteLine($"플레이어 충돌 수 : {player.GetCrashCnt()}"); Console.WriteLine($"AI 충돌 수 : {ai.GetCrashCnt()}"); }
public void StartRace() { Console.Clear(); Console.WriteLine("경기 시작!"); while (true) { Console.ReadLine(); // 누를 때마다 진행 Random rand = new Random(); int mistakeRate = rand.Next(0, 100); int damage = rand.Next(1, 5); float distance = 0; if (mistakeRate <= 25) // 플레이어턴 { Console.Write("!! 플레이어가 "); player.Mistake(damage); } else { distance = player.GetSpeed() * 0.2f; player.SetDistance(distance); } mistakeRate = rand.Next(0, 100); damage = rand.Next(1, 5); if (mistakeRate <= 33) // 인공지능턴 { Console.Write("!! AI가 "); ai.Mistake(damage); } else { distance = ai.GetSpeed() * 0.2f; ai.SetDistance(distance); } RaceFlag flag = JudgeRace(); if (flag == RaceFlag.DistanceWin || flag == RaceFlag.DistanceLose || flag == RaceFlag.DurabiltyWin || flag == RaceFlag.DurabiltyLose) { EndRace(flag); Console.ReadLine(); break; } } }