namespace 飞行棋游戏2 { class Program { #region 静态变量、数组 //我们用静态字段来模拟全局变量 static int[] Maps = new int[100]; //声明一个静态数组用来存储玩家A跟玩家B的坐标 static int[] PlayerPos = new int[2]; //存储两位玩家的姓名 static string[] PlayerName = new string[2]; //判断玩家暂停状态,false为继续 static bool[] zhangting = new bool[2]; #endregion static void Main(string[] args) { #region 初始化游戏头 Console.Title = "飞行棋游戏"; GameShow(); #endregion #region 输入玩家姓名 Console.WriteLine("请输入玩家A的姓名:"); PlayerName[0] = Console.ReadLine(); while (PlayerName[0] == "" || PlayerName[0] == null) { Console.WriteLine("玩家姓名不能为空。请重新输入:"); PlayerName[0] = Console.ReadLine(); } Console.WriteLine("请输入玩家B的姓名:"); PlayerName[1] = Console.ReadLine(); bool b; do { b = false; if (PlayerName[1] == "" || PlayerName[1] == null) { Console.WriteLine("玩家姓名不能为空。请重新输入:"); b = true; } else if (PlayerName[0] == PlayerName[1]) { Console.WriteLine("玩家姓名相同。请重新输入:"); b = true; } if (b) { PlayerName[1] = Console.ReadLine(); } } while (b); #endregion #region 初始化游戏地图 //玩家姓名输入后,清屏 Console.Clear(); Console.WriteLine($"说明: "{PlayerName[0]}"的士兵用"A"表示"); Console.WriteLine($""{PlayerName[1]}"的士兵用"B"表示"); InitailMap(); DrawMap(); Console.WriteLine($"请按任意键开始游戏!"); Console.ReadKey(true); Console.Clear(); DrawMap(); #endregion #region 开始游戏 //当两个玩家没有一个到终点的时候,两个玩家一直不停的玩 while (PlayerPos[0] < 99 && PlayerPos[1] < 99) { //暂停判断 if (zhangting[0] == false) { PlayerGame(0); } else { zhangting[0] = false; } if (zhangting[1] == false) { PlayerGame(1); } else { zhangting[1] = false; } } Console.ReadKey(); #endregion } /// <summary> /// 画游戏头 /// </summary> public static void GameShow() { Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("**************************"); Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("**************************"); Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("**************************"); Console.ForegroundColor = ConsoleColor.Blue; Console.WriteLine("***0505.Net基础班飞行棋***"); Console.ForegroundColor = ConsoleColor.Cyan; Console.WriteLine("**************************"); Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("**************************"); Console.ResetColor(); } /// <summary> /// 初始化地图 /// </summary> public static void InitailMap() { int[] luckyturn = { 6, 23, 40, 55, 69, 83 };//幸运轮盘◎ for (int i = 0; i < luckyturn.Length; i++) { //int index = luckyturn[i]; Maps[luckyturn[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; } } /// <summary> /// 画地图 /// </summary> public static void DrawMap() { Console.WriteLine("图例:幸运轮盘:◎ 地雷:☆ 暂停:▲ 时空隧道:卐"); Console.WriteLine($"A:{PlayerName[0]} B:{PlayerName[1]}"); #region 第一横行 for (int i = 0; i < 30; i++) { Console.Write(DrawStringMap(i)); }//for #endregion #region 第一竖行 for (int i = 30; i < 35; i++) { Console.WriteLine(); for (int j = 0; j < 29; j++) { Console.Write(" "); } Console.Write(DrawStringMap(i)); }//for #endregion 第一竖行尾 #region 第二横行 Console.WriteLine(); for (int i = 64; i >= 35; i--) { Console.Write(DrawStringMap(i)); } Console.WriteLine(); #endregion 第二横行结尾 #region 第二竖行 for (int i = 65; i < 70; i++) { Console.WriteLine(DrawStringMap(i)); } #endregion 第二竖行结尾 #region 第三(最后)横行 for (int i = 70; i < 100; i++) { Console.Write(DrawStringMap(i)); } Console.WriteLine(); #endregion 第三(最后)横行结尾 } /// <summary> /// 从画地图的方法中抽象出一个方法 /// </summary> /// <param name="i"></param> /// <returns></returns> public static string DrawStringMap(int i) { string str = ""; if (PlayerPos[0] == PlayerPos[1] && PlayerPos[0] == i) { Console.ForegroundColor = ConsoleColor.Red; str = "<>"; } else if (PlayerPos[0] == i) { Console.ForegroundColor = ConsoleColor.Red; str = "A"; } else if (PlayerPos[1] == i) { Console.ForegroundColor = ConsoleColor.Red; str = "B"; } else { switch (Maps[i]) { case 0: Console.ForegroundColor = ConsoleColor.White; str = "□"; break; case 1: Console.ForegroundColor = ConsoleColor.DarkBlue; str = "◎"; break; case 2: Console.ForegroundColor = ConsoleColor.Blue; str = "☆"; break; case 3: Console.ForegroundColor = ConsoleColor.Yellow; str = "▲"; break; case 4: Console.ForegroundColor = ConsoleColor.Green; str = "卐"; break; default: Console.ResetColor(); break; }//switch }//else return str; } /// <summary> /// 玩游戏 /// </summary> /// <param name="id"></param> public static void PlayerGame(int id) { Random random = new Random(); Console.WriteLine($"由玩家"{PlayerName[id]}"按任意键郑骰子"); Console.ReadKey(true); int ran = random.Next(1, 7); PlayerPos[id] += ran; Console.WriteLine($"玩家{PlayerName[id]}掷出数字:{ran}。"); Console.ReadKey(true); InitailMap(); Console.Clear(); DrawMap(); if (PlayerPos[id] == PlayerPos[1 - id]) { PlayerPos[1 - id] -= 6; Console.WriteLine($"玩家{PlayerName[id]}踩到了{PlayerName[1 - id]},玩家{PlayerName[1 - id]}倒跟6格"); } else if (PlayerPos[id] >= 0 && PlayerPos[id] <= 99) { switch (Maps[PlayerPos[id]]) { case 0: Console.WriteLine($"玩家{PlayerName[id]}踩到了方块□,什么也不做"); break; case 1: Console.WriteLine($"玩家{PlayerName[id]}踩到了幸运轮盘◎,请选择1--交换位置 2--轰炸对方 使对方退6格:"); string s = Console.ReadLine(); while (s != "1" && s != "2") { Console.WriteLine("只能输入1或2,请重新输入 :"); s = Console.ReadLine(); } if (s == "1") { int temp; temp = PlayerPos[id]; PlayerPos[id] = PlayerPos[1 - id]; PlayerPos[1 - id] = temp; Console.WriteLine("玩家交换位置"); } else if (s == "2") { PlayerPos[1 - id] -= 6; Console.WriteLine($"玩家{PlayerName[1 - id]}倒退6格"); } break; case 2: PlayerPos[id] -= 6; Console.WriteLine($"玩家{PlayerName[id]}踩到了地雷 ☆,退6格"); break; case 3: zhangting[id] = true; Console.WriteLine($"玩家{PlayerName[id]}踩到了暂停▲,暂停一回"); break; case 4: PlayerPos[id] += 10; Console.WriteLine($"玩家{PlayerName[id]}踩到了时空隧道卐,前进10格"); break; } } if (PlayerPos[id] < 0) { PlayerPos[id] = 0; } else if (PlayerPos[id] >= 99) { PlayerPos[id] = 99; Console.WriteLine($"玩家{PlayerName[id]}:"); Win(); } if (PlayerPos[1 - id] < 0) { PlayerPos[1 - id] = 0; } else if (PlayerPos[1 - id] >= 99) { PlayerPos[1 - id] = 99; Console.WriteLine($"玩家{PlayerName[1 - id]}:"); Win(); } Console.ReadKey(true); InitailMap(); Console.Clear(); DrawMap(); } /// <summary> /// 输出胜利大字 /// </summary> public static void Win() { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine(" ◆ "); Console.WriteLine(" ■ ◆ ■ ■"); Console.WriteLine(" ■■■■ ■ ■ ◆■ ■ ■ ■"); Console.WriteLine(" ■ ■ ■ ■ ◆ ■ ■ ■ ■"); Console.WriteLine(" ■ ■ ■■■■■■ ■■■■■■■ ■ ■ ■"); Console.WriteLine(" ■■■■ ■ ■ ●■● ■ ■ ■"); Console.WriteLine(" ■ ■ ■ ● ■ ● ■ ■ ■"); Console.WriteLine(" ■ ■ ■■■■■■ ● ■ ● ■ ■ ■"); Console.WriteLine(" ■■■■ ■ ● ■ ■ ■ ■ ■"); Console.WriteLine(" ■ ■ ■ ■ ■ ■ ■ ■"); Console.WriteLine(" ■ ■ ■ ■ ■ ■ "); Console.WriteLine(" ■ ■ ■ ■ ● ■ "); Console.WriteLine(" ■ ■■ ■■■■■■ ■ ● ●"); Console.ResetColor(); } } }