wsxiao

导航

007 飞行棋小项目

2016-01-16

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

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

主要引用用的方法

 1 Map[50]
 2 if(map[40]==1)
 3 {
 4     Console.WriteLine("");
 5 }
 6 
 7 
 8 //初始化地图   Map[6]=1
 9             //我用0表示普通,显示给用户就是 □
10             //....1...幸运轮盘,显示组用户就◎ 
11             //....2...地雷,显示给用户就是 ☆
12             //....3...暂停,显示给用户就是 ▲
13             //....4...时空隧道,显示组用户就 卐
14             int[] luckyturn = { 6, 23, 40, 55, 69, 83 };//幸运轮盘◎
15             int[] landMine = { 5, 13, 17, 33, 38, 50, 64, 80, 94 };//地雷☆
16             int[] pause = { 9, 27, 60, 93 };//暂停▲
17             int[] timeTunnel = { 20, 25, 45, 63, 72, 88, 90 };//时空隧道卐
18             for(int i=0;i<luckyturn.Length;i++)
19             {
20                 int n=luckyturn[i];
21                 Map[n]=1;
22             }
23             for(int i=0;i<landMine.Length;i++)
24             {
25                 int n=landMine[i];
26                 Map[n]=1;
27             }
28 
29 
30   public static void Win()
31         {
32             Console.ForegroundColor = ConsoleColor.Red;
33             Console.WriteLine("");
34             Console.WriteLine("                    ■                  ◆               ■        ■");
35             Console.WriteLine("      ■■■■  ■  ■                ◆■         ■    ■        ■");
36             Console.WriteLine("      ■    ■  ■  ■              ◆  ■         ■    ■        ■");
37             Console.WriteLine("      ■    ■ ■■■■■■       ■■■■■■■   ■    ■        ■");
38             Console.WriteLine("      ■■■■ ■   ■                ●■●       ■    ■        ■");
39             Console.WriteLine("      ■    ■      ■               ● ■ ●      ■    ■        ■");
40             Console.WriteLine("      ■    ■ ■■■■■■         ●  ■  ●     ■    ■        ■");
41             Console.WriteLine("      ■■■■      ■             ●   ■   ■    ■    ■        ■");
42             Console.WriteLine("      ■    ■      ■            ■    ■         ■    ■        ■");
43             Console.WriteLine("      ■    ■      ■                  ■               ■        ■ ");
44             Console.WriteLine("     ■     ■      ■                  ■           ●  ■          ");
45             Console.WriteLine("    ■    ■■ ■■■■■■             ■              ●         ●");
46             Console.ResetColor();
47         }

