0505.Net基础班第八天(飞行棋)

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<luckyturn.Length;i++)    {     int n=luckyturn[i];     Map[n]=1;    }    for(int i=0;i<landMine.Length;i++)    {     int n=landMine[i];     Map[n]=1;    }

  1 using System;
  2 using System.Collections.Generic;
  3 using System.Linq;
  4 using System.Text;
  5
  6 namespace 飞行棋
  7 {
  8     class Program
  9     {
 10
 11         static int[] Maps = new int[100];
 12         static int[] PlayerPos = new int[2];
 13         static string[] PlayerNames = new string[2];
 14         static bool[] Flags = new bool[2];
 15
 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("玩家姓名不能为空,请重新输入!");
 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("玩家姓名不能为空,请重新输入!");
 34                     PlayerNames[1] = Console.ReadLine();
 35                 }
 36                 else
 37                 {
 38                     Console.WriteLine("玩家B姓名不能和玩家A姓名一样,请重新输入!");
 39                     PlayerNames[1] = Console.ReadLine();
 40                 }
 41             }
 42             #endregion
 43             Console.Clear();
 44             GameShow();
 45             Console.WriteLine("{0}的士兵用A表示", PlayerNames[0]);
 46             Console.WriteLine("{0}的士兵用B表示", PlayerNames[1]);
 47             InitialMap();
 48             DrawMap();
 49             while (PlayerPos[0] < 99 && PlayerPos[1] < 99)
 50             {
 51                 if (Flags[0] == false)
 52                 {
 53                     PlayGame(0);
 54                 }
 55                 else
 56                 {
 57                     Flags[0]=false;
 58                 }
 59                 if (PlayerPos[0] >= 99)
 60                 {
 61                     Console.WriteLine("玩家{0}无耻的赢了玩家{1}", PlayerNames[0], PlayerNames[1]);
 62                     break;
 63                 }
 64                 if (Flags[1] == false)
 65                 {
 66                     PlayGame(1);
 67                 }
 68                 else
 69                 {
 70                     Flags[1] = false;
 71                 }
 72                 if (PlayerPos[1] >= 99)
 73                 {
 74                     Console.WriteLine("玩家{0}无耻的赢了玩家{1}", PlayerNames[1], PlayerNames[0]);
 75                     break;
 76                 }
 77             }
 78             Console.ReadKey();
 79         }
 80
 81         /// <summary>
 82         /// 画游戏头
 83         /// </summary>
 84         public static void GameShow()
 85         {
 86             Console.ForegroundColor = ConsoleColor.Yellow;
 87             Console.WriteLine("************************");
 88             Console.ForegroundColor = ConsoleColor.Green;
 89             Console.WriteLine("************************");
 90             Console.ForegroundColor = ConsoleColor.Red;
 91             Console.WriteLine("************************");
 92             Console.ForegroundColor = ConsoleColor.Cyan;
 93             Console.WriteLine("*******飞行棋游戏*******");
 94             Console.ForegroundColor = ConsoleColor.DarkCyan;
 95             Console.WriteLine("************************");
 96             Console.ForegroundColor = ConsoleColor.Blue;
 97             Console.WriteLine("************************");
 98         }
 99
