我是靠谱客的博主 无限红酒,这篇文章主要介绍C#控制台实现简单飞行棋游戏,现在分享给大家,希望可以做个参考。

本文实例为大家分享了C#控制台实现简单飞行棋游戏的具体代码,供大家参考,具体内容如下

需求分析

1.制作游戏头部:游戏头部介绍
2.绘制地图

使用一维数组装整个地图的路线
如果这个位置是0,绘制普通格子□
如果这个位置是1,绘制幸运轮盘◎
如果这个位置是2,绘制地雷★
如果这个位置是3,绘制暂停▲
如果这个位置是4,绘制时空隧道卍
规划幸运轮盘位置

复制代码
1
int[] luckyturn = { 6, 23, 40, 55, 69, 83 };

规划地雷的位置

复制代码
1
int[] landMine = { 5,13,17,33,38,50,64,80,94};

规划暂停位置

复制代码
1
int[] pause = {9,27,60,93 };

规划时空隧道的位置

复制代码
1
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
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _01飞行棋 { 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]; static bool[] PlayerFlage = 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(); Console.ReadLine(); while (PlayerPos[0]<99&&PlayerPos[1]<99) { if (PlayerFlage[0]==false) { PlayGame(0); } else { PlayerFlage[0] = false; } if(PlayerFlage[1]==false) { PlayGame(1); } else { PlayerFlage[1] = false; } if (PlayerPos[0] == 99) { Console.WriteLine("恭喜玩家[{0}]获胜", PlayerName[0]); } if (PlayerPos[1] == 99) { Console.WriteLine("恭喜玩家[{0}]获胜", PlayerName[1]); } } } /// <summary> /// 设置游戏标题 /// </summary> static void ShowTitle() { //设置颜色 Console.ForegroundColor = ConsoleColor.Cyan; Console.WriteLine("************************************"); Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("************************************"); Console.ForegroundColor = ConsoleColor.Blue; Console.WriteLine("************************************"); Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("***************飞行棋***************"); Console.ForegroundColor = ConsoleColor.Blue; Console.WriteLine("************************************"); Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("************************************"); Console.ForegroundColor = ConsoleColor.Cyan; Console.WriteLine("************************************"); } /// <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; } } /// <summary> /// 绘制地图 /// </summary> static void DrawMap() { Console.ForegroundColor = ConsoleColor.Blue; Console.WriteLine("玩家[{0}]使用A表示", PlayerName[0]); Console.WriteLine("玩家[{0}]使用B表示", PlayerName[1]); 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.WriteLine(DrawString(i)); } ///第二横行 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(); } /// <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.DarkRed; str ="<>"; } else if (PlayerPos[0] == pos) { Console.ForegroundColor = ConsoleColor.Magenta; str="A"; } else if (PlayerPos[1] == pos) { Console.ForegroundColor = ConsoleColor.DarkBlue; str ="B"; } else { switch (Maps[pos]) { case 0: Console.ForegroundColor = ConsoleColor.Cyan; str ="□"; break; case 1: Console.ForegroundColor = ConsoleColor.Green; str ="◎"; break; case 2: Console.ForegroundColor = ConsoleColor.Red; str ="★"; break; case 3: Console.ForegroundColor = ConsoleColor.Blue; str ="▲"; break; case 4: Console.ForegroundColor = ConsoleColor.Yellow; str ="卍"; break; default: break; } } return str; } //游戏环节 static void PlayGame(int playerNum) { Random r = new Random(); Console.WriteLine("玩家[{0}]按下任意键掷骰子.",PlayerName[playerNum]); Console.ReadKey(true); int number = r.Next(1, 7); Console.WriteLine("玩家[{0}]掷出<{1}>点.",PlayerName[playerNum],number); Console.WriteLine("玩家[{0}]按下任意键进行移动.",PlayerName[playerNum]); Console.ReadKey(true); PlayerPos[playerNum] += number; Console.WriteLine("玩家[{0}]移动完成!",PlayerName[playerNum]); //玩家踩到对方 ChangedCheck(); if (PlayerPos[playerNum]==PlayerPos[1-playerNum]) { Console.WriteLine("玩家[{0}]踩到玩家[{1}],玩家[{1}]退6步", PlayerName[playerNum], PlayerName[1 - playerNum]); PlayerPos[1 - playerNum] -= 6; } else { switch (Maps[PlayerPos[playerNum]]) { //踩到普通地板,安全没有奖惩 case 0: Console.WriteLine("玩家[{0}]踩到安全地带,没有奖惩!按下任意键继续游戏", PlayerName[playerNum]); Console.ReadKey(true); break; //踩到1幸运轮盘,选择奖励 case 1: Console.WriteLine("玩家[{0}]踩到幸运轮盘,请选择:a--交换位置 b--轰炸对方.", PlayerName[playerNum]); string input = Console.ReadLine(); while (true) { if (input =="a") { Console.WriteLine("玩家[{0}]选择与玩家[{1}]交换位置.",PlayerName[playerNum],PlayerName[1-playerNum]); int temp = PlayerPos[playerNum]; PlayerPos[playerNum] = PlayerPos[1 - playerNum]; PlayerPos[1 - playerNum] = temp; Console.WriteLine("玩家[{0}]与玩家[{1}]交换位置完成!按下任意键继续游戏", PlayerName[playerNum], PlayerName[1 - playerNum]); Console.ReadKey(true); break; } else if (input == "b") { Console.WriteLine("玩家[{0}]选择轰炸玩家[{1}]", PlayerName[playerNum], PlayerName[1 - playerNum]); PlayerPos[1 - playerNum] -= 6; Console.WriteLine("玩家[{0}]被轰炸倒退6步!按下任意键继续游戏",PlayerName[1-playerNum]); Console.ReadKey(true); break; } else { input = Console.ReadLine(); } } break; //踩到2地雷,直接倒退6格 case 2: Console.WriteLine("玩家[{0}]踩到地雷,退6格! 按下任意键继续游戏", PlayerName[playerNum]); PlayerPos[playerNum] -= 6; Console.ReadKey(true); break; //踩到3暂停,下个回合暂停 case 3: Console.WriteLine("玩家[{0}]踩到暂停,下个回合暂停操作!按下任意键继续游戏", PlayerName[playerNum]); PlayerFlage[playerNum] = true; Console.ReadKey(true); break; //踩到4时空隧道,直接前进10步 case 4: Console.WriteLine("玩家[{0}]踩到时空隧道,前进10步!按下任意键继续游戏", PlayerName[playerNum]); PlayerPos[playerNum] += 10; Console.ReadKey(true); break; } } ChangedCheck(); Console.Clear(); ShowTitle(); DrawMap(); } 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#控制台实现简单飞行棋游戏内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(119)

评论列表共有 0 条评论

立即
投稿
返回
顶部