随机数的小游戏(上)

这篇博客介绍了一个使用C#编写的随机数纸牌小游戏,包括后台电脑自动游戏函数和玩家抽牌操作。游戏规则是抽取的两张牌点数之和不超过15时继续抽取,直到超过15为止。玩家可以根据自己的判断决定是否继续抽牌,目标是达到21点或接近21点而不超过。
摘要由CSDN通过智能技术生成

先创建几个变量来接收牌组中的牌数、玩家胜利的次数、电脑胜利的次数和总共玩的总局数

private static int index = 53;         //   记录当前牌组中的牌数

private static int gamePlayer = 0;      //    玩家胜利的次数

private static int compuTers = 0;     //     电脑胜利的次数

private static int race = 0;           //      总共玩的总局数

创建完了变量之后,就可以写后台电脑自动游戏的函数

/// <summary>

            /// 后台电脑自动游戏的函数

            /// </summary>

            /// <param name="nums"></param>

            /// <returns></returns>

            public static int computer(ArrayList nums)  

            {

                //   随机(随机数类)抽取两张牌并从牌组中去掉这张牌

                int sum = 0;

               

                Random ran = new Random();//实例化ran

                int J = ran.Next(index--);//随机获取数组中的一个数值

               

                int first = (int)nums[J];

                nums.RemoveAt(J);//删除(记录当前牌组中的牌数"J")

               

                int R = ran.Next(index--);

                int second = (int)nums[R];

                nums.RemoveAt(R);//删除(记录当前牌组中的牌数"R")

               

                sum += first + second;

                while (sum <= 15)     //   当总和>15时自动退出继续抽牌的操作

                {

                    int k = ran.Next(index--);

                    sum += (int)(nums[k]);

                    nums.RemoveAt(k);

                }

                return sum;           //   返回电脑最终抽中的牌的总点数

         }

切记随机抽到的数一定要从nums变量上删除对应的数,随机抽到的两个数大于15就停止抽取,否则继续抽;

继续写玩家的抽牌操作

/// <summary>

            /// 玩家抽牌操作

            /// </summary>

            /// <param name="name">玩家名称</param>

            /// <param name="nums"></param>

            /// <returns></returns>

            public static int Play(string name, ArrayList nums)

            {

                int sum = 0;

                Random ran = new Random();

                int J = ran.Next(index--);//获取数组中的索引

                int first = (int)nums[J];//根据索引查出对应的数据

                nums.RemoveAt(J);//删除对应的索引和索引值

                int R = ran.Next(index--);

                int second = (int)nums[R];

                nums.RemoveAt(R);

                sum += first + second;//数值相加

                Console.Write($"{name} : 第一张牌:{first}\n第二张牌:{second}\n");

                if (sum > 21)

                {

                    Console.WriteLine($"{name}输了!");

                    return 1;

                }

                else

                {

                    Console.WriteLine($"当前总和为:{sum}");

                    Console.WriteLine($"{name}需要再抽一张牌吗?(需要请输入:1/不需要请输入:2)");

                    while (Console.ReadLine() == "1")

                    {

                      int k = ran.Next(index--);

                      sum += (int)nums[k];

                      Console.WriteLine($"{name}抽到的卡牌是:{nums[k]},当前总和为:{sum}");

                      nums.Remove(k);

                      Console.WriteLine($"{name}需要再抽一张牌吗?(需要请输入:1/不需要请输入:2)");

               //如果输入"1"随即回到while上继续随机获取一个0到13的数字,如果输入"2"就继续执行下面操作

                    }

                    if (sum == 21)

                    {

                        Console.WriteLine($"{name}赢了!");

                        return 0;

                    }

                    else if (sum > 21)

                    {

                        Console.WriteLine($"{name}你输了!");

                        return 1;

                    }

                }

                return sum;//结束后跳转到操作面板的do语句

            }

玩家抽牌跟电脑抽牌大同小异。

游戏开始玩家和电脑一样随机抽两张牌,不过不同的是玩家的点数自己决定,抽完一开始的两张牌你觉得点数不满意可以输入“1”继续抽。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

暴走☆苍穹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值