首页 > 编程 > C# > 正文

C#飞行棋小程序设计代码

2019-10-29 21:19:49
字体:
来源:转载
供稿:网友

飞行棋游戏大家应该都玩过吧,如何使用C#语言进行编写,本文实例就为大家分享了飞行棋C#实现代码,供大家参考,具体内容如下

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace Pachee{  class Program  {    #region 静态字段    // 关卡数量    public static int[] Maps = new int[100];    // 玩家坐标    public static int[] PlayerPos = new int[2];    // 玩家名称    public static string[] PlayerNames = new string[2];    // 判断玩家是否暂停    public static bool[] Flags = new bool[2];    #endregion    /// <summary>    /// 输出游戏头    /// </summary>    public static void ShowGame()    {      Console.ForegroundColor = ConsoleColor.Green;      Console.WriteLine("****************************");      Console.ForegroundColor = ConsoleColor.Blue;      Console.WriteLine("****************************");      Console.ForegroundColor = ConsoleColor.White;      Console.WriteLine("***C#基础练习:飞行棋项目***");      Console.ForegroundColor = ConsoleColor.Yellow;      Console.WriteLine("****************************");      Console.ForegroundColor = ConsoleColor.Red;      Console.WriteLine("****************************");    }    /// <summary>    /// 接受用户输入的游戏名称,判断是否合法    /// </summary>    /// <returns>游戏名称</returns>    public static string[] InputPlayerNames()    {      PlayerNames[0] = "";      PlayerNames[1] = "";      Console.ForegroundColor = ConsoleColor.White;      while (PlayerNames[0] == "")      {        Console.Write("Please enter the name of game A player: ");        PlayerNames[0] = Console.ReadLine().Trim();        if (PlayerNames[0] == "")        {          Console.WriteLine("A player name cannot be empty, please enter again.");          continue;        }        break;      }      while (PlayerNames[1] == "" || PlayerNames[0] == PlayerNames[1])      {        Console.Write("Please enter the name of game B player: ");        PlayerNames[1] = Console.ReadLine().Trim();        if (PlayerNames[1] == "")        {          Console.WriteLine("B player name cannot be empty, please enter again.");          continue;        }        else if (PlayerNames[1] == PlayerNames[0])        {          Console.WriteLine("The player name cannot be the same as the player A B, please enter again.");          continue;        }        break;      }      return PlayerNames;    }    /// <summary>    /// 初始化地图,改变默认的地图坐标类型    /// 0:方块    /// 1:轮盘    /// 2:地雷    /// 3:暂停    /// 4:隧道    /// </summary>    public static void InitailMap()    {      #region 轮盘      int[] luckTrun = { 6, 23, 40, 55, 69, 83 };      for (int i = 0; i < luckTrun.Length; i++)      {        Maps[luckTrun[i]] = 1;      }      #endregion      #region 地雷      int[] landMine = { 5, 13, 17, 33, 38, 50, 64, 80, 94 };      for (int i = 0; i < landMine.Length; i++)      {        Maps[landMine[i]] = 2;      }      #endregion      #region 暂停      int[] pause = { 9, 27, 60, 93 };      for (int i = 0; i < pause.Length; i++)      {        Maps[pause[i]] = 3;      }      #endregion      #region 隧道      int[] timeTunnel = { 20, 25, 45, 63, 72, 88, 90 };      for (int i = 0; i < timeTunnel.Length; i++)      {        Maps[timeTunnel[i]] = 4;      }      #endregion    }    /// <summary>    /// 设定当前坐标的类型    /// </summary>    /// <param name="i">坐标</param>    /// <returns>坐标类型</returns>    public static string DrawStringMap(int i)    {      string str = null;      if (PlayerPos[0] == PlayerPos[1] && PlayerPos[0] == i)      {        str = "<>";      }      else if (PlayerPos[0] == i)      {        str = "A";      }      else if (PlayerPos[1] == i)      {        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.Green;            str = "☆";            break;          case 3:            Console.ForegroundColor = ConsoleColor.Red;            str = "▲";            break;          case 4:            Console.ForegroundColor = ConsoleColor.Cyan;            str = "卐";            break;        }      }      return str;    }    /// <summary>    /// 生成所有坐标    /// </summary>    public static void DrawMap()    {      Console.WriteLine("Legend: LuckTrun<◎> landMine<☆> Pause<▲> timeTunnel<卐>");      #region 第一橫行      for (int i = 0; i < 30; i++)      {        Console.Write(DrawStringMap(i));      }      Console.WriteLine();      #endregion      #region 第一竖行      for (int i = 30; i < 35; i++)      {        for (int j = 0; j <= 28; j++)        {          Console.Write(" ");        }        Console.Write(DrawStringMap(i));        Console.WriteLine();      }      #endregion      #region 第二橫行      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 <= 99; i++)      {        Console.Write(DrawStringMap(i));      }      Console.WriteLine();      #endregion    }    /// <summary>    /// 判断坐标是否超出范围    /// </summary>    public static void ChangePos()    {      #region Player A      if (PlayerPos[0] < 0)      {        PlayerPos[0] = 0;      }      if (PlayerPos[0] > 99)      {        PlayerPos[0] = 99;      }      #endregion      #region Player B      if (PlayerPos[1] < 0)      {        PlayerPos[1] = 0;      }      if (PlayerPos[1] > 99)      {        PlayerPos[1] = 99;      }      #endregion    }    /// <summary>    /// 踩到轮盘时,选择功能    /// </summary>    /// <param name="input">玩家的选择</param>    /// <param name="player">玩家标示</param>    public static void PlayerSelect(string input, int player)    {      while (true)      {        if (input == "1")        {          Console.WriteLine("Player {0} select and {1} swap places.", PlayerNames[player], PlayerNames[1 - player]);          int temp = PlayerPos[player];          PlayerPos[player] = PlayerPos[1 - player];          PlayerPos[1 - player] = temp;          Console.WriteLine("Swap complete, press any key continue.");          Console.ReadKey(true);          break;        }        else if (input == "2")        {          Console.WriteLine("Player {0} select bombing {1}, Player {2} back to 6.", PlayerNames[player], PlayerNames[1 - player], PlayerNames[1 - player]);          PlayerPos[1 - player] -= 6;          Console.ReadKey(true);          break;        }        else        {          Console.WriteLine("Can only select: 1--Swap places 2--bombing: ");          input = Console.ReadLine();        }      }    }    /// <summary>    /// 进行游戏    /// </summary>    /// <param name="player">玩家标示位</param>    public static void PlayGame(int player)    {      Random r = new Random();      int next = r.Next(1, 7);      Console.WriteLine("{0} press any key to start rolling the dice.", PlayerNames[player]);      Console.ReadKey(true);      Console.WriteLine("{0} Throw out of {1}", PlayerNames[player], next);      PlayerPos[player] += next;      ChangePos();      Console.ReadKey(true);      Console.WriteLine("{0} press any key to start action.", PlayerNames[player]);      Console.ReadKey(true);      Console.WriteLine("{0} action complete.", PlayerNames[player]);      Console.ReadKey(true);      // Player A 有可能踩到: Player B、方块、轮盘、地雷、暂停、隧道      if (PlayerPos[player] == PlayerPos[1 - player])      {        Console.WriteLine("Player {0} step on {1}, {2} back to 6.", PlayerNames[player], PlayerNames[1 - player], PlayerNames[1 - player]);        PlayerPos[1 - player] -= 6;        Console.ReadKey(true);      }      else      {        switch (Maps[PlayerPos[player]])        {          case 0:            Console.WriteLine("Player {0} step on Square, safe.", PlayerNames[player]);            Console.ReadKey(true);            break;          case 1:            Console.WriteLine("Player {0} step on a LuckTrun, please select: 1--Swap places 2--bombing: ", PlayerNames[player]);            string input = Console.ReadLine().Trim();            PlayerSelect(input, player);            Console.ReadKey(true);            break;          case 2:            Console.WriteLine("Player {0} step on a LandMine, back to 6", PlayerNames[player]);            PlayerPos[player] -= 6;            Console.ReadKey(true);            break;          case 3:            Console.WriteLine("Player {0} step on a Pause, to suspend a round.", PlayerNames[player]);            Console.ReadKey(true);            Flags[player] = true;            break;          case 4:            Console.WriteLine("Player {0} step on a TimeTunnel, forward 10.", PlayerNames[player]);            PlayerPos[player] += 10;            Console.ReadKey();            break;        }      }      ChangePos();      Console.Clear();      DrawMap();    }    static void Main(string[] args)    {      ShowGame();      InputPlayerNames();      Console.WriteLine("Player {0} is A.", PlayerNames[0]);      Console.WriteLine("Player {0} is B.", PlayerNames[1]);      InitailMap();      DrawMap();      while (PlayerPos[0] < 99 && PlayerPos[1] < 99)      {        #region A        if (Flags[0] == false)        {          PlayGame(0);        }        else        {          Flags[0] = false;        }        #endregion        #region B        if (Flags[1] == false)        {          PlayGame(1);        }        else        {          Flags[1] = false;        }        #endregion      }      #region 判断玩家胜利      if (PlayerPos[0] == 99)      {        Console.Clear();        Console.WriteLine("Player {0} Win.", PlayerNames[0]);      }      if (PlayerPos[1] == 99)      {        Console.Clear();        Console.WriteLine("Player {0} Win.", PlayerNames[1]);      }      #endregion      Console.ReadKey();    }  }}

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


注:相关教程知识阅读请移步到c#教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表