`
kxw953492793kxw
  • 浏览: 9204 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

飞行棋掷骰子的实现及判断范围的方法

 
阅读更多
要是玩家要有像真实的感觉有掷骰子的,所以要系统随机产生1-6之间的数,产生随机数的方法Random r = new Random(),还有进入每个关卡所产生的效果
/// <summary>
        /// 玩家掷筛子的方法
        /// </summary>
        /// <param name="play">A掷骰子传0过来  B掷筛子传1过来</param>
        static void Action(int play)
        {    //play中存当前玩家 姓名 坐标 是否暂停 这三个数组的下标 
            //1-play中存对方玩家 姓名 坐标 是否暂停 这三个数组的下标 
                string msg="";
                Console.WriteLine("{0}按任意键开始掷骰子.........", name[play]);
                Random r = new Random();//产生随机数的
                 ConsoleKeyInfo rec= Console.ReadKey(true);
                 if (rec.Key == ConsoleKey.Backspace&&rec.Modifiers==(ConsoleModifiers.Control|ConsoleModifiers.Shift))//设置快捷键
                 {
                     ConsoleKeyInfo cc = Console.ReadKey();
                     if (cc.Key == ConsoleKey.F1)
                     {
                         step = ReadInt(1,100);
                     }
                 }
                 else
                 {
                     step = r.Next(1, 7);//存放随机数
                 }
                 Console.WriteLine("{0}掷出了:{1}", name[play], step);
                Console.WriteLine("按任意键开始行动........");
                player[play] = player[play] + step;
                Check();
                if (player[play] == player[1 - play])//判断两个玩家是否相遇,如果相遇了,先到被踩回起点
                {
                    player[1 - play] = 0;//被踩回起点
                    msg = string.Format("玩家{0}踩到{1},玩家{1}回到起点", name[play], name[1 - play]);
                }
                else
                {
                    switch (Map[player[play]])
                    {
                        //没什么特别的效果
                        case 0: msg = ""; break;
                        //走到了幸运盘关卡
                        case 1:
                            Console.Clear();
                            DrawMap();
                            Console.WriteLine("玩家{0}走到了幸运盘,请选择运气?", name[play]);
                            Console.WriteLine("1---交换位置 2---轰炸对方");
                            int userSelect = ReadInt(1, 2);
                            if (userSelect == 1)//判断玩家的选择
                            {
                                int temp = player[play];
                                player[play] = player[1 - play];
                                player[1 - play] = temp;
                                msg = string.Format("玩家{0}和玩家{1}交换位置", name[play], name[1 - play]);
                            }
                            else
                            {
                                player[1 - play] = player[1 - play] - 6;
                                Check();
                                msg = string.Format("玩家{0}被玩家{1}轰炸了,后退6格", name[1 - play], name[play]);
                            }
                            ; break;
                        //走到地雷关卡
                        case 2:
                            player[play] = player[play] - 6;
                            Check();
                            msg = string.Format("悲剧玩家{0}踩到地雷,后退6格", name[play]);
                            ; break;
                        //走到暂停关卡
                        case 3:
                            Tstop[play] = true;
                            msg = string.Format("{0}遇到红灯,暂停一次", name[play]);

                            break;
                        //走到时光隧道关卡
                        case 4:
                            player[play] = player[play] + 10;
                            Check();
                            msg = string.Format("玩家{0}人品爆发,进入时空隧道,前进10格", name[play]);
                            ; break;
                    }               
                Console.Clear();
                DrawMap();
                if (msg != "")
                {
                    Console.WriteLine(msg);
                }
                Console.WriteLine("玩家{0}掷出了{1}", name[play], step);
                Console.WriteLine("*******玩家A和玩家B的位置");
                Console.WriteLine("玩家{0}的位置{1}", name[play], player[play] + 1);
                Console.WriteLine("玩家{0}的位置{1}", name[1 - play], player[1 - play] + 1);
            }           
        }
判断范围方法
  /// <summary>
        /// 检查玩家的坐标是否在范围内
        /// </summary>
        static void Check()
        {
            for (int i=0; i < name.Length; i++)
            {
                if (player[i] > 99)
                {
                    player[i] = 99;
                }
                if (player[i] < 0)
                {
                    player[i] = 0;
                }
            }
        }    
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics