C#飛行棋小程式設計代碼_C#教程

來源:互聯網
上載者:User

飛行棋遊戲大家應該都玩過吧,如何使用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();    }  }}

以上就是本文的全部內容,希望對大家的學習有所協助,也希望大家多多支援雲棲社區。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.