今天学习了相应的视频后,仿造写了一个飞行棋。
首先,飞行棋要具有以下基本功能。
输入两个玩家的名字,代表玩家A和玩家B。A和B互相掷骰子,根据掷的点数进行行动,相应的行动在棋盘要实时体现出来,棋盘上有幸运轮盘,地雷,时空隧道,暂停等几个图标,当走到相应的图标时,执行不同的选择。
幸运轮盘:可以选择轰炸对方(退6格)或者交换位置
地雷:后退十格
暂停:三回合不能掷骰子
时空隧道:前进十格
当任意一方先到一百格的时候,即为获胜。
代码可以大概的分为两个部分,第一个部分是界面及用户和地图的绘制。
代码如下:
static int[] playerpost = { 0, 0 };//初始化玩家位置,playerpost【0】存玩家A的位置,【1】存B的位置 static int[] num = new int[100];//数组内的一百个元素代表100个棋盘的格 static void Main(string[] args) { UI.showUI();//调用绘制界面的方法 string[] name = new string[2];//建立一个存储玩家名字的数组 Console.WriteLine("请输入玩家A的名字");//请玩家输入名字 name[0] = Console.ReadLine(); while (name[0] == "") { Console.WriteLine("玩家A的名字不能为空?");//如果输入为空,就提示不能为空 name[0] = Console.ReadLine();//把玩家的输入赋给name【0】 } Console.WriteLine("请输入玩家B的名字");//让玩家B也输入名字 name[1] = Console.ReadLine(); while (name[1] == "" || name[1] == name[0]) { if (name[1] == "") { Console.WriteLine("玩家B的名字不能为空?");//如果输入为空或者和玩家A一样 那就提示重新输入 } else { Console.WriteLine("玩家A和玩家B的名字不能重复"); } name[1] = Console.ReadLine(); } Console.Clear(); UI.showUI(); Console.WriteLine("对战开始。。。。。"); Console.WriteLine("玩家{0}用A来表示", name[0]);//清屏,绘制界面并给用户游戏提示 Console.WriteLine("玩家{0}用B来表示", name[1]); Console.WriteLine("如果当前A和B的位置重合,那么用<>来表示"); huitu(); drowmap(); Console.WriteLine(); Console.WriteLine("游戏开始"); while (playerpost[0] < 99 && playerpost[1] < 99)//玩家A掷骰子 { //玩家A掷骰子 #region Console.WriteLine(); Console.WriteLine("{0}按任意键掷骰子", name[0]); Console.ReadKey(true); int b = Class1.shaizi(); Console.WriteLine("{0}掷出了{1}点", name[0], b); Console.WriteLine("按任意键行动"); Console.ReadKey(true); playerpost[0] += b; Console.WriteLine(); if (playerpost[0] == playerpost[1]) { Console.WriteLine("{0}踩到玩家{1}了,{2}退回起点", name[0], name[1], name[1]); playerpost[1] = 0; Console.Clear(); drowmap(); } else { switch (num[playerpost[0]]) { case 0: break; case 1: Console.Clear(); drowmap(); Console.WriteLine("你走到了幸运轮盘"); Console.WriteLine("请选择1---交换位置,2---轰炸对方"); string ss = Console.ReadLine(); if (ss == "1") { int f = playerpost[0]; playerpost[0] = playerpost[1]; playerpost[1] = f; } if (ss == "2") { playerpost[1] = playerpost[1] - 10; } checks(); //幸运轮盘 break; case 2: Console.Clear(); drowmap(); Console.WriteLine("你踩到了地雷后退6步"); playerpost[0] = playerpost[0] - 6; checks(); //地雷 break; case 3: //暂停 break; case 4: Console.Clear(); drowmap(); Console.WriteLine("你走到了时空隧道,真爽啊,进十个格"); playerpost[0] = playerpost[0] + 10; //时空隧道 break; } Console.Clear(); drowmap(); Console.WriteLine(); Console.WriteLine("{0}掷出了{1}", name[0], b); Console.WriteLine("{0}当前位置是{1},{2}当前位置是{3}", name[0], playerpost[0], name[1], playerpost[1]); #endregion //玩家B掷骰子 if (playerpost[0] >= 99) { break; } #region //判断显示A的点数并且判断A是不是踩到B Console.WriteLine(); Console.WriteLine("{0}按任意键掷骰子", name[1]); Console.ReadKey(true); int a = Class1.shaizi(); playerpost[1] += a; Console.WriteLine("{0}掷出了{1}点", name[1], a); Console.WriteLine(); drowmap(); if (playerpost[1] == playerpost[0]) { Console.WriteLine("{0}踩到玩家{1}了,{2}退回起点", name[1], name[0], name[0]); playerpost[0] = 0; } else { switch (num[playerpost[1]]) { case 0: break; case 1: Console.Clear(); drowmap(); Console.WriteLine("你走到了幸运轮盘"); Console.WriteLine("请选择1---交换位置,2---轰炸对方"); string ss = Console.ReadLine(); if (ss == "1") { int f = playerpost[1]; playerpost[1] = playerpost[0]; playerpost[0] = f; } if (ss == "2") { playerpost[0] = playerpost[0] - 10; } checks(); //幸运轮盘 break; case 2: Console.Clear(); drowmap(); Console.WriteLine("你踩到了地雷后退6步"); playerpost[1] = playerpost[1] - 6; checks(); //地雷 break; case 3: //暂停 break; case 4: Console.Clear(); drowmap(); Console.WriteLine("你走到了时空隧道,真爽啊,进十个格"); playerpost[1] = playerpost[1] + 10; //时空隧道 break; } Console.Clear(); drowmap(); Console.WriteLine("{0}掷出了{1}", name[1], b); Console.WriteLine("{0}当前位置是{1},{2}当前位置是{3}", name[0], playerpost[0], name[1], playerpost[1]); #endregion } } } Console.Clear(); drowmap(); if (playerpost[0] >= 99)//判断是否胜利 { Console.WriteLine("{0}胜利了,游戏结束", name[0]); } else { Console.WriteLine("{0}胜利了,游戏结束", name[1]); } Console.ReadKey(); }