新的资料看了几个文件夹之后,越发的有一种从易到难难度逐渐加深的感觉,不过飞行棋之后,挺有一种大门突然打开的感觉,对编写程序的方法也好像有了一点点的理解。就想尝试着把那个小程序编出来。当然不参考源代码是不可能的。那我现在就写一下飞行棋这个游戏编写的思路吧。
游戏的规则是:随机的投骰子,投到几就走几步,如果走到幸运轮盘,用户可以选择方案,如果踩到地雷,用户回退6个格,如果走到暂停就暂停让对方走,如果走到时空隧道,就前进10个格。如此如果谁先走到最后一个格,便是胜利者。
按照老师讲的来思考,首先应该了解游戏规则,知道游戏怎么玩的才能去设计一个程序实现它,因此编程的第一步就是熟悉功能。首先应该显示游戏头,然后初始化地图,把地图画出来。
public static void ShowUI() { Console.WriteLine("***************************"); Console.WriteLine("* *"); Console.WriteLine("* 终极骑士飞行棋 版本:10.28 *"); Console.WriteLine("* *"); Console.WriteLine("******************************"); }
public static void InitMap() { //初始化地图 //我用0表示普通,显示给用户就是 □ //....1...幸运轮盘,显示组用户就 ◎ //....2...地雷,显示给用户就是 ☆ //....3...暂停,显示给用户就是 ▲ //....4...时空隧道,显示组用户就 卐 int[] luckyturn = { 6, 23, 40, 55, 69, 83 };//幸运轮盘◎ int[] landMine = { 5, 13, 17, 33, 38, 50, 64, 80, 94 };//地雷☆ int[] pause = { 9, 27, 60, 93 };//暂停▲ int[] timeTunnel = { 20, 25, 45, 63, 72, 88, 90 };//时空隧道卐 //把数组中下标为6, 23, 40, 55, 69, 83的地方的值改为1 for (int i = 0; i < luckyturn.Length; i++) { //int temp = luckyturn[i]; Map[luckyturn[i]] = 1; } for (int i = 0; i < landMine.Length; i++) { Map[landMine[i]] = 2; } for (int i = 0; i < pause.Length; i++) { Map[pause[i]] = 3; } for (int i = 0; i < timeTunnel.Length; i++) { Map[timeTunnel[i]] = 4; }
这也是这个游戏的难点,第一行的图案画出来,紧接着是第一竖行,然后是第二横行,然后是第二竖行,第三横行。我们就先来看一下第一行的逻辑吧;
for (int i = 0; i <= 29; i++) { if (PlayerPos[0] == PlayerPos[1] && PlayerPos[0] == i) { Console.Write("<>"); ; } else if (PlayerPos[0] == i) { Console.Write("A"); } else if (PlayerPos[1] == i) { Console.Write("B"); } else { switch (Map[i]) { case 0: Console.Write("□"); break; case 1: Console.Write("◎"); break; case 2: Console.Write("☆"); break; case 3: Console.Write("▲"); break; case 4: Console.Write("卐"); break; }//end switch }//end else
这是飞行棋的难点之一。再一个就是飞行棋实现的逻辑了。边看视频边理解,一定会有更大的收获。最后把要做的功能都做出来然后加上自己的理解,一定会做出一个完美的飞行棋!