随机数的小游戏(上)

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

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

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

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

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

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

///

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

            ///

            /// name="nums">

            ///

            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就停止抽取,否则继续抽;

继续写玩家的抽牌操作

///

            /// 玩家抽牌操作

            ///

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

            /// name="nums">

            ///

            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”继续抽。

你可能感兴趣的:(c#)