飞行棋


1、画游戏头 2、初始化地图(加载地图所需要的资源) 将整数数组中的数字编程控制台中显示的特殊字符串的这个过程 就是初始化地图 3、画地图

4、玩游戏

游戏规则: 如果玩家A踩到了玩家B  玩家B退6格  踩到了地雷 退6格 踩到了时空隧道 进10格 踩到了幸运轮盘 1交换位置  2 轰炸对方 使对方退6格 踩到了暂停  暂停一回合  踩到了方块  神马都不干

Map[50] if(map[40]==1) {  Console.WriteLine("◎"); }

//初始化地图   Map[6]=1             //我用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 };//时空隧道卐    for(int i=0;i

  1 using System;
  2 
  3 namespace 飞行棋项目
  4 {
  5     class Program
  6     {
  7         public static int[] Maps = new int[100];//静态字段数组模拟全局变量,在所有方法中都可直接使用
  8         public static int[] PlayerPos = new int[2];//声明一个数组标记玩家A与B的位置
  9         public static string[] PlayersName = new string[2];//声明一个数组存玩家姓名
 10         public static bool[] Flags = new bool[2];//用来判定踩到暂停
 11         static void Main(string[] args)
 12 
 13         {
 14             GameFirst();//游戏头
 15             #region 输入姓名
 16             Console.WriteLine("请输入玩家A的姓名");
 17             PlayersName[0] = Console.ReadLine();
 18             while (PlayersName[0] == "")
 19             {
 20                 Console.WriteLine("玩家A姓名为空,请重新输入");
 21                 PlayersName[0] = Console.ReadLine();
 22             }
 23             Console.WriteLine("请输入玩家B的姓名");
 24             PlayersName[1] = Console.ReadLine();
 25             while (PlayersName[1] == "" || PlayersName[1] == PlayersName[0])
 26             {
 27                 if (PlayersName[1] == "")
 28                 {
 29                     Console.WriteLine("玩家B姓名为空,请重新输入");
 30                     PlayersName[1] = Console.ReadLine();
 31                 }
 32                 else
 33                 {
 34                     Console.WriteLine("您输入的玩家B姓名与玩家A相同,请重新输入");
 35                     PlayersName[1] = Console.ReadLine();
 36                 }
 37             }
 38             #endregion
 39             Console.Clear();//玩家姓名输入完成后应该清屏
 40             GameFirst();
 41             Console.WriteLine("{0}的士兵用A表示", PlayersName[0]);
 42             Console.WriteLine("{0}的士兵用B表示", PlayersName[1]);     
 43             InitializeMap();
 44             DrawMap();
 45             //当两个玩家没有一个到达终点时,会不停的玩游戏
 46             while (PlayerPos[0] < 99 && PlayerPos[1] < 99)
 47             {
 48                 if (Flags[0] == false) 
 49                 {
 50                     PlayGame(0);
 51                 }
 52                 else
 53                 {
 54                     Flags[0] = false;
 55                 }
 56 
 57                 if (Flags[1] == false)
 58                 {
 59                     PlayGame(1);
 60                 }
 61                 else
 62                 {
 63                     Flags[1] = false;
 64                 }
 65             }
 66             if (PlayerPos[0] == 99)
 67             {
 68                 Console.WriteLine("玩家{0}获得胜利,玩家{1}可真是个笨蛋", PlayersName[0],PlayersName[1]);
 69             }
 70             else if (PlayerPos[1] == 99)
 71             {
 72                 Console.WriteLine("玩家{0}获得胜利,玩家{1}可真是个笨蛋", PlayersName[1],PlayersName[0]);
 73             }
 74             Console.ReadKey();
 75 
 76         }
 77         
 78         
 79         public static void GameFirst()//游戏头
 80         {
 81             Console.ForegroundColor = ConsoleColor.Red;
 82             Console.WriteLine("******************");
 83             Console.ForegroundColor = ConsoleColor.Yellow;
 84             Console.WriteLine("******************");
 85             Console.ForegroundColor = ConsoleColor.DarkGray;
 86             Console.WriteLine("******************");
 87             Console.ForegroundColor = ConsoleColor.Cyan;
 88             Console.WriteLine("******飞行棋******");
 89             Console.ForegroundColor = ConsoleColor.DarkYellow;
 90             Console.WriteLine("******************");
 91             Console.ForegroundColor = ConsoleColor.White;
 92             Console.WriteLine("******************");
 93             Console.ForegroundColor = ConsoleColor.DarkGreen;
 94             Console.WriteLine("******************");
 95         }
 96        
 97 
 98        
 99        
100         public static void InitializeMap()//初始化地图
101         {
102             int[] Roulette = { 6, 23, 40, 55, 69, 83 };//轮盘
103             for (int i = 0; i < Roulette.Length; i++)
104             {
105                 Maps[Roulette[i]] = 1;
106             }
107             int[] Mine = { 5, 13, 17, 33, 38, 50, 64, 80, 84 };//地雷
108             for (int i = 0; i < Mine.Length; i++)
109             {
110                 Maps[Mine[i]] = 2;
111             }
112             int[] Pause = { 9, 27, 60, 93 };//暂停
113             for (int i = 0; i < Pause.Length; i++)
114             {
115                 Maps[Pause[i]] = 3;
116             }
117             int[] TimeTunnel = { 20, 25, 45, 63, 72, 88, 90 };//时空隧道
118             for (int i = 0; i < TimeTunnel.Length; i++)
119             {
120                 Maps[TimeTunnel[i]] = 4;
121             }
122         }
123         
124 
125         public static void DrawMap()//画地图
126         {
127             Console.WriteLine("图例:◎ 轮盘;☆ 地雷;△ 暂停;※ 时空隧道");
128             for (int i = 0; i < 30; i++)//第一横行
129             {
130                 Console.Write( DrawStringMap(i) );
131             }
132             Console.WriteLine();//画完第一横行后应该换行
133 
134             for (int i = 30; i < 35; i++)//第一竖行
135             {
136                 for (int j = 0; j < 29; j++)
137                 {
138                     Console.Write("  ");
139                 }
140                 Console.WriteLine(DrawStringMap(i)); 
141             }
142 
143             for (int i = 64; i >=35; i--)//第二横行
144             {
145                 Console.Write(DrawStringMap(i));
146             }
147             Console.WriteLine();
148 
149             for (int i =65; i < 70; i++)//第二竖行
150             {
151                 Console.WriteLine(DrawStringMap(i));
152             }
153 
154             for (int i= 70; i < 100; i++)//最后一行
155             {
156                 Console.Write(DrawStringMap(i));
157             }
158 
159             Console.WriteLine();//画完最后一行后应该换行
160 
161         }
162         public static string DrawStringMap(int i)//画地图方法
163         {
164             string str = "  ";
165             if (PlayerPos[0] == PlayerPos[1] && PlayerPos[0] == i)
166             {
167                 str="<>";
168             }
169             else if (PlayerPos[0] == i)
170             {
171                 str="A";
172             }
173             else if (PlayerPos[1] == i)
174             {
175                str="B";
176             }
177             else
178             {
179                 switch (Maps[i])
180                 {
181                     case 0:
182                         Console.ForegroundColor = ConsoleColor.White;
183                         str = "";
184                         break;
185                     case 1:
186                         Console.ForegroundColor = ConsoleColor.Yellow;
187                         str = "";
188                         break;
189                     case 2:
190                         Console.ForegroundColor = ConsoleColor.Blue;
191                         str = "";
192                         break;
193                     case 3:
194                         Console.ForegroundColor = ConsoleColor.Cyan;
195                         str = "";
196                         break;
197                     case 4:
198                         Console.ForegroundColor = ConsoleColor.DarkMagenta;
199                         str="";
200                         break;
201                 }
202             }
203             return str;
204         }
205 
206         public static void PlayGame(int Playrenumber)//玩游戏过程 传入Playrenumber为其中一位玩家,1-Playrenumber即为另一位
207         {
208             Random r = new Random();
209             int rNumber = r.Next(1, 7);
210             Console.WriteLine("玩家{0}按任意键开始掷骰子", PlayersName[Playrenumber]);
211             Console.ReadKey(true);
212             Console.WriteLine("玩家{0}掷出了{1}", PlayersName[Playrenumber],rNumber);
213             PlayerPos[Playrenumber] += rNumber;
214             ChangePos();
215             Console.ReadKey(true);
216             Console.WriteLine("{0}按任意键开始行动", PlayersName[Playrenumber]);
217             Console.ReadKey(true);
218             Console.WriteLine("{0}行动完了", PlayersName[Playrenumber]);
219             //玩家A有可能踩到玩家B,轮盘,地雷,暂停,时空隧道
220             if (PlayerPos[0] == PlayerPos[1])
221             {
222                 Console.WriteLine("玩家{0}踩到了玩家{1},玩家{2}退6格", PlayersName[Playrenumber], PlayersName[1- Playrenumber], PlayersName[1 - Playrenumber]);
223                 PlayerPos[1 - Playrenumber] -= 6;
224                 ChangePos();
225                 Console.ReadKey(true);
226             }
227             else
228             {
229                 switch (Maps[PlayerPos[Playrenumber]])
230                 {
231                     case 0:
232                         Console.WriteLine("玩家{0}踩到了方块,安全", PlayersName[Playrenumber]);
233                         Console.ReadKey(true);
234                         break;
235                     case 1:
236                         Console.WriteLine("玩家{0}踩到了幸运轮盘,请选择1--交换位置,2--轰炸对方", PlayersName[Playrenumber]);
237                         string input = Console.ReadLine();
238                         while (true)
239                         {
240                             if (input == "1")
241                             {
242                                 Console.WriteLine("玩家{0}选择与玩家{1}交换位置", PlayersName[Playrenumber], PlayersName[1 - Playrenumber]);
243                                 int temp = PlayerPos[Playrenumber];
244                                 PlayerPos[Playrenumber] = PlayerPos[1 - Playrenumber];
245                                 PlayerPos[1 - Playrenumber] = temp;
246                                 ChangePos();
247                                 Console.WriteLine("交换完成,游戏继续");
248                                 Console.ReadKey(true);
249                                 break;
250                             }
251                             else if (input == "2")
252                             {
253                                 Console.WriteLine("玩家{0}选择轰炸玩家{1},玩家{2}往后退6格", PlayersName[Playrenumber], PlayersName[1 - Playrenumber], PlayersName[1 - Playrenumber]);
254                                 PlayerPos[1 - Playrenumber] -= 6;
255                                 ChangePos();
256 
257                                 Console.ReadKey(true);
258                                 break;
259                             }
260                             else
261                             {
262                                 Console.WriteLine("只能输入1或2,1--交换位置,2--轰炸对方,请重新输入");
263                                 input = Console.ReadLine();
264                             }
265                         }
266                         break;
267                     case 2:
268                         Console.WriteLine("玩家{0}踩到了地雷,往后退10格", PlayersName[Playrenumber]);
269                         PlayerPos[Playrenumber] -= 10;
270                         ChangePos();
271                         Console.ReadKey(true);
272                         break;
273                     case 3:
274                         Console.WriteLine("玩家{0}踩到了暂停,暂停一回合", PlayersName[Playrenumber]);
275                         Console.ReadKey(true);
276                         Flags[Playrenumber] = true;
277                         break;
278                     case 4:
279                         Console.WriteLine("玩家{0}踩到了时空隧道,往前进10格", PlayersName[Playrenumber]);
280                         PlayerPos[Playrenumber] += 10;
281                         ChangePos();
282                         Console.ReadKey(true);
283                         break;
284 
285                 }
286             }
287             Console.Clear();
288             DrawMap();
289 
290         }
291 
292         public static void ChangePos()//在玩家位置发生变动时,限制必须在地图内
293         {
294             if (PlayerPos[0] < 0)
295             {
296                 PlayerPos[0] = 0;
297             }
298             if (PlayerPos[0] > 99)
299             {
300                 PlayerPos[0] = 99;
301             }
302             if (PlayerPos[1] < 0)
303             {
304                 PlayerPos[1] = 0;
305             }
306             if (PlayerPos[1] > 99)
307             {
308                 PlayerPos[1] = 99;
309             }
310         }
311 
312     }
313 }