黑马程序员-传智博客飞行棋代码

根据老师代码,自己单独写的,代码比较生疏。。

  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 static int[] Map=new int[100]; //地图数组
 11 static int[] PlayPost=new int[2]; //玩家坐标数组
 12 static string msg = "";
 13 static int step;
 14 static string[] names = new string[2]; //存储玩家的姓名
 15 static bool[] PlayYesNo={false,false};
 16 static void Main(string[] args)
 17 {
 18 #region 绘制地图
 19 Show();
 20 Console.WriteLine("请输入玩家A的姓名:");
 21 names[0]=JudgeNameNull(Console.ReadLine());
 22 Console.WriteLine("请输入玩家B的姓名:");
 23 names[1] = JudgeNameNull(Console.ReadLine());
 24 while (names[1] == names[0]) //判断玩家B和玩家A名字是否重合 
 25 {
 26 Console.WriteLine("玩家B不能与玩家A的姓名重合,请重新输入");
 27 names[1] = JudgeNameNull(Console.ReadLine());
 28 }
 29 Console.Clear();
 30 Show();
 31 Console.WriteLine("对战开始...");
 32 Console.WriteLine("{0}的士兵用A表示", names[0]);
 33 Console.WriteLine("{0}的士兵用B表示", names[1]);
 34 DrawMaps();
 35 Console.WriteLine("对战开始...");
 36 #endregion
 37 while (PlayPost[0] <= 100 || PlayPost[1] <= 100)
 38 {
 39 if (PlayYesNo[0] == false)
 40 {
 41 Action(0);
 42 if (PlayPost[0] >= 99) 
 43 {
 44 Console.WriteLine("游戏结束,{0}获得了胜利", names[0]);
 45 break;
 46 }
 47 }
 48 else 
 49 {
 50 PlayYesNo[0] = false;
 51 }
 52 if (PlayYesNo[1] == false)
 53 {
 54 Action(1);
 55 if (PlayPost[1] >= 99)
 56 {
 57 Console.WriteLine("游戏结束,{0}获得了胜利", names[1]);
 58 break;
 59 }
 60 }
 61 else 
 62 {
 63 PlayYesNo[1] = false;
 64 }
 65 }
 66 Console.ReadKey();
 67 }
 68 static void Action(int PlayNumber) 
 69 {
 70 Console.WriteLine("按任意键{0}开始掷骰子", names[PlayNumber]);
 71 Console.ReadKey(true);
 72 
 73 step = Throw();
 74 PlayPost[PlayNumber] += step;
 75 JudgePost();
 76 if (PlayPost[PlayNumber] == PlayPost[1-PlayNumber])
 77 {
 78 Console.WriteLine("{0}撞到了{1},{1}回到了起点!", names[PlayNumber], names[1 - PlayNumber]);
 79 PlayPost[PlayNumber] = 0;
 80 }
 81 else
 82 {
 83 switch (Map[PlayPost[PlayNumber]])
 84 {
 85 case 0:
 86 msg = string.Format("{0}前进{1}", names[PlayNumber], step);
 87 break;
 88 case 1:
 89 Console.WriteLine("进入幸运轮盘,1--轰炸对方,2--与对方交换位置:");
 90 if (IntPout() == 1)
 91 {
 92 msg = string.Format("{0}轰炸了{1},{1}退6步", names[PlayNumber], names[1 - PlayNumber]);
 93 PlayPost[1 - PlayNumber] -= 6;
 94 }
 95 else
 96 {
 97 msg = string.Format("{0}与{1}交换了位置!", names[PlayNumber], names[1 - PlayNumber]);
 98 int Stmp = PlayPost[PlayNumber];
 99 PlayPost[PlayNumber] = PlayPost[1 - PlayNumber];
100 PlayPost[1 - PlayNumber] = Stmp;
101 }
102 break;
103 case 2:
104 msg = string.Format("{0}踩到了地雷,退6格!", names[PlayNumber]);
105 PlayPost[PlayNumber] -= 6;
106 break;
107 case 3:
108 msg = string.Format("{0}暂停一回合!", names[PlayNumber]);
109 PlayYesNo[PlayNumber] = true;
110 break;
111 case 4:
112 msg = string.Format("{0}进入了时光隧道,前进十格", names[PlayNumber]);
113 PlayPost[PlayNumber] += 10;
114 break;
115 }
116 }
117 Console.WriteLine("{0}掷出了{1}", names[PlayNumber], step);
118 Console.WriteLine("按任意键开始行动...");
119 Console.ReadKey(true);
120 Console.Clear();
121 Show();
122 Console.WriteLine("{0}的士兵用A表示", names[PlayNumber]);
123 Console.WriteLine("{0}的士兵用B表示", names[1 - PlayNumber]);
124 DrawMaps();
125 Console.WriteLine("{0}掷出了{1}", names[PlayNumber], step);
126 Console.WriteLine(msg);
127 Console.WriteLine("*********************我是淫荡的分割线*******************");
128 Console.WriteLine("{0}现在的位置是:{1}", names[0], PlayPost[0]+1);
129 Console.WriteLine("{0}现在的位置是:{1}", names[1], PlayPost[1] + 1);
130 Console.WriteLine("*******************淫荡的分割线再次出现了***************");
131 }
132 static void Show() //绘制游戏LOGO
133 {
134 Console.WriteLine("***********************************************");
135 Console.WriteLine("* *");
136 Console.WriteLine("* 大 婶 飞 行 棋 *");
137 Console.WriteLine("* *");
138 Console.WriteLine("***********************************************");
139 }
140 static string JudgeNameNull(string name) //判断游戏名字是否为空
141 {
142 while (name == "") 
143 {
144 Console.WriteLine("玩家姓名不能为空,请重新输入:");
145 name = Console.ReadLine();
146 }
147 return name;
148 }
149 static void MakingCheckpointMaps() //绘制地图的关卡
150 {
151 //0为普通 1为幸运轮盘 2为地雷 3为暂停 4时间隧道
152 int[] LuckyRoulette = { 5, 23, 43, 54, 66, 88 }; //幸运轮盘
153 int[] Mine = { 7, 22, 65, 16, 91,33 }; //地雷
154 int[] Pause = {2, 13, 18, 36, 57, 78, 82 }; //暂停
155 int[] TimeTunnel = { 1, 15, 27, 37, 44, 72, 87 }; //时间隧道\
156 for (int i = 0; i < LuckyRoulette.Length; i++) 
157 {
158 Map[LuckyRoulette[i]] = 1;
159 }
160 for (int i = 0; i < Mine.Length; i++) 
161 {
162 Map[Mine[i]] = 2;
163 }
164 for (int i = 0; i < Pause.Length; i++) 
165 {
166 Map[Pause[i]] = 3;
167 }
168 for (int i = 0; i < TimeTunnel.Length; i++) 
169 {
170 Map[TimeTunnel[i]]=4;
171 }
172 }
173 static string MapJuge(int post) //绘制关卡图形
174 {
175 MakingCheckpointMaps();
176 string result = "";
177 if (PlayPost[0] == post && PlayPost[1] == post) 
178 {
179 result = "<>";
180 }
181 else if (PlayPost[0] == post) 
182 {
183 result="";
184 }
185 else if (PlayPost[1] == post)
186 {
187 result = "";
188 }
189 else 
190 {
191 // 普通:□ 幸运轮盘:◎ 地雷:☆ 暂停:▲ 时空隧道:※
192 switch (Map[post]) 
193 {
194 case 0:
195 result = "";
196 break;
197 case 1:
198 result = "";
199 break;
200 case 2:
201 result = "";
202 break;
203 case 3:
204 result = "";
205 break;
206 case 4:
207 result = "";
208 break;
209 }
210 }
211 return result;
212 }
213 static void DrawMaps() //绘制地图
214 {
215 Console.WriteLine("图例:普通:□ 幸运轮盘:◎ 地雷:☆ 暂停:▲ 时空隧道:※");
216 for (int i = 0; i <= 29; i++) //绘制第一行
217 {
218 Console.Write(MapJuge(i));
219 }
220 Console.WriteLine();
221 for (int i = 30; i <= 34; i++) //绘制第一列
222 {
223 for (int j = 0; j<29; j++) 
224 {
225 Console.Write(" ");
226 }
227 Console.WriteLine(MapJuge(i));
228 }
229 for (int i = 64; i >= 35; i--) //绘制第二行
230 {
231 Console.Write(MapJuge(i));
232 }
233 Console.WriteLine();
234 for (int i = 65; i <= 69; i++) //绘制第二列
235 {
236 Console.WriteLine(MapJuge(i));
237 }
238 for (int i = 70; i <= 99; i++) //绘制第三行
239 {
240 Console.Write(MapJuge(i));
241 }
242 Console.WriteLine();
243 }
244 static int Throw() //掷骰子
245 {
246 Random number = new Random();
247 int Temp = number.Next(1, 7);
248 return Temp;
249 }
250 static void JudgePost() //越界判断处理
251 {
252 for (int i = 0; i < PlayPost.Length; i++) 
253 {
254 if (PlayPost[i] < 0)
255 {
256 PlayPost[i] = 0;
257 }
258 if(PlayPost[i]>99)
259 {
260 PlayPost[i] = 99;
261 }
262 }
263 }
264 static int IntPout() //判断幸运轮盘输入的是否为1或者2
265 {
266 int Number;
267 do
268 {
269 try
270 {
271 Number = Convert.ToInt32(Console.ReadLine());
272 if (Number > 0 && Number < 3)
273 {
274 return Number;
275 }
276 else 
277 {
278 Console.WriteLine("输入非法,请输入1或者2");
279 }
280 }
281 catch
282 {
283 Console.WriteLine("输入非法,请输入1或者2");
284 }
285 } while (true);
286 }
287 }
288 }

 

posted @ 2013-05-08 22:19  Yokiadmin  阅读(249)  评论(0编辑  收藏  举报