C#简单粗暴的飞行棋

        首先先来附图一张,程序的实现图和程序的大致流程图。飞行棋是基础C#以来,第一个稍微大一点的程序,刚刚接触可能会感觉很麻烦,学习起来很吃力,但是飞行棋程序整体来说就是结合了C#视频前几章的基础,将前面的Console.Writeline;console.write;还有方法、数组等一些基础性的知识,将所有基础性的知识整合打包,最后形成了所谓的飞行棋程序。

       飞行棋所涉及的知识点:

注释,变量声明,“++(--)”,关系运算符,If结构,switch……case结构,while循环,for循环,break,countion,         try……catch ,z最重要的就是方法。

方法名解析
方法名参数返回值功能
showui()显示游戏头
initMap()初始化地图
DrawMap()画地图
RowTouZi()int playpos掷骰子
CheckPos()判断是否出界
DrawMapLeftToRightint left , int right画地图一三行
DrawStringMapint posstring画标识和玩家
Readintstring  msg int min ,int maxint踩到轮盘选择

     接下来展示几个稍微简单的代码:

1.初始化地图

 public static void InitMap()//初化地图
        {
            //初始化地图
            //用0表示普通,1表示祥云轮盘,2代表地雷3代表暂停,4代表时空隧道
            int[] luckyturn = { 6, 25,30, 48, 56, 65,72,85, 91 };//幸运轮盘
            int[] landMine = { 5, 17, 34, 46, 62,70, 81};//地雷
            int[] pause = { 9, 27,37,50, 56, 72 };//暂停
            int[] timeTunnel = { 20,40,47, 58, 67,76, 82, 93 };//时空隧道

            for (int i = 0; i < luckyturn.Length; i++)// 
            {
                // int temp = luckyturn[i];
                //map[temp] = 1;
                map[luckyturn[i]] = 1;//luckyturn索引的下标志都变为1;
            }
            for (int i = 0; i < pause.Length; i++)// 
            {
                map[pause[i]] = 3;//luckyturn索引的下标志都变为3;
            }
            for (int i = 0; i < landMine.Length; i++)// 
            {
                map[landMine[i]] = 2;//luckyturn索引的下标志都变为2;
            }
            for (int i = 0; i < timeTunnel.Length; i++)// 
            {
                map[timeTunnel[i]] = 4;//luckyturn索引的下标志都变为4;
            }
        }

2.掷骰子

  public static void RowTouZi(int playerpos)
        {
            Random r = new Random();
            int num = r.Next(1, 7);

            //while (PlayerPos[0] <= 99 && PlayerPos[1] <= 99)
            //{
            string msg = "";
            Console.WriteLine("{0}按任意键开始掷骰子", playername[playerpos]);


            Console.WriteLine("{0}掷出了{1}", playername[playerpos], 4);
            Console.WriteLine("{0}按任意键开始行动……", playername[playerpos]);
            Console.ReadKey(true);//使字母不显示(readkey中默认的为False)

            PlayerPos[playerpos] += num;
            checkpos();
            if (PlayerPos[playerpos] == PlayerPos[1 - playerpos])
            {
                msg = string.Format("玩家{0}踩到了玩家{1},玩家{2}退6格", playername[playerpos], playername[1 - playerpos], playername[1 - playerpos]);
                PlayerPos[1 - playerpos] -= 6;
               checkpos();

            }

            else
                    {
                switch (map[PlayerPos[0]])
                {
                    case 0: //Console.WriteLine("行动完了"); break;
                        msg = "行动完了"; break;
                    case 1: //Console.WriteLine("走到了幸运轮盘"); break;
                        msg = string.Format("{0}走到了幸运轮盘,请选择 1----交换位置,2----轰炸对方", playername[playerpos]);
                        int number = ReadInt(msg, 1, 2);
                        if (number == 1)
                        {
                            int temp = 0;
                            temp = PlayerPos[playerpos];
                            PlayerPos[playerpos] = PlayerPos[1 - playerpos];//如果playerpos代表玩家1 ,则一减变为玩家0,反之一样
                            PlayerPos[1 - playerpos] = temp;
                            msg = string.Format("玩家{0}选择了与玩家{1}交换位置", playername[playerpos], playername[1 - playerpos]);
                        }
                        else
                        {
                            PlayerPos[1 - playerpos] = 0;
                            msg = string.Format("玩家{0}选择轰炸玩家{1}", playername[playerpos], playername[1 - playerpos]);

                        }
                        break;
                    case 2: //Console.WriteLine("猜到地雷了"); break;
                            //踩到地雷了
                        msg = "恭喜你,能踩到地雷,百年不遇,退6格";
                        PlayerPos[playerpos] -= 6;
                        checkpos();

                        break;
                    case 3: //Console.WriteLine("猜到暂停了"); break;
                        msg = "踩到暂停了";
                        flag[playerpos] = true;
                        break;
                    case 4: //Console.WriteLine("踩到时空隧道了"); break;
                        msg = "恭喜你,这个猥琐家伙竟然穿越了10步";
                        PlayerPos[playerpos] += 10;
                        checkpos();
                        break;
                }
            }
            Console.Clear();
            Console.WriteLine("对战开始……");
            Console.WriteLine("{0}的士兵用A表示", playername[0]);
            Console.WriteLine("{0}的士兵用B表示", playername[1]);
            DrawMap();
            Console.WriteLine("行动完毕……");
        
                

            //}
            Console.ReadKey();
        }

 

评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值