项目完整源代码:

  1 using System;
  2 
  3 
  4 namespace 飞行棋游戏
  5 {
  6     class Program
  7     {
  8         //我们用静态字段来模拟全局变量
  9         static int[] Maps = new int[100];
 10         //声明一个静态数组用来存储玩家A跟玩家B的坐标
 11         static int[] PlayerPos = new int[2];
 12         //存储两个玩家的姓名
 13         static string[] PlayerNames = new string[2];
 14         //两个玩家的标记
 15         static bool[] Flags = new bool[2];//Flags[0]默认是false  Flags[1]默认也是false
 16         static void Main(string[] args)
 17         {
 18             GameShow();
 19             #region 输入玩家姓名
 20             Console.WriteLine("请输入玩家A的姓名");
 21             PlayerNames[0] = Console.ReadLine();
 22             while (PlayerNames[0] == "")
 23             {
 24                 Console.WriteLine("玩家A的姓名不能为空,请重新输入");
 25                 PlayerNames[0] = Console.ReadLine();
 26             }
 27             Console.WriteLine("请输入玩家B的姓名");
 28             PlayerNames[1] = Console.ReadLine();
 29             while (PlayerNames[1]==""||PlayerNames[1]==PlayerNames[0])
 30             {
 31                 if (PlayerNames[1] == "")
 32                 {
 33                     Console.WriteLine("玩家B的姓名不能为空,请重新输入");
 34                     PlayerNames[1] = Console.ReadLine();
 35                 }
 36                 else
 37                 {
 38                     Console.WriteLine("玩家B的姓名不能玩家A的形同,请重新输入");
 39                     PlayerNames[1] = Console.ReadLine();
 40                 }
 41             }
 42             #endregion
 43             //玩家姓名输入OK之后 我们首先应该清屏 
 44             Console.Clear();//清屏
 45             GameShow();
 46             Console.WriteLine("{0}的士兵用A表示",PlayerNames[0]);
 47             Console.WriteLine("{0}的士兵用B表示",PlayerNames[1]);
 48             //在画地图之前 首先应该初始化地图
 49             InitailMap();
 50             DrawMap();
 51 
 52             //当玩家A跟玩家B没有一个人在终点的时候 两个玩家不停的去玩游戏
 53             while (PlayerPos[0] < 99 && PlayerPos[1] < 99)
 54             {
 55                 if (Flags[0] == false)
 56                 {
 57                     PlayGame(0);//Flags[0]=true;
 58                 }
 59                 else
 60                 {
 61                     Flags[0] = false;
 62                 }
 63                 if (PlayerPos[0] >= 99)
 64                 {
 65                     Console.WriteLine("玩家{0}无耻的赢了玩家{1}",PlayerNames[0],PlayerNames[1]);
 66                     break;
 67                 }
 68                 if (Flags[1] == false)
 69                 {
 70                     PlayGame(1);
 71                 }
 72                 else
 73                 {
 74                     Flags[1] = false;
 75                 }
 76                 if (PlayerPos[1] >= 99)
 77                 {
 78                     Console.WriteLine("玩家{0}无耻的赢了玩家{1}",PlayerNames[1],PlayerNames[0]);
 79                     break;
 80                 }
 81             }//while
 82 
 83 
 84 
 85             Win();
 86 
 87             Console.ReadKey();
 88         }
 89 
 90 
 91 
 92         /// <summary>
 93         /// 胜利
 94         /// </summary>
 95         public static void Win()
 96         {
 97             Console.ForegroundColor = ConsoleColor.Red;
 98             Console.WriteLine("");
 99             Console.WriteLine("                    ■                  ◆               ■        ■");
100             Console.WriteLine("      ■■■■  ■  ■                ◆■         ■    ■        ■");
101             Console.WriteLine("      ■    ■  ■  ■              ◆  ■         ■    ■        ■");
102             Console.WriteLine("      ■    ■ ■■■■■■       ■■■■■■■   ■    ■        ■");
103             Console.WriteLine("      ■■■■ ■   ■                ●■●       ■    ■        ■");
104             Console.WriteLine("      ■    ■      ■               ● ■ ●      ■    ■        ■");
105             Console.WriteLine("      ■    ■ ■■■■■■         ●  ■  ●     ■    ■        ■");
106             Console.WriteLine("      ■■■■      ■             ●   ■   ■    ■    ■        ■");
107             Console.WriteLine("      ■    ■      ■            ■    ■         ■    ■        ■");
108             Console.WriteLine("      ■    ■      ■                  ■               ■        ■ ");
109             Console.WriteLine("     ■     ■      ■                  ■           ●  ■          ");
110             Console.WriteLine("    ■    ■■ ■■■■■■             ■              ●         ●");
111             Console.ResetColor();
112         }
113         /// <summary>
114         /// 画游戏头
115         /// </summary>
116         public static void GameShow()
117         {
118             Console.ForegroundColor = ConsoleColor.Yellow;
119             Console.WriteLine("**************************");
120             Console.ForegroundColor = ConsoleColor.Red;
121             Console.WriteLine("**************************");
122             Console.ForegroundColor = ConsoleColor.Green;
123             Console.WriteLine("**************************");
124             Console.ForegroundColor = ConsoleColor.Blue;
125             Console.WriteLine("***0505.Net基础班飞行棋***");
126             Console.ForegroundColor = ConsoleColor.Cyan;
127             Console.WriteLine("**************************");
128             Console.ForegroundColor = ConsoleColor.Green;
129             Console.WriteLine("**************************");
130         }
131         /// <summary>
132         /// 初始化地图
133         /// </summary>
134         public static void InitailMap()
135         {
136             int[] luckyturn = { 6, 23, 40, 55, 69, 83 };//幸运轮盘◎
137             for (int i = 0; i < luckyturn.Length; i++)
138             {
139                 //int index = luckyturn[i];
140                 Maps[luckyturn[i]] = 1;
141             }
142             int[] landMine = { 5, 13, 17, 33, 38, 50, 64, 80, 94 };//地雷☆
143             for (int i = 0; i < landMine.Length; i++)
144             {
145                 Maps[landMine[i]] = 2;
146             }
147             int[] pause = { 9, 27, 60, 93,2,3,4,7,8 };//暂停▲
148             for (int i = 0; i < pause.Length; i++)
149             {
150                 Maps[pause[i]] = 3;
151             }
152             int[] timeTunnel = { 20, 25, 45, 63, 72, 88, 90 };//时空隧道卐
153             for (int i = 0; i < timeTunnel.Length; i++)
154             {
155                 Maps[timeTunnel[i]] = 4;
156             }
157         }
158         public static void DrawMap()
159         {
160             Console.WriteLine("图例:幸运轮盘:◎   地雷:☆   暂停:▲   时空隧道:卐");
161             #region  第一横行
162             for (int i = 0; i < 30; i++)
163             {
164                 Console.Write(DrawStringMap(i));
165             }//for
166             #endregion
167             //画完第一横行后 应该换行
168             Console.WriteLine();
169             #region 第一竖行
170             for (int i = 30; i < 35; i++)
171             {
172                 for (int j = 0; j <= 28; j++)
173                 {
174                     Console.Write("  ");
175                 }
176                 Console.Write(DrawStringMap(i));
177 
178                 Console.WriteLine();
179             }
180             #endregion
181             #region 第二横行
182             for (int i = 64; i >= 35; i--)
183             {
184                 Console.Write(DrawStringMap(i));
185             }
186             #endregion
187             //画完第二横行 应该换行
188             Console.WriteLine();
189             #region 第二竖行
190             for (int i = 65; i <= 69; i++)
191             {
192                 Console.WriteLine(DrawStringMap(i));
193             }
194             #endregion
195             #region 第三横行
196             for (int i = 70; i <= 99; i++)
197             {
198                 Console.Write(DrawStringMap(i));
199             }
200             #endregion
201 
202             //画完最后一行  应该换行
203             Console.WriteLine();
204         }//DrawMap方法的结尾
205         /// <summary>
206         /// 从画地图的方法中抽象出来的一个方法
207         /// </summary>
208         /// <param name="i"></param>
209         /// <returns></returns>
210         public static string DrawStringMap(int i)
211         {
212             string str = "";
213             #region 画图
214             //如果玩家A跟玩家B的坐标相同,并且都在这个地图上,画一个尖括号
215             if (PlayerPos[0] == PlayerPos[1] && PlayerPos[0] == i)
216             {
217                 str = "<>";
218             }
219             else if (PlayerPos[0] == i)
220             {
221                 //shift+空格
222                 str = "";
223             }
224             else if (PlayerPos[1] == i)
225             {
226                 str = "";
227             }
228             else
229             {
230                 switch (Maps[i])
231                 {
232                     case 0:
233                         Console.ForegroundColor = ConsoleColor.Yellow;
234                         str = "";
235                         break;
236                     case 1:
237                         Console.ForegroundColor = ConsoleColor.Green;
238                         str = "";
239                         break;
240                     case 2:
241                         Console.ForegroundColor = ConsoleColor.Red;
242                         str = "";
243                         break;
244                     case 3:
245                         Console.ForegroundColor = ConsoleColor.Blue;
246                         str = "";
247                         break;
248                     case 4:
249                         Console.ForegroundColor = ConsoleColor.DarkCyan;
250                         str = "";
251                         break;
252                 }//switch
253             }//else
254             return str;
255             #endregion
256         }
257         /// <summary>
258         /// 玩游戏
259         /// </summary>
260         public static void PlayGame(int playerNumber)
261         {
262             Random r = new Random();
263             int rNumber = r.Next(1, 7);
264             Console.WriteLine("{0}按任意键开始掷骰子", PlayerNames[playerNumber]);
265             Console.ReadKey(true);
266             Console.WriteLine("{0}掷出了{1}", PlayerNames[playerNumber],rNumber);
267             PlayerPos[playerNumber] += rNumber;
268             ChangePos();
269             Console.ReadKey(true);
270             Console.WriteLine("{0}按任意键开始行动", PlayerNames[playerNumber]);
271             Console.ReadKey(true);
272             Console.WriteLine("{0}行动完了", PlayerNames[playerNumber]);
273             Console.ReadKey(true);
274             //玩家A有可能踩到了玩家B 方块 幸运轮盘 地雷 暂停 时空隧道
275             if (PlayerPos[playerNumber] == PlayerPos[1 - playerNumber])
276             {
277                 Console.WriteLine("玩家{0}踩到了玩家{1},玩家{2}退6格", PlayerNames[playerNumber], PlayerNames[1 - playerNumber], PlayerNames[1 - playerNumber]);
278                 PlayerPos[1 - playerNumber] -= 6;
279                 ChangePos();
280                 Console.ReadKey(true);
281             }
282             else//踩到了关卡
283             {
284                 //玩家的坐标
285                 switch (Maps[PlayerPos[playerNumber]])// 0 1 2 3 4
286                 {
287                     case 0: Console.WriteLine("玩家{0}踩到了方块,安全。", PlayerNames[playerNumber]);
288                         Console.ReadKey(true);
289                         break;
290                     case 1: Console.WriteLine("玩家{0}踩到了幸运轮盘,请选择 1--交换位置 2--轰炸对方", PlayerNames[playerNumber]);
291                         string input = Console.ReadLine();
292                         while (true)
293                         {
294                             if (input == "1")
295                             {
296                                 Console.WriteLine("玩家{0}选择跟玩家{1}交换位置", PlayerNames[playerNumber], PlayerNames[1 - playerNumber]);
297                                 Console.ReadKey(true);
298                                 int temp = PlayerPos[playerNumber];
299                                 PlayerPos[playerNumber] = PlayerPos[1 - playerNumber];
300                                 PlayerPos[1 - playerNumber] = temp;
301                                 Console.WriteLine("交换完成!!!按任意键继续游戏!!!");
302                                 Console.ReadKey(true);
303                                 break;
304                             }
305                             else if (input == "2")
306                             {
307                                 Console.WriteLine("玩家{0}选择轰炸玩家{1},玩家{2}退6格", PlayerNames[playerNumber], PlayerNames[1 - playerNumber], PlayerNames[1 - playerNumber]);
308                                 Console.ReadKey(true);
309                                 PlayerPos[1 - playerNumber] -= 6;
310                                 ChangePos();
311                                 Console.WriteLine("玩家{0}退了6格", PlayerNames[1 - playerNumber]);
312                                 Console.ReadKey(true);
313                                 break;
314                             }
315                             else
316                             {
317                                 Console.WriteLine("只能输入1或者2  1--交换位置 2--轰炸对方");
318                                 input = Console.ReadLine();
319                             }
320                         }
321                         break;
322                     case 2: Console.WriteLine("玩家{0}踩到了地雷,退6格", PlayerNames[playerNumber]);
323                         Console.ReadKey(true);
324                         PlayerPos[playerNumber] -= 6;
325                         ChangePos();
326                         break;
327                     case 3: Console.WriteLine("玩家{0}踩到了暂停,暂停一回合", PlayerNames[playerNumber]);
328                         Flags[playerNumber] = true;
329                         Console.ReadKey(true);
330                         break;
331                     case 4: Console.WriteLine("玩家{0}踩到了时空隧道,前进10格", PlayerNames[playerNumber]);
332                         PlayerPos[playerNumber] += 10;
333                         ChangePos();
334                         Console.ReadKey(true);
335                         break;
336                 }//switch
337             }//else
338             ChangePos();//perfect
339             Console.Clear();
340             DrawMap();
341         }
342         /// <summary>
343         /// 当玩家坐标发生改变的时候调用
344         /// </summary>
345         public static void ChangePos()
346         {
347             if (PlayerPos[0] < 0)
348             {
349                 PlayerPos[0] = 0;
350             }
351             if (PlayerPos[0] >= 99)
352             {
353                 PlayerPos[0] = 99;
354             }
355 
356             if (PlayerPos[1] < 0)
357             {
358                 PlayerPos[1] = 0;
359             }
360             if (PlayerPos[1] >= 99)
361             {
362                 PlayerPos[1] = 99;
363             }
364         }
365 
366 
367 
368 
369 
370 
371 
372     }
373 }
View Code

生成的exe程序:链接: http://pan.baidu.com/s/1boyLE6F 密码: v8ic

posted on 2016-01-16 18:36  wsxiao  阅读(336)  评论(0编辑  收藏  举报