飞行棋
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 3 namespace 飞行棋项目 4 { 5 class Program 6 { 7 public static int[] Maps = new int[100];//静态字段数组模拟全局变量,在所有方法中都可直接使用 8 public static int[] PlayerPos = new int[2];//声明一个数组标记玩家A与B的位置 9 public static string[] PlayersName = new string[2];//声明一个数组存玩家姓名 10 public static bool[] Flags = new bool[2];//用来判定踩到暂停 11 static void Main(string[] args) 12 13 { 14 GameFirst();//游戏头 15 #region 输入姓名 16 Console.WriteLine("请输入玩家A的姓名"); 17 PlayersName[0] = Console.ReadLine(); 18 while (PlayersName[0] == "") 19 { 20 Console.WriteLine("玩家A姓名为空,请重新输入"); 21 PlayersName[0] = Console.ReadLine(); 22 } 23 Console.WriteLine("请输入玩家B的姓名"); 24 PlayersName[1] = Console.ReadLine(); 25 while (PlayersName[1] == "" || PlayersName[1] == PlayersName[0]) 26 { 27 if (PlayersName[1] == "") 28 { 29 Console.WriteLine("玩家B姓名为空,请重新输入"); 30 PlayersName[1] = Console.ReadLine(); 31 } 32 else 33 { 34 Console.WriteLine("您输入的玩家B姓名与玩家A相同,请重新输入"); 35 PlayersName[1] = Console.ReadLine(); 36 } 37 } 38 #endregion 39 Console.Clear();//玩家姓名输入完成后应该清屏 40 GameFirst(); 41 Console.WriteLine("{0}的士兵用A表示", PlayersName[0]); 42 Console.WriteLine("{0}的士兵用B表示", PlayersName[1]); 43 InitializeMap(); 44 DrawMap(); 45 //当两个玩家没有一个到达终点时,会不停的玩游戏 46 while (PlayerPos[0] < 99 && PlayerPos[1] < 99) 47 { 48 if (Flags[0] == false) 49 { 50 PlayGame(0); 51 } 52 else 53 { 54 Flags[0] = false; 55 } 56 57 if (Flags[1] == false) 58 { 59 PlayGame(1); 60 } 61 else 62 { 63 Flags[1] = false; 64 } 65 } 66 if (PlayerPos[0] == 99) 67 { 68 Console.WriteLine("玩家{0}获得胜利,玩家{1}可真是个笨蛋", PlayersName[0],PlayersName[1]); 69 } 70 else if (PlayerPos[1] == 99) 71 { 72 Console.WriteLine("玩家{0}获得胜利,玩家{1}可真是个笨蛋", PlayersName[1],PlayersName[0]); 73 } 74 Console.ReadKey(); 75 76 } 77 78 79 public static void GameFirst()//游戏头 80 { 81 Console.ForegroundColor = ConsoleColor.Red; 82 Console.WriteLine("******************"); 83 Console.ForegroundColor = ConsoleColor.Yellow; 84 Console.WriteLine("******************"); 85 Console.ForegroundColor = ConsoleColor.DarkGray; 86 Console.WriteLine("******************"); 87 Console.ForegroundColor = ConsoleColor.Cyan; 88 Console.WriteLine("******飞行棋******"); 89 Console.ForegroundColor = ConsoleColor.DarkYellow; 90 Console.WriteLine("******************"); 91 Console.ForegroundColor = ConsoleColor.White; 92 Console.WriteLine("******************"); 93 Console.ForegroundColor = ConsoleColor.DarkGreen; 94 Console.WriteLine("******************"); 95 } 96 97 98 99 100 public static void InitializeMap()//初始化地图 101 { 102 int[] Roulette = { 6, 23, 40, 55, 69, 83 };//轮盘 103 for (int i = 0; i < Roulette.Length; i++) 104 { 105 Maps[Roulette[i]] = 1; 106 } 107 int[] Mine = { 5, 13, 17, 33, 38, 50, 64, 80, 84 };//地雷 108 for (int i = 0; i < Mine.Length; i++) 109 { 110 Maps[Mine[i]] = 2; 111 } 112 int[] Pause = { 9, 27, 60, 93 };//暂停 113 for (int i = 0; i < Pause.Length; i++) 114 { 115 Maps[Pause[i]] = 3; 116 } 117 int[] TimeTunnel = { 20, 25, 45, 63, 72, 88, 90 };//时空隧道 118 for (int i = 0; i < TimeTunnel.Length; i++) 119 { 120 Maps[TimeTunnel[i]] = 4; 121 } 122 } 123 124 125 public static void DrawMap()//画地图 126 { 127 Console.WriteLine("图例:◎ 轮盘;☆ 地雷;△ 暂停;※ 时空隧道"); 128 for (int i = 0; i < 30; i++)//第一横行 129 { 130 Console.Write( DrawStringMap(i) ); 131 } 132 Console.WriteLine();//画完第一横行后应该换行 133 134 for (int i = 30; i < 35; i++)//第一竖行 135 { 136 for (int j = 0; j < 29; j++) 137 { 138 Console.Write(" "); 139 } 140 Console.WriteLine(DrawStringMap(i)); 141 } 142 143 for (int i = 64; i >=35; i--)//第二横行 144 { 145 Console.Write(DrawStringMap(i)); 146 } 147 Console.WriteLine(); 148 149 for (int i =65; i < 70; i++)//第二竖行 150 { 151 Console.WriteLine(DrawStringMap(i)); 152 } 153 154 for (int i= 70; i < 100; i++)//最后一行 155 { 156 Console.Write(DrawStringMap(i)); 157 } 158 159 Console.WriteLine();//画完最后一行后应该换行 160 161 } 162 public static string DrawStringMap(int i)//画地图方法 163 { 164 string str = " "; 165 if (PlayerPos[0] == PlayerPos[1] && PlayerPos[0] == i) 166 { 167 str="<>"; 168 } 169 else if (PlayerPos[0] == i) 170 { 171 str="A"; 172 } 173 else if (PlayerPos[1] == i) 174 { 175 str="B"; 176 } 177 else 178 { 179 switch (Maps[i]) 180 { 181 case 0: 182 Console.ForegroundColor = ConsoleColor.White; 183 str = "□"; 184 break; 185 case 1: 186 Console.ForegroundColor = ConsoleColor.Yellow; 187 str = "◎"; 188 break; 189 case 2: 190 Console.ForegroundColor = ConsoleColor.Blue; 191 str = "☆"; 192 break; 193 case 3: 194 Console.ForegroundColor = ConsoleColor.Cyan; 195 str = "△"; 196 break; 197 case 4: 198 Console.ForegroundColor = ConsoleColor.DarkMagenta; 199 str="※"; 200 break; 201 } 202 } 203 return str; 204 } 205 206 public static void PlayGame(int Playrenumber)//玩游戏过程 传入Playrenumber为其中一位玩家,1-Playrenumber即为另一位 207 { 208 Random r = new Random(); 209 int rNumber = r.Next(1, 7); 210 Console.WriteLine("玩家{0}按任意键开始掷骰子", PlayersName[Playrenumber]); 211 Console.ReadKey(true); 212 Console.WriteLine("玩家{0}掷出了{1}", PlayersName[Playrenumber],rNumber); 213 PlayerPos[Playrenumber] += rNumber; 214 ChangePos(); 215 Console.ReadKey(true); 216 Console.WriteLine("{0}按任意键开始行动", PlayersName[Playrenumber]); 217 Console.ReadKey(true); 218 Console.WriteLine("{0}行动完了", PlayersName[Playrenumber]); 219 //玩家A有可能踩到玩家B,轮盘,地雷,暂停,时空隧道 220 if (PlayerPos[0] == PlayerPos[1]) 221 { 222 Console.WriteLine("玩家{0}踩到了玩家{1},玩家{2}退6格", PlayersName[Playrenumber], PlayersName[1- Playrenumber], PlayersName[1 - Playrenumber]); 223 PlayerPos[1 - Playrenumber] -= 6; 224 ChangePos(); 225 Console.ReadKey(true); 226 } 227 else 228 { 229 switch (Maps[PlayerPos[Playrenumber]]) 230 { 231 case 0: 232 Console.WriteLine("玩家{0}踩到了方块,安全", PlayersName[Playrenumber]); 233 Console.ReadKey(true); 234 break; 235 case 1: 236 Console.WriteLine("玩家{0}踩到了幸运轮盘,请选择1--交换位置,2--轰炸对方", PlayersName[Playrenumber]); 237 string input = Console.ReadLine(); 238 while (true) 239 { 240 if (input == "1") 241 { 242 Console.WriteLine("玩家{0}选择与玩家{1}交换位置", PlayersName[Playrenumber], PlayersName[1 - Playrenumber]); 243 int temp = PlayerPos[Playrenumber]; 244 PlayerPos[Playrenumber] = PlayerPos[1 - Playrenumber]; 245 PlayerPos[1 - Playrenumber] = temp; 246 ChangePos(); 247 Console.WriteLine("交换完成,游戏继续"); 248 Console.ReadKey(true); 249 break; 250 } 251 else if (input == "2") 252 { 253 Console.WriteLine("玩家{0}选择轰炸玩家{1},玩家{2}往后退6格", PlayersName[Playrenumber], PlayersName[1 - Playrenumber], PlayersName[1 - Playrenumber]); 254 PlayerPos[1 - Playrenumber] -= 6; 255 ChangePos(); 256 257 Console.ReadKey(true); 258 break; 259 } 260 else 261 { 262 Console.WriteLine("只能输入1或2,1--交换位置,2--轰炸对方,请重新输入"); 263 input = Console.ReadLine(); 264 } 265 } 266 break; 267 case 2: 268 Console.WriteLine("玩家{0}踩到了地雷,往后退10格", PlayersName[Playrenumber]); 269 PlayerPos[Playrenumber] -= 10; 270 ChangePos(); 271 Console.ReadKey(true); 272 break; 273 case 3: 274 Console.WriteLine("玩家{0}踩到了暂停,暂停一回合", PlayersName[Playrenumber]); 275 Console.ReadKey(true); 276 Flags[Playrenumber] = true; 277 break; 278 case 4: 279 Console.WriteLine("玩家{0}踩到了时空隧道,往前进10格", PlayersName[Playrenumber]); 280 PlayerPos[Playrenumber] += 10; 281 ChangePos(); 282 Console.ReadKey(true); 283 break; 284 285 } 286 } 287 Console.Clear(); 288 DrawMap(); 289 290 } 291 292 public static void ChangePos()//在玩家位置发生变动时,限制必须在地图内 293 { 294 if (PlayerPos[0] < 0) 295 { 296 PlayerPos[0] = 0; 297 } 298 if (PlayerPos[0] > 99) 299 { 300 PlayerPos[0] = 99; 301 } 302 if (PlayerPos[1] < 0) 303 { 304 PlayerPos[1] = 0; 305 } 306 if (PlayerPos[1] > 99) 307 { 308 PlayerPos[1] = 99; 309 } 310 } 311 312 } 313 }

浙公网安备 33010602011771号