C#实现简单的飞行棋游戏

本文实例为大家分享了C#实现简单飞行棋游戏的具体代码,供大家参考,具体内容如下
【C#实现简单的飞行棋游戏】下面展示 完整代码:

namespace 飞行棋{class Program{public static int[] Maps = new int[100]; public static int[] PlayerPos = new int[2]; public static string[] PlayerName = new string[2]; public static bool[] Flags = new bool[2]; //初值为falsestatic void Main(string[] args){GameStart(); Mes(); Console.Clear(); GameStart(); Console.WriteLine("{0}的士兵用A表示\n{1}的士兵用A表示", PlayerName[0], PlayerName[1]); InitailMap(); DrawMap(); while (PlayerPos[0] < 99 && PlayerPos[1] < 99){for (int i = 0; i < 2; i++){if (!Flags[i])PlayGame(i); elseFlags[i] = false; if (PlayerPos[i] >= 99)Console.WriteLine("玩家{0}胜利",PlayerName[i]); }}Win(); Console.ReadKey(); }/// /// 游戏开始提示/// public static void GameStart(){Console.ForegroundColor = ConsoleColor.Blue; Console.WriteLine("************************"); Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("************************"); Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("*********飞行棋*********"); Console.ForegroundColor = ConsoleColor.Magenta; Console.WriteLine("************************"); Console.ForegroundColor = ConsoleColor.Gray; Console.WriteLine("************************"); }/// /// 玩家信息输入/// public static void Mes(){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[0] == PlayerName[1]){if (PlayerName[1] == " ")Console.WriteLine("玩家姓名不能为空,请重新输入"); elseConsole.WriteLine("两个玩家姓名不能保持一致,请重新输入玩家B的姓名"); PlayerName[0] = Console.ReadLine(); }}/// /// 初始化地图/// public static void InitailMap(){int[] luckyturn = { 6, 23, 40, 55, 69, 83 }; int[] landMine = { 5, 13, 17, 33, 38, 50, 55, 80, 94 }; int[] pause = { 9, 27, 60, 93 }; int[] timeTunnel = { 20, 25, 45, 63, 72, 88, 90 }; foreach (int i in luckyturn)Maps[i] = 1; foreach (int i in landMine)Maps[i] = 2; foreach (int i in pause)Maps[i] = 3; foreach (int i in timeTunnel)Maps[i] = 4; }/// /// 实现数字与特殊字符的转换/// public static void DrawMap(){int i; Console.WriteLine("幸运圆盘:①\t炸弹:★\t暂停:▲\t时空隧道:﹌"); #region 第一横行for (i = 0; i < 30; i++)Console.Write(Draw(i)); Console.WriteLine(); #endregion#region第一竖行for (; i <35; i++){for(int j = 0; j < 29; j++)Console.Write(""); Console.WriteLine(Draw(i)); }#endregion#region第二横行for (i = 64; i >= 35; i--)Console.Write(Draw(i)); Console.WriteLine(); #endregion#region第二竖行for (i=65; i < 70; i++){Console.WriteLine(Draw(i)); //Console.WriteLine(); }#endregion#region第三横行for (; i<100; i++)Console.Write(Draw(i)); #endregionConsole.WriteLine(); }/// /// 将数组转换为特殊字符/// /// /// public static string Draw(int i){string str=" "; if (PlayerPos[0] == PlayerPos[1] && PlayerPos[1] == i){Console.ForegroundColor = ConsoleColor.DarkRed; str = "<>"; }else if (PlayerPos[0] == i){Console.ForegroundColor = ConsoleColor.DarkRed; str = "A"; }else if (PlayerPos[1] == i){Console.ForegroundColor = ConsoleColor.DarkRed; str = "B"; }else{switch (Maps[i]){case 0:Console.ForegroundColor = ConsoleColor.Yellow; str="▅"; break; case 1:Console.ForegroundColor = ConsoleColor.Blue; str = "①"; break; //幸运圆盘case 2:Console.ForegroundColor = ConsoleColor.Cyan; str = "★"; break; //地雷case 3:Console.ForegroundColor = ConsoleColor.Gray; str = "▲"; break; //暂停case 4:Console.ForegroundColor = ConsoleColor.Green; str = "﹌"; break; //时空隧道}}return str; }/// /// 游戏进行代码段/// /// public static void PlayGame(int playerNumber){Random r = new Random(); Console.WriteLine("{0}按任意键开始掷骰子", PlayerName[playerNumber]); Console.ReadKey(true); int n = r.Next(1,7); Console.WriteLine("{0}掷出了{1}", PlayerName[playerNumber], n); PlayerPos[playerNumber] += n; ChangePos(); Console.ReadKey(true); Console.WriteLine("{0}按任意键开始行动", PlayerName[playerNumber]); Console.ReadKey(true); Console.WriteLine("{0}行动结束", PlayerName[playerNumber]); Console.ReadKey(true); if (PlayerPos[playerNumber] == PlayerPos[1- playerNumber]){Console.WriteLine("玩家{0}踩到了玩家{1},玩家{2}后退六格", PlayerName[playerNumber], PlayerName[1- playerNumber], PlayerName[1- playerNumber]); PlayerPos[1] -= 6; Console.ReadKey(true); }else{switch (Maps[PlayerPos[playerNumber]]){case 0:Console.WriteLine("玩家{0}正常", PlayerName[playerNumber]); Console.ReadKey(true); break; case 1:Console.WriteLine("玩家{0}踩到了幸运圆盘,有以下两个选择:1.双方交换位置,2.对方后退六格",PlayerName[playerNumber]); while (true){string input = Console.ReadLine(); if (input == "1"){Console.WriteLine("玩家{0}选择交换位置", PlayerName[playerNumber]); Console.ReadKey(true); int temp; temp = PlayerPos[playerNumber]; PlayerPos[playerNumber] = PlayerPos[1- playerNumber]; PlayerPos[1- playerNumber] = temp; Console.WriteLine("交换成功,按任意键继续游戏"); Console.ReadKey(true); break; }else if (input == "2"){Console.WriteLine("玩家{0}选择轰炸对方", PlayerName[playerNumber]); Console.ReadKey(true); PlayerPos[1- playerNumber] -= 6; Console.ReadKey(true); break; }else{Console.WriteLine("只能输入1或者2"); Console.ReadKey(true); }}break; case 2:Console.WriteLine("玩家{0}踩到了地雷,退六格", PlayerName[playerNumber]); Console.ReadKey(true); PlayerPos[playerNumber] -= 6; break; case 3:Console.WriteLine("玩家{0}踩到了暂停,暂停一回合", PlayerName[playerNumber]); Flags[playerNumber] = true; Console.ReadKey(true); break; case 4:Console.WriteLine("玩家{0}踩到了时空隧道,前进十格", PlayerName[playerNumber]); PlayerPos[playerNumber] += 10; Console.ReadKey(true); break; }}ChangePos(); Console.Clear(); DrawMap(); }/// /// 当玩家坐标发生改变时调用/// public static void ChangePos(){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; }public static void Win(){Console.WriteLine("Virectory"); }}}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    推荐阅读