100         /// <summary>
101         /// 初始化地图
102         /// </summary>
103         public static void InitialMap()
104         {
105             int[] luckyturn = { 6, 23, 40, 55, 69, 83 };//幸运轮盘◎
106             for (int i = 0; i < luckyturn.Length; i++)
107             {
108                 Maps[luckyturn[i]] = 1;
109             }
110             int[] landMine = { 5, 13, 17, 33, 38, 50, 64, 80, 94 };//地雷☆
111             for (int i = 0; i < landMine.Length; i++)
112             {
113                 Maps[landMine[i]] = 2;
114             }
115             int[] pause = { 9, 27, 60, 93};//暂停▲
116             for (int i = 0; i < pause.Length; i++)
117             {
118                 Maps[pause[i]] = 3;
119             }
120             int[] timeTunnel = { 20, 25, 45, 63, 72, 88, 90 };//时空隧道卐
121             for (int i = 0; i < timeTunnel.Length; i++)
122             {
123                 Maps[timeTunnel[i]] = 4;
124             }
125         }
126
127         /// <summary>
128         /// 画地图
129         /// </summary>
130         public static void DrawMap()
131         {
132             Console.WriteLine("图例:幸运轮盘:◎   地雷:☆   暂停:▲   时空隧道:卐");
133             #region 第一行
134             for (int i = 0; i < 30; i++)
135             {
136                 Console.Write(DrawStringMap(i));
137             }
138             #endregion
139             Console.WriteLine();
140             #region 第一列
141             for (int i = 30; i < 35; i++)
142             {
143                 for (int j = 0; j < 29; j++)
144                 {
145                     Console.Write("  ");
146                 }
147                 Console.WriteLine(DrawStringMap(i));
148             }
149             #endregion
150             #region 第二行
151             for (int i = 64; i > 34; i--)
152             {
153                 Console.Write(DrawStringMap(i));
154             }
155             #endregion
156             Console.WriteLine();
157             #region 第二列
158             for (int i = 65; i < 70; i++)
159             {
160                 Console.WriteLine(DrawStringMap(i));
161             }
162             #endregion
163             #region 第三行
164             for (int i = 70; i < 100; i++)
165             {
166                 Console.Write(DrawStringMap(i));
167             }
168             #endregion
169             Console.WriteLine();
170         }
171
172         /// <summary>
173         /// 从画地图的方法中抽象出来的一个方法
174         /// </summary>
175         /// <param name="i"></param>
176         /// <returns></returns>
177         public static string DrawStringMap(int i)
178         {
179             string str = "";
180             if (PlayerPos[0] == PlayerPos[1] && PlayerPos[0] == i)
181             {
182                 str = "<>";
183             }
184             else if (PlayerPos[0] == i)
185             {
186                 str = "A";
187             }
188             else if (PlayerPos[1] == i)
189             {
190                 str = "B";
191             }
192             else
193             {
194                 switch (Maps[i])
195                 {
196                     case 0:
197                         Console.ForegroundColor = ConsoleColor.Yellow;
198                         str = "□";
199                         break;
200                     case 1:
201                         Console.ForegroundColor = ConsoleColor.Green;
202                         str = "◎";
203                         break;
204                     case 2:
205                         Console.ForegroundColor = ConsoleColor.Red;
206                         str = "☆";
207                         break;
208                     case 3:
209                         Console.ForegroundColor = ConsoleColor.Blue;
210                         str = "▲";
211                         break;
212                     case 4:
213                         Console.ForegroundColor = ConsoleColor.DarkCyan;
214                         str = "卐";
215                         break;
216                 }
217             }
218             return str;
219         }
220
221         /// <summary>
222         /// 玩游戏
223         /// </summary>
224         public static void PlayGame(int playerNumber)
225         {
226             Random r = new Random();
227             int rNumber = r.Next(1, 7);
228             Console.WriteLine("{0}按任意键开始掷骰子", PlayerNames[playerNumber]);
229             Console.ReadKey(true);
230             Console.WriteLine("{0}掷出了{1}", PlayerNames[playerNumber], rNumber);
231             Console.ReadKey(true);
232             Console.WriteLine("{0}按任意键开始行动", PlayerNames[playerNumber]);
233             Console.ReadKey(true);
234             PlayerPos[playerNumber] += rNumber;
235             Console.WriteLine("{0}行动完了", PlayerNames[playerNumber]);
236             Console.ReadKey(true);
237             ChangePos();
238             Console.Clear();
239             DrawMap();
240             if (PlayerPos[playerNumber] == PlayerPos[1-playerNumber])
241             {
242                 PlayerPos[1-playerNumber] -= 6;
243                 Console.ReadKey(true);
244             }
245             else
246             {
247                 switch (Maps[PlayerPos[playerNumber]])
248                 {
249                     case 0: Console.WriteLine("玩家{0}踩到了方块,安全", PlayerNames[playerNumber]);
250                         Console.ReadKey(true);
251                         break;
252                     case 1: Console.WriteLine("玩家{0}踩到了幸运轮盘,请选择 1--交换位置 2--轰炸对方", PlayerNames[playerNumber]);
253                         string input=Console.ReadLine();
254                         while (true)
255                         {
256                             if (input == "1")
257                             {
258                                 Console.WriteLine("玩家{0}选择跟对方交换位置", PlayerNames[playerNumber]);
259                                 int temp = PlayerPos[playerNumber];
260                                 PlayerPos[playerNumber] = PlayerPos[1-playerNumber];
261                                 PlayerPos[1-playerNumber] = temp;
262                                 Console.WriteLine("交换完成,请按任意键继续游戏");
263                                 Console.ReadKey(true);
264                                 break;
265                             }
266                             else if (input == "2")
267                             {
268                                 Console.WriteLine("玩家{0}选择轰炸对方", PlayerNames[playerNumber]);
269                                 Console.ReadKey(true);
270                                 PlayerPos[1-playerNumber] -= 6;
271                                 Console.WriteLine("玩家{0}遭到玩家{1}轰炸,退6格", PlayerNames[1-playerNumber], PlayerNames[playerNumber]);
272                                 Console.ReadKey(true);
273                                 break;
274                             }
275                             else
276                             {
277                                 Console.WriteLine("无效选择,请重新选择1--交换位置 2--轰炸对方");
278                                 input = Console.ReadLine();
279                             }
280                         }
281                         break;
282                     case 2: Console.WriteLine("玩家{0}踩到了地雷,退6格", PlayerNames[playerNumber]);
283                         Console.ReadKey(true);
284                         PlayerPos[playerNumber] -= 6;
285                         break;
286                     case 3: Console.WriteLine("玩家{0}踩到了暂停,暂停一回合", PlayerNames[playerNumber]);
287                         Flags[playerNumber] = true;
288                         Console.ReadKey(true);
289                         break;
290                     case 4: Console.WriteLine("玩家{0}踩到了时空隧道,前进10格", PlayerNames[playerNumber]);
291                         PlayerPos[playerNumber] += 10;
292                         Console.ReadKey(true);
293                         break;
294                 }
295             }
296             ChangePos();
297             Console.Clear();
298             DrawMap();
299
300         }
301
302         /// <summary>
303         /// 当玩家坐标发生改变的时候调用
304         /// </summary>
305         public static void ChangePos()
306         {
307             if (PlayerPos[0] < 0)
308             {
309                 PlayerPos[0] = 0;
310             }
311             if (PlayerPos[0] > 99)
312             {
313                 PlayerPos[0] = 99;
314             }
315             if (PlayerPos[1] < 0)
316             {
317                 PlayerPos[1] = 0;
318             }
319             if (PlayerPos[1] > 99)
320             {
321                 PlayerPos[1] = 99;
322             }
323         }
324     }
325 }

