本文实例为大家分享了C#实现飞行棋项目的具体代码,供大家参考,具体内容如下
1.制作游戏头部:游戏头部介绍
2.绘制地图
使用一维数组装整个地图的路线
如果这个位置是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 };
3.设置特殊关卡
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 飞行棋 { class Program { /// <summary> /// 整个地图数组 /// </summary> static int[] Maps = new int[100]; /// <summary> /// 玩家的位置 /// </summary> static int[] PlayerPos = new int[2]; /// <summary> /// 玩家的姓名 /// </summary> static string[] PlayerName = new string[2]; /// <summary> /// 记录两名玩家是否可以掷骰子 /// </summary> static bool[] PlayerFlag = new bool[2]; static void Main(string[] args) { //绘制地图头部 ShowTitle(); //输入玩家姓名 Console.WriteLine("请输入玩家A的姓名"); PlayerName[0]=Console.ReadLine(); while (PlayerName[0]=="") { Console.WriteLine("玩家A姓名不能为空,请重新输入"); PlayerName[0]=Console.ReadLine(); } Console.WriteLine("请输入玩家B的姓名"); PlayerName[1] = Console.ReadLine(); while (PlayerName[1]=="" || PlayerName[1]==PlayerName[0]) { if (PlayerName[1]=="") { Console.WriteLine("玩家B姓名不能为空,请重新输入"); PlayerName[1] = Console.ReadLine(); } if (PlayerName[1]==PlayerName[0]) { Console.WriteLine("玩家B姓名与玩家A的姓名一致,请重新输入"); PlayerName[1] = Console.ReadLine(); } } //输入完姓名,清空屏幕 Console.Clear(); //重新绘制游戏标题与游戏说明 ShowTitle(); //初始化地图关卡 InitialMap(); //显示地图 DrawMap(); //判断如果没有一个玩家到达终点则一直轮流掷筛子 while (PlayerPos[0]<99 && PlayerPos[1]<99) { if (PlayerFlag[0]==false) { PlayGame(0); } else { PlayerFlag[0] = false; } if (PlayerFlag[1]==false) { PlayGame(1); } else { PlayerFlag[1] = false; } if (PlayerPos[0] == 99) { Console.WriteLine("恭喜玩家【{0}】游戏获胜!", PlayerName[0]); break; } if (PlayerPos[1] == 99) { Console.WriteLine("恭喜玩家【{0}】游戏获胜!", PlayerName[1]); break; } } Console.ReadLine(); } #region 游戏标题 /// <summary> /// 设置游戏标题 /// </summary> static void ShowTitle() { Console.ForegroundColor = ConsoleColor.Blue; Console.WriteLine("************************************"); Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("************************************"); Console.ForegroundColor = ConsoleColor.Cyan; Console.WriteLine("************************************"); Console.ForegroundColor = ConsoleColor.DarkRed; Console.WriteLine("***************飞行棋***************"); Console.ForegroundColor = ConsoleColor.Cyan; Console.WriteLine("************************************"); Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("************************************"); Console.ForegroundColor = ConsoleColor.Blue; Console.WriteLine("************************************"); } #endregion #region 初始化地图关卡 /// <summary> /// 初始化地图关卡 /// </summary> static void InitialMap() { //绘制幸运轮盘的位置◎==1 int[] luckyturn = { 6, 23, 40, 55, 69, 83 }; for (int i = 0; i < luckyturn.Length; i++) { Maps[luckyturn[i]] = 1; } //绘制绘制地雷的位置★==2 int[] landMine = { 5, 13, 17, 33, 38, 50, 64, 80, 94 }; for (int i = 0; i < landMine.Length; i++) { Maps[landMine[i]] = 2; } //绘制暂停的位置▲==3 int[] pause = { 9, 27, 60, 93 }; for (int i = 0; i < pause.Length; i++) { Maps[pause[i]] = 3; } //绘制时空隧道的位置卍==4 int[] timeTunnel = { 20, 25, 45, 63, 72, 88, 90 }; for (int i = 0; i < timeTunnel.Length; i++) { Maps[timeTunnel[i]] = 4; } } #endregion #region 绘制地图 /// <summary> /// 绘制地图 /// </summary> static void DrawMap() { Console.ForegroundColor = ConsoleColor.DarkRed; Console.WriteLine("玩家【{0}】使用A表示:",PlayerName[0]); Console.WriteLine("玩家【{0}】使用B表示:", PlayerName[1]); Console.WriteLine("游戏规则:"); Console.WriteLine(); Console.WriteLine("1.两名玩家轮流掷骰子,规定A玩家先玩掷"); Console.WriteLine("2.踩到□格子安全,没有奖惩!"); Console.WriteLine("3.踩到◎幸运轮盘,可以进行两种选择:a.置换与对方玩家位置;b.进行轰炸对方,是对方倒退6步."); Console.WriteLine("4.踩到★地雷,倒退6步!"); Console.WriteLine("5.踩到▲暂停,下一回合将暂停操作!"); Console.WriteLine("6.踩到卍时空隧道,直接前进10步!"); Console.WriteLine("7.如果踩到对方,则对方直接退6步!"); ///第一横行地图 for (int i = 0; i < 30; i++) { Console.Write(DrawString(i)); } Console.WriteLine(); ///第一竖行 for (int i = 30; i < 35; i++) { for (int j = 0; j < 29; j++) { Console.Write(" "); } Console.Write(DrawString(i)); Console.WriteLine(); } ///第二横行 for (int i = 64; i > 34; i--) { Console.Write(DrawString(i)); } Console.WriteLine(); ///第二竖行 for (int i = 65; i < 70; i++) { Console.WriteLine(DrawString(i)); } ///第三横行 for (int i = 70; i < 100; i++) { Console.Write(DrawString(i)); } Console.WriteLine(); } #endregion #region 设置地图关卡,玩家初始位置 /// <summary> /// 设置地图关卡,玩家初识位置 /// </summary> /// <param name="pos">索引</param> private static string DrawString(int pos) { string str = ""; //判断两个玩家的位置一样,确定两个玩家都在地图中 if (PlayerPos[0] == PlayerPos[1] && PlayerPos[0] == pos) { Console.ForegroundColor = ConsoleColor.Cyan; str ="<>"; } else if (PlayerPos[0] == pos) { Console.ForegroundColor = ConsoleColor.Cyan; str ="A"; } else if (PlayerPos[1] == pos) { Console.ForegroundColor = ConsoleColor.Red; str = "B"; } else { switch (Maps[pos]) { case 0: Console.ForegroundColor = ConsoleColor.Blue; str = "□"; break; case 1: Console.ForegroundColor = ConsoleColor.Cyan; str = "◎"; break; case 2: Console.ForegroundColor = ConsoleColor.DarkRed; str = "★"; break; case 3: Console.ForegroundColor = ConsoleColor.DarkCyan; str = "▲"; break; case 4: Console.ForegroundColor = ConsoleColor.Yellow; str = "卍"; break; default: break; } } return str; } #endregion #region 开始游戏 static void PlayGame(int PlayNum) { Random r = new Random(); Console.WriteLine("玩家【{0}】按下任意键掷骰子",PlayerName[PlayNum]); Console.ReadKey(true); int number = r.Next(1, 7); Console.WriteLine("玩家【{0}】掷出<{1}>点。",PlayerName[PlayNum],number); Console.WriteLine("玩家【{0}】按下任意键进行移动",PlayerName[PlayNum]); Console.ReadKey(true); PlayerPos[PlayNum] += number; Console.WriteLine("玩家【{0}】移动完成!",PlayerName[PlayNum]); ChangedCheck(); //玩家踩到对方 if (PlayerPos[PlayNum]==PlayerPos[1-PlayNum]) { Console.WriteLine("玩家【{0}】踩到玩家【{1}】,玩家【{1}】退6格",PlayerName[PlayNum],PlayerName[1-PlayNum]); PlayerPos[1 - PlayNum] -= 6; } else { switch (Maps[PlayerPos[PlayNum]]) { //踩到0普通地板,安全没有奖惩 case 0: Console.WriteLine("玩家【{0}】踩到安全地带,没有奖惩!按下任意键继续游戏",PlayerName[PlayNum]); Console.ReadKey(true); break; //踩到1幸运轮盘,选择奖励 case 1: Console.WriteLine("玩家【{0}】踩到幸运轮盘,选择奖励:a--->交换位置 b--->轰炸对方", PlayerName[PlayNum]); string input = Console.ReadLine(); while (true) { if (input=="a") { Console.WriteLine("玩家【{0}】选择与玩家【{1}】交换位置。",PlayerName[PlayNum],PlayerName[1-PlayNum]); int temp = PlayerPos[PlayNum]; PlayerPos[PlayNum] = PlayerPos[1 - PlayNum]; PlayerPos[1 - PlayNum] = temp; Console.WriteLine("玩家【{0}】与玩家【{1}】交换位置成功!按下任意键继续游戏", PlayerName[PlayNum], PlayerName[1 - PlayNum]); Console.ReadKey(true); break; } else if (input=="b") { Console.WriteLine("玩家【{0}】选择轰炸玩家【{1}】。", PlayerName[PlayNum], PlayerName[1 - PlayNum]); PlayerPos[1 - PlayNum] -= 6; Console.WriteLine("玩家【{0}】被轰炸倒退6步!按下任意键继续游戏", PlayerName[1 - PlayNum]); Console.ReadKey(true); break; } else { Console.WriteLine("选择格式错误,请重新选择!"); input = Console.ReadLine(); } } Console.ReadKey(true); break; //踩到2地雷,倒退6步 case 2: Console.WriteLine("玩家【{0}】踩到地雷,倒退6步!按下任意键继续游戏!",PlayerName[PlayNum]); PlayerPos[PlayNum] -= 6; Console.ReadKey(true); break; //踩到3暂停,下一回合不能掷骰子 case 3: Console.WriteLine("玩家【{0}】踩到暂停,下一回合不能掷骰子!按下任意键继续游戏!", PlayerName[PlayNum]); PlayerFlag[PlayNum] = true; Console.ReadKey(true); break; //踩到4时空穿梭,直接前进10步 case 4: Console.WriteLine("玩家【{0}】踩到时空穿梭,直接前进10步!按下任意键继续游戏!", PlayerName[PlayNum]); PlayerPos[PlayNum] += 10; Console.ReadKey(true); break; default: break; } } ChangedCheck(); Console.Clear(); ShowTitle(); DrawMap(); } #endregion static void ChangedCheck() { if (PlayerPos[0] < 0) { PlayerPos[0] = 0; } if (PlayerPos[0] > 99) { PlayerPos[0] = 99; } if (PlayerPos[1] < 0) { PlayerPos[1] = 0; } if (PlayerPos[1] > 99) { PlayerPos[1] = 99; } } } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持靠谱客。
最后
以上就是重要小丸子最近收集整理的关于C#实现飞行棋项目的全部内容,更多相关C#实现飞行棋项目内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复