欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#飛行棋小程序設(shè)計代碼

 更新時間:2016年11月01日 17:16:07   作者:書  
這篇文章主要為大家詳細(xì)介紹了C#飛行棋小程序設(shè)計代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

飛行棋游戲大家應(yīng)該都玩過吧,如何使用C#語言進行編寫,本文實例就為大家分享了飛行棋C#實現(xiàn)代碼,供大家參考,具體內(nèi)容如下

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Pachee
{
 class Program
 {
  #region 靜態(tài)字段
  // 關(guān)卡數(shù)量
  public static int[] Maps = new int[100];
  // 玩家坐標(biāo)
  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#基礎(chǔ)練習(xí):飛行棋項目***");
   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>
  /// 初始化地圖,改變默認(rèn)的地圖坐標(biāo)類型
  /// 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>
  /// 設(shè)定當(dāng)前坐標(biāo)的類型
  /// </summary>
  /// <param name="i">坐標(biāo)</param>
  /// <returns>坐標(biāo)類型</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>
  /// 生成所有坐標(biāo)
  /// </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>
  /// 判斷坐標(biāo)是否超出范圍
  /// </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">玩家標(biāo)示</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">玩家標(biāo)示位</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();
  }
 }
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Winform窗體圓角設(shè)計代碼

    Winform窗體圓角設(shè)計代碼

    這篇文章主要為大家詳細(xì)介紹了Winform窗體圓角設(shè)計代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • winform實現(xiàn)創(chuàng)建最前端窗體的方法

    winform實現(xiàn)創(chuàng)建最前端窗體的方法

    這篇文章主要介紹了winform實現(xiàn)創(chuàng)建最前端窗體的方法,涉及C#窗體屬性設(shè)置的相關(guān)技巧,非常具有實用價值,需要的朋友可以參考下
    2015-08-08
  • c# 實現(xiàn)語音聊天的實戰(zhàn)示例

    c# 實現(xiàn)語音聊天的實戰(zhàn)示例

    這篇文章主要介紹了c# 實現(xiàn)語音聊天的實戰(zhàn)示例,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下
    2021-02-02
  • C#通過Semaphore類控制線程隊列的方法

    C#通過Semaphore類控制線程隊列的方法

    這篇文章主要介紹了C#通過Semaphore類控制線程隊列的方法,涉及Semaphore類操作線程隊列的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-08-08
  • C# 實現(xiàn)Zookeeper分布式鎖的參考示例

    C# 實現(xiàn)Zookeeper分布式鎖的參考示例

    Zookeeper分布式鎖的原理是巧妙的是使用了znode臨時節(jié)點的特點和監(jiān)聽(watcher)機制,監(jiān)聽機制很簡單,就是我們可以給znode添加一個監(jiān)聽器,當(dāng)znode節(jié)點狀態(tài)發(fā)生改變時(如:數(shù)據(jù)內(nèi)容改變,節(jié)點被刪除),會通知到監(jiān)聽器。本文講解使用c#實現(xiàn)該功能
    2021-06-06
  • C#:foreach與yield語句的介紹

    C#:foreach與yield語句的介紹

    C#:foreach與yield語句的介紹,需要的朋友可以參考一下
    2013-03-03
  • Unity向量按照某一點進行旋轉(zhuǎn)

    Unity向量按照某一點進行旋轉(zhuǎn)

    這篇文章主要為大家詳細(xì)介紹了Unity向量按照某一點進行旋轉(zhuǎn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-01-01
  • 基于C#制作一個飛機大戰(zhàn)小游戲的全過程

    基于C#制作一個飛機大戰(zhàn)小游戲的全過程

    飛機大戰(zhàn)小游戲詳細(xì)大家都不陌生,下面這篇文章主要給大家介紹了關(guān)于基于C#制作一個飛機大戰(zhàn)小游戲的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02
  • 基于C#實現(xiàn)Ping工具類

    基于C#實現(xiàn)Ping工具類

    Ping是一種常用的測試網(wǎng)絡(luò)連接的工具,可以測試網(wǎng)絡(luò)延遲和連接狀況,以及判斷網(wǎng)絡(luò)是否可用,本文將通過框架類庫中的Ping類來實現(xiàn)Ping功能,感興趣的小伙伴可以了解下
    2023-11-11
  • 詳解c# 協(xié)變和逆變

    詳解c# 協(xié)變和逆變

    這篇文章主要介紹了c# 協(xié)變和逆變的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)c#,感興趣的朋友可以了解下
    2020-11-11

最新評論