看到聊天室有人在问,所以试写了一个看看当作练习,用目前自己能力所及的方式完成,如果有更好的建议也请各位多批评指教!
Person类别(玩家)
建立玩家时需先提供姓名与金钱
internal class Person { public Person(string name,int money) { Name = name; Money = money; } public string Name { get; set; } public int Money { get; set; } public string Guess { get; set; } public int WinCount { get; set; } public int LoseCount { get; set; } }
Game类别(含游戏设定、玩家)
Bet: 赌注金额
RoundCount: 猜测进行轮数
internal class Game { public int Bet { get; set; } public int RoundCount { get; set; } public Person Player1 { get; set; } public Person Player2 { get; set; } }
ThrowCoinService类别(包含 掷硬币 与 游戏开始方法)
使用random物件随机产生数字1 or 2,分别代表正与反
internal static class ThrowCoinService { public static string GetThrowCoinResult() { var result = string.Empty; Random random = new Random(DateTime.Now.Millisecond); var num = random.Next(1, 3); if (num == 1) result = "正"; else if (num == 2) result = "反"; else result = "Error"; return result; } public static void GameStart(Game game) { //当任一方钱归零时才结束 while (!(game.Player1.Money == 0 || game.Player2.Money == 0)) { //执行丢硬币 var throwResult = ThrowCoinService.GetThrowCoinResult(); //判断与纪录 if (throwResult == "Error") { Console.WriteLine("Error"); break; } if (throwResult == game.Player1.Guess) { game.Player1.Money += game.Bet; game.Player1.WinCount++; } else { game.Player1.Money -= game.Bet; game.Player1.LoseCount++; } if (throwResult == game.Player2.Guess) { game.Player2.Money += game.Bet; game.Player2.WinCount++; } else { game.Player2.Money -= game.Bet; game.Player2.LoseCount++; } game.RoundCount++; //输出结果 LogService.WriteLog(game, throwResult); } } }
LogService类别(输出每轮游戏结果)
internal static class LogService { public static void WriteLog(Game game,string throwResult) { Console.WriteLine($"第{game.RoundCount}次比赛,投掷结果为\"{throwResult}\":"); Console.WriteLine($"{game.Player1.Name}--胜:{game.Player1.WinCount} 败:{game.Player1.LoseCount} 剩余金额:{game.Player1.Money}"); Console.WriteLine($"{game.Player2.Name}--胜:{game.Player2.WinCount} 败:{game.Player2.LoseCount} 剩余金额:{game.Player2.Money}"); Console.WriteLine($"----------------------------------"); } }
主程式
这边将猜正反简单化,让2人固定分别猜正与反。
金额10元就好,比较快结束。
internal class Program { static void Main(string[] args) { //玩家 Person A = new Person("Amy", 10); Person B = new Person("Bob", 10); //双方选择正or反 A.Guess = "正"; B.Guess = "反"; Game game = new Game { //赌注金额 Bet = 1, //游戏次数 RoundCount = 0, Player1 = A, Player2 = B }; ThrowCoinService.GameStart(game); Console.ReadLine(); } }