分享一些飞行棋小项目的方法

代码是看视频之前自己写的,所以有很多地方和老师不太一样。
投色子的时候可以让循环体中就一个玩家,通过对变量i(循环次数)的操作完成对玩家的选择。
绘制地图这里,视频的方法比较简单,我这里采用的是函数(huatu)传参的方式绘制的。

以下就是通过循环次数来操作投色子的代码。

 do
            {
                Console.Clear();
                chu();
                huatu(Map, zb[0], zb[1]);

                if (rp[i % 2] != 0)
                {
                    rp[i % 2]--;//检测上次该玩家是否踩到暂停,使用i--的目的是方便调整暂停回合数
                    i++;
                    continue;
                }
                sz = c.Next(1, 7);
                zb[i % 2] = zb[i % 2] + sz;
                Console.WriteLine("玩家{0}掷出了{1},按任意键继续",i%2+1,sz);
                Console.ReadKey();
                
                //最优先检查该次投掷后该玩家是否获得胜利
                if (zb[i % 2] >= 99)
                {
                    i++;
                    break;
                }
                Console.Clear();
                chu();
                huatu(Map, zb[0], zb[1]);
                Console.WriteLine("按任意键继续");
                Console.ReadKey();
                
                //其次检查该玩家是否踩到另一位玩家
                if(zb[i%2]==zb[(i+1)%2])
                {
                    zb[(i + 1) % 2] = 0;
                    Console.Clear();
                    chu();
                    huatu(Map, zb[0], zb[1]);
                    Console.WriteLine("玩家{0}将玩家{1}踩回起点,按任意键继续",i%2+1,(i+1)%2+1);
                    Console.ReadKey();
                }

                //最后检查其他特殊事件
                //幸运轮盘
                if (Map[zb[i % 2]] == 1)
                {
                    Console.WriteLine("玩家{0}幸运轮盘,输入1交换位置,输入2轰炸对方",i%2+1);
                    do
                    {
                        try
                        {
                            select = Convert.ToInt32(Console.ReadLine());
                        }
                        catch{}
                        if(select != 1 && select != 2)
                            Console.WriteLine("输入不合法,请重新输入1或者2");
                    } while (select != 1 && select != 2);
                    if (select == 1)
                    {
                        zb[i % 2] = zb[i % 2] ^ zb[(i + 1) % 2];
                        zb[(i + 1) % 2] = zb[i % 2] ^ zb[(i + 1) % 2];
                        zb[i % 2] = zb[i % 2] ^ zb[(i + 1) % 2];
                    }
                    else
                    {
                        zb[(i + 1) % 2] -= 5;
                        if (zb[(i + 1) % 2] < 0)
                            zb[(i + 1) % 2] = 0;
                    }
                    select = 0;
                    Console.Clear();
                    chu();
                    huatu(Map, zb[0], zb[1]);
                    Console.WriteLine("按任意键继续");
                    Console.ReadKey();
                }

                //地雷
                if (Map[zb[i % 2]] == 2)
                {
                    zb[i % 2] -= 5;
                    Console.Clear();
                    chu();
                    huatu(Map, zb[0], zb[1]);
                    Console.WriteLine("玩家{0}踩到地雷,退5格", i % 2 + 1);
                    Console.WriteLine("按任意键继续");
                    Console.ReadKey();
                }

                //暂停
                if (Map[zb[i % 2]] == 3)
                {
                    Console.WriteLine("玩家{0}悲剧了,暂停一次",i%2+1);
                    rp[i % 2] = 1;//这里是数字可以用来设置暂停次数
                    Console.WriteLine("按任意键继续");
                    Console.ReadKey();
                }

                //时空隧道
                if (Map[zb[i % 2]] == 4)
                {
                    zb[i % 2] += 10;
                    Console.Clear();
                    chu();
                    huatu(Map, zb[0], zb[1]);
                    Console.WriteLine("玩家{0}happy了,进入时空隧道,前进10格",i%2+1);
                    Console.WriteLine("按任意键继续");
                    Console.ReadKey();
                }
                i++;
            } while (zb[0] < 99 && zb[1] < 99);
            //显示胜利玩家,注意有玩家获胜以后i会加一,所以(i+1)%2代表获胜玩家的下标,再+1代表获胜玩家
            Console.WriteLine("玩家{0}取得胜利",(i+1)%2+1);
            Console.ReadKey();

分享自:黑马程序员论坛!黑马程序员-最专业的北京.net培训

展开阅读全文

没有更多推荐了,返回首页