最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

飛行棋游戲大家應(yīng)該都玩過吧,如何使用C#語言進(jìn)行編寫,本文實(shí)例就為大家分享了飛行棋C#實(shí)現(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í):飛行棋項(xiàng)目***");
   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>
  /// 踩到輪盤時(shí),選擇功能
  /// </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>
  /// 進(jìn)行游戲
  /// </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)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • .Net中的json操作類用法分析

    .Net中的json操作類用法分析

    這篇文章主要介紹了.Net中的json操作類用法分析,是非常實(shí)用的一個(gè)技巧,需要的朋友可以參考下
    2014-08-08
  • 利用C#/VB.NET實(shí)現(xiàn)PPT轉(zhuǎn)換為HTML

    利用C#/VB.NET實(shí)現(xiàn)PPT轉(zhuǎn)換為HTML

    利用PowerPoint可以很方便的呈現(xiàn)多媒體信息,且信息形式多媒體化,表現(xiàn)力強(qiáng)。但難免在某些情況下我們會(huì)需要將PowerPoint轉(zhuǎn)換為HTML格式,本文就為大家整理了轉(zhuǎn)換方法,希望對(duì)大家有所幫助
    2023-05-05
  • C# Double轉(zhuǎn)化為String時(shí)的保留位數(shù)及格式方式

    C# Double轉(zhuǎn)化為String時(shí)的保留位數(shù)及格式方式

    這篇文章主要介紹了C# Double轉(zhuǎn)化為String時(shí)的保留位數(shù)及格式方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • C# Winform 子窗體訪問父級(jí)窗體的控件和屬性

    C# Winform 子窗體訪問父級(jí)窗體的控件和屬性

    本文主要介紹兩種子窗體訪問父窗體控件和屬性的方法,大家可以參考一下,本人比較偏向第二種,把父窗體作為屬性傳遞,一勞永逸,想訪問父窗體的什么控件屬性都可以。
    2016-05-05
  • C#中實(shí)現(xiàn)多繼承的方法

    C#中實(shí)現(xiàn)多繼承的方法

    這篇文章主要介紹了C#中實(shí)現(xiàn)多繼承的方法,本文通過給接口添加擴(kuò)展的方法實(shí)現(xiàn)了C#的多繼承,需要的朋友可以參考下
    2014-08-08
  • C#通過流寫入一行數(shù)據(jù)到文件的方法

    C#通過流寫入一行數(shù)據(jù)到文件的方法

    這篇文章主要介紹了C#通過流寫入一行數(shù)據(jù)到文件的方法,涉及C#針對(duì)文本文件讀寫的基本技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • C#實(shí)現(xiàn)簡單的天氣預(yù)報(bào)示例代碼

    C#實(shí)現(xiàn)簡單的天氣預(yù)報(bào)示例代碼

    這篇文章主要介紹了C#實(shí)現(xiàn)簡單的天氣預(yù)報(bào)示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • 解讀C#中ReadString的一些小疑惑

    解讀C#中ReadString的一些小疑惑

    這篇文章主要介紹了關(guān)于C#中ReadString的一些小疑惑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • C#語法糖(Csharp Syntactic sugar)大匯總

    C#語法糖(Csharp Syntactic sugar)大匯總

    首先需要聲明的是“語法糖”這個(gè)詞絕非貶義詞,它可以給我?guī)矸奖?,是一種便捷的寫法,編譯器會(huì)幫我們做轉(zhuǎn)換;而且可以提高開發(fā)編碼的效率,在性能上也不會(huì)帶來損失。這讓java開發(fā)人員羨慕不已,呵呵。
    2010-06-06
  • Unity shader實(shí)現(xiàn)高斯模糊效果

    Unity shader實(shí)現(xiàn)高斯模糊效果

    這篇文章主要為大家詳細(xì)介紹了Unity shader實(shí)現(xiàn)高斯模糊效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-02-02

最新評(píng)論

裕民县| 宁都县| 托克托县| 巴林左旗| 乐都县| 金阳县| 十堰市| 舟山市| 福安市| 揭阳市| 翁牛特旗| 丹巴县| 唐河县| 盐边县| 留坝县| 集贤县| 淮安市| 崇仁县| 朝阳市| 辉南县| 若羌县| 昭通市| 宜城市| 浠水县| 清徐县| 云林县| 镇雄县| 淳安县| 星座| 甘肃省| 八宿县| 峡江县| 历史| 元朗区| 中牟县| 龙井市| 佛冈县| 阿拉善盟| 精河县| 图木舒克市| 崇信县|