掷硬币游戏(C# Console App)

看到聊天室有人在问,所以试写了一个看看当作练习,用目前自己能力所及的方式完成,如果有更好的建议也请各位多批评指教!

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();        }    }

输出结果示範


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章