时间: 2024-10-14 11:44:05

0505.Net基础班第八天(飞行棋)的相关文章

0505.Net基础班第二十一天(基础加强总复习)

1.取消播放器的自动播放功能 2.播放或者暂停按钮 3.下一曲.上一曲 4.多选删除 5.静音和放音 6.选择列表中的音乐文件,单击播放按钮直接播放 7.自动进行下一曲 15秒  44秒 当我和世界不一样 44.--47 那就让我不一样 lblInfomation.Text = musicPlayer.currentMedia.duration.ToString() + "\r\n" + musicPlayer.currentMedia.durationString + "\

0505.Net基础班第十三天(面向对象多态)

1.c#中的访问修饰符 public :公开的公共的 private:私有的,只能在当前类的内部访问 protected:受保护的,只能在当前类的内部以及该类的子类中访问. internal:只能在当前项目中访问.在同一个项目中,internal和public的权限是一样. protected internal:protected+internal 1).能够修饰类的访问修饰符只有两个:public.internal. 2).可访问性不一致. 子类的访问权限不能高于父类的访问权限,会暴漏父类的成

0505.Net基础班第十一天(面向对象继承)

1.里氏转换 1).子类可以赋值给父类 2).如果父类中装的是子类对象,那么可以讲这个父类强转为子类对象. 2. 子类对象可以调用父类中的成员,但是父类对象永远都只能调用自己的成员. 3. is:表示类型转换,如果能够转换成功,则返回一个true,否则返回一个false as:表示类型转换,如果能够转换则返回对应的对象,否则返回一个null 4.protected 受保护的:可以在当前类的内部以及该类的子类中访问. 5.ArrayList集合的长度问题 每次集合中实际包含的元素个数(count)

