根据老师代码,自己单独写的,代码比较生疏。。
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="A"; 184 } 185 else if (PlayPost[1] == post) 186 { 187 result = "B"; 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 }