本文实例为大家分享了C#实现飞行棋游戏的具体代码,供大家参考,具体内容如下
游戏截图:
管理类:
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
|
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApp1 { class ProgramManage { //随机数 public static Random rd = new Random(); //定义地图大小 public static int [] Maps = new int [100]; // public static bool [] PlayerPause = { false , false }; //定义玩家A和玩家B的坐标,0是玩家A的坐标;1是玩家B的坐标 public static int [] PlayerPos = new int [2]; //存储两个玩家的姓名 public static string [] PlayerName = new string [2]; //定义名字错误类型 public static string [] Error = { "正确" , "不能有数字" , "重名了" , "不能为空" }; //画游戏头 public static void GanmeShow() { Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine( "*************************" ); Console.WriteLine( "********飞行棋游戏*******" ); Console.WriteLine( "*************************" ); Console.ForegroundColor = ConsoleColor.Green; } //定义地图关卡布局 public static void InitailMap() { int [] luckturn = { 6, 23, 40, 55, 69, 83 }; //幸运轮盘◎ for ( int i = 0; i < luckturn.Length; i++) { Maps[luckturn[i]] = 1; } int [] landMine = { 5, 13, 17, 33, 38, 50, 64, 80, 94 }; //地雷× for ( int i = 0; i < landMine.Length; i++) { Maps[landMine[i]] = 2; } int [] pause = { 9, 27, 60, 93 }; //暂停▲ for ( int i = 0; i < pause.Length; i++) { Maps[pause[i]] = 3; } int [] timeTunnel = { 20, 25, 45, 63, 72, 88, 90 }; //时空隧道卍 for ( int i = 0; i < timeTunnel.Length; i++) { Maps[timeTunnel[i]] = 4; } } //定义地图元素。输入坐标值,方法内部判断当前坐标应当放什么符号,返回符号值 public static string MapElement( int i) { string Element = "0" ; //如果玩家AB坐标相同并都在当前位置则画一个“<>” if (PlayerPos[0] == i && PlayerPos[1] == i) { Element= "<>" ; } //有A画A,有B画B,都没有画地图 else if (PlayerPos[0] == i) { Element= "A" ; } else if (PlayerPos[1] == i) { Element= "B" ; } else { switch (Maps[i]) { case 0: Element = "□" ; break ; case 1: Element = "◎" ; break ; case 2: Element = "×" ; break ; case 3: Element = "▲" ; break ; case 4: Element = "卍" ; break ; } } return Element; } //绘制地图 public static void DrawMap() { Console.ForegroundColor = ConsoleColor.White; //第一横行 for ( int i = 0; i < 30; i++) { Console.Write(MapElement(i)); } //第一竖行 for ( int i = 30; i < 35; i++) { Console.WriteLine(); Console.Write( " " ); Console.Write(MapElement(i)); } //第二横行 Console.WriteLine(); for ( int i = 64; i > 34; i--) { Console.Write(MapElement(i)); } //第二竖行 for ( int i = 65; i < 70; i++) { Console.WriteLine(); Console.Write(MapElement(i)); } //第三横行 Console.WriteLine(); for ( int i = 70; i < 100; i++) { Console.Write(MapElement(i)); } Console.WriteLine(); } //判断姓名是否符合要求 public static int NameJudge( string str) { int result = 0; //判断是否为空 if (str == "" ) { result = 3; return result; } else { result = 0; } //判断是否是字符串 for ( int i = 0; i < str.Length; i++) { if ( char .IsNumber(str,i)) { result = 1; return result; } else { result = 0; } } //判断是否重名 for ( int i = 0; i < PlayerName.Length; i++) { if (PlayerName[i]==str) { result = 2; return result; } else { result = 0; } } return result; } //投骰子 public static void Play( int player) { PlayerPos[player] += rd.Next(1, 7); } //坐标不能出地图 public static void Limit( int player) { if (PlayerPos[player] < 0) { PlayerPos[player] = 0; } else if (PlayerPos[player] > 99) { PlayerPos[player] = 99; } } //执行规则 public static void GameRule( int player) { //踩到对手 if (PlayerPos[player]==PlayerPos[1-player]) { PlayerPos[1 - player] -= 6; Console.WriteLine( "{0}踩到对手,对手退6格" , PlayerName[player]); } //什么也没踩到 else if (Maps[PlayerPos[player]] == 0) { Console.WriteLine( "{0}玩家前进了,什么也没踩到" ,PlayerName[player]); } //幸运轮盘 else if (Maps[PlayerPos[player]] == 1) { Console.WriteLine( "1,与对手交换位置。2,让对手退回原点" ); string chose; while ( true ) { chose = Console.ReadLine(); if (chose == "1" ) { int tem = PlayerPos[player]; PlayerPos[player] = PlayerPos[1 - player]; PlayerPos[1 - player] = tem; Console.WriteLine( "{0}与对手交换了位置" , PlayerName[player]); break ; } else if (chose == "2" ) { PlayerPos[1 - player] = 0; Console.WriteLine( "{0}把对手打回原位" , PlayerName[player]); break ; } else { Console.WriteLine( "请重新输入" ); } } } //地雷 else if (Maps[PlayerPos[player]] == 2) { PlayerPos[player] -= 6; Console.WriteLine( "{0}踩到地雷了,倒退6格" , PlayerName[player]); } //暂停 else if (Maps[PlayerPos[player]] == 3) { PlayerPause[player] = true ; Console.WriteLine( "{0}暂停一回合" , PlayerName[player]); } //时空隧道 else if (Maps[PlayerPos[player]] == 4) { PlayerPos[player] += 10; Console.WriteLine( "{0}前进10格" , PlayerName[player]); } } //判断输赢 public static string Winner() { if (PlayerPos[0]>PlayerPos[1]) { return PlayerName[0]; } else { return PlayerName[1]; } } } } |
实现类:
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
|
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApp1 { class Program { static void Main( string [] args) { //初始化标题 ProgramManage.GanmeShow(); //初始化地图关卡 ProgramManage.InitailMap(); //输入名字 string name; for ( int i = 0; i < ProgramManage.PlayerName.Length; i++) { Console.WriteLine( "请输入玩家{0}的名字" , i+1); name = Console.ReadLine(); while (ProgramManage.NameJudge(name)!=0) { Console.WriteLine( "名字格式不对,{0},请重新输入" , ProgramManage.Error[ProgramManage.NameJudge(name)]); name = Console.ReadLine(); } ProgramManage.PlayerName[i] = name; } //刷新界面 Console.Clear(); ProgramManage.GanmeShow(); Console.WriteLine( "玩家A名字是{0},玩家B名字{1}" , ProgramManage.PlayerName[0], ProgramManage.PlayerName[1]); ProgramManage.DrawMap(); //游戏主循环 //初始化玩家A开始 int player = 0; //两个玩家都没在终点的时候不停的玩游戏 while (ProgramManage.PlayerPos[0]<99&&ProgramManage.PlayerPos[1]<99) { //判断当前玩家是否暂停,如果暂停了就停一回合 if (ProgramManage.PlayerPause[player]== false ) { Console.WriteLine( "轮到玩家{0}敲回车投骰子" , ProgramManage.PlayerName[player]); Console.ReadKey(); //玩家player投骰子 ProgramManage.Play(player); ProgramManage.Limit(player); //清空界面 Console.Clear(); //执行规则,如果踩到了关卡,一直执行,直到踩到空白点位置 while ( true ) { if (ProgramManage.Maps[ProgramManage.PlayerPos[player]] != 0) { ProgramManage.GameRule(player); ProgramManage.Limit(player); } ProgramManage.GameRule(player); break ; } ProgramManage.Limit(player); //变化玩家 player = 1 - player; //刷新地图 ProgramManage.DrawMap(); } else { //当前玩家恢复暂停 ProgramManage.PlayerPause[player] = false ; //下一回合让给另一个玩家 player = 1 - player; continue ; } } //游戏结束 Console.WriteLine( "玩家{0}赢了" , ProgramManage.Winner()); Console.ReadKey(); } } } |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/qq_20662097/article/details/89085804