0505.Net基础班第二十天(基础加强总复习)

1.new关键字 1).创建对象 2).隐藏从父类那里继承过来的成员 2.访问修饰符 public:公开的,公共的 private:私有的,只能在当前类的内部访问,类中成员们,如果不加访问修饰符,默认就是private procteced:受保护的,可以在当前类的内部访问,也可以在该类的子类中访问 internal:在当前项目中都可以访问. protected internal: 能够修饰类的访问修饰符只有两个,internal和public 3.常用的关键字 this 1.当前类的对象 2.调

0505.Net 基础班第十七天(GDI绘图)

基础知识复习+练习(带*为选做) 以下练习题做的时候如果遇到不会做的,请跳过本题继续向后做. 编写一段程序,运行时向用户提问“你考了多少分?(0~100)”,接受输入后判断其等级并显示出来.判断依据如下:等级={优 (90~100分):良 (80~89分):中 (60~69分):差 (0~59分):} 编程输出九九乘法表. 定义长度50的数组,随机给数组赋值,并可以让用户输入一个数字n,按一行n个数输出数组  int[]  array = new int[50];     Random r =

0505.Net基础班第十天(面向对象继承)

1.命名空间 可以认为类是属于命名空间的. 如果在当前项目中没有这个类的命名空间,需要我们手动的导入这个类所在的 命名空间. 1).用鼠标去点 2).alt+shift+F10 3).记住命名空间,手动的去引用 2.在一个项目中引用另一个项目的类 1).添加引用 2).引用命名空间 3.值类型和引用类型 区别: 1.值类型和引用类型在内存上存储的地方不一样. 2.在传递值类型和传递引用类型的时候,传递的方式不一样. 值类型我们称之为值传递,引用类型我们称之为引用传递. 我们学的值类型和引用类型:

0505.Net基础班第二十二天(委托、XML和播放器项目)

01索引器 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace _01索引器 8 { 9 class Program 10 { 11 static void Main(string[] args) 12 { 13 Person p = new Person(); 14 p

0505.Net基础班第十四天(winform基础)

1.winform应用程序是一种智能客户端技术,我们可以使用winform应用程序 帮助我们获得信息或者传输信息等. 2.属性 Name:在后台要获得前台的控件对象,需要使用Name属性. visible:指示一个控件是否可见. Enabled:指示一个控件是否可用. 3.事件:发生一件事情. 注册事件:双击控件注册的都是控件默认被选中的那个事件. 触发事件: 4. 在Main函数当中创建的窗体对象,我们称之为这个窗体应用程序的主窗体. 也就意味着,当你将主窗体关闭后,整个应用程序都关闭了. 5

0505.Net基础班第十六天(多线程和Socket网络编程)

01复习 1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Threading.Tasks; 9 using System.Windows.Forms; 10 using Syst