中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C#實現飛行棋源碼怎么編寫

發布時間:2021-10-15 16:38:08 來源:億速云 閱讀:175 作者:柒染 欄目:編程語言

這篇文章給大家介紹C#實現飛行棋源碼怎么編寫,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

游戲規則

如果玩家A踩到了玩家B,玩家B退6格踩到了1幸運輪盤,a交換位置,b轟炸對方使對方退6格踩到了2地雷,退6格踩到了3暫停,暫停一回合踩到了4時空隧道,進10格踩到了方塊,什么都不干0表示普通關卡1表示幸運輪盤◎2表示地雷★3表示暫停▲4表示時空隧道卍

關于飛行棋源碼的解析,下一篇文章發出。

源碼

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace 飛行棋{ class Program {  //我們用靜態字段來模擬全局變量  static int[] Maps=new int[100];  //聲明一個靜態字段的數組用來存儲玩家A和玩家B的坐標  static int[] playerPos = new int[2];  //存儲兩個玩家的姓名  static string[] playerNames = new string[2];  //兩個玩家的標記  static bool[] flags = new bool[2]; //flags[0]玩家A和flags[1]玩家B默認都是false  static void Main(string[] args)  {   GameShow(); //加載游戲頭   #region 輸入玩家姓名   Console.WriteLine("請輸入玩家A的姓名");   playerNames[0] = Console.ReadLine();   while (playerNames[0]=="")   {    Console.WriteLine("玩家A姓名不能為空,請重新輸入");    playerNames[0] = Console.ReadLine();   }   Console.WriteLine("請輸入玩家B的姓名");   playerNames[1] = Console.ReadLine();   while (playerNames[1] == ""||playerNames[1]==playerNames[0])   {    if (playerNames[1] == "")    {     Console.WriteLine("姓名不能為空,請重新輸入");     playerNames[1] = Console.ReadLine();    }    else    {     Console.WriteLine("玩家B姓名不能重復,請重新輸入");     playerNames[1] = Console.ReadLine();    }   }   #endregion   //玩家姓名寫好后,進行清屏   Console.Clear(); //清屏   GameShow();   Console.WriteLine("{0}的士兵用A表示", playerNames[0]);   Console.WriteLine("{0}的士兵用B表示", playerNames[1]);   Initailmap(); //初始化地圖   DrowMap();  //畫出地圖---注意:畫地圖前首先應初始化地圖   //當玩家A和玩家B沒有一個人到達終點的時候都在游戲中   while (playerPos[0] < 99 && playerPos[1] < 99)   {    if (flags[0] == false)    {     PlayGame(0);         }    else    {     flags[0] = false;    }     if (playerPos[0] >= 99)    {     Console.WriteLine("玩家{0}贏了玩家{1}", playerNames[0], playerNames[1]);     break;    }    if (flags[1] == false)    {     PlayGame(1);    }    else    {     flags[1] = false;    }    if (playerPos[1] >= 99)    {     Console.WriteLine("玩家{0}贏了玩家{1}", playerNames[1], playerNames[0]);     break;    }   }   Console.ReadKey();  }  /// <summary>  /// 設置游戲頭及輸出內容的顏色  /// </summary>  public static void GameShow()  {   Console.ForegroundColor = ConsoleColor.Blue;  //設置輸出內容的前景色   Console.WriteLine("**********************");   Console.ForegroundColor = ConsoleColor.Cyan;   Console.WriteLine("**********************");   Console.ForegroundColor = ConsoleColor.Red;   Console.WriteLine("******飛行棋大戰******");   Console.ForegroundColor = ConsoleColor.Yellow;   Console.WriteLine("**********************");   Console.ForegroundColor = ConsoleColor.DarkGray;   Console.WriteLine("**********************");   Console.ForegroundColor = ConsoleColor.Green;   Console.WriteLine("**********************");  }  /// <summary>  /// 初始化地圖  /// </summary>  public static void Initailmap()  {   int[] lucklyturn = { 6, 23, 40, 55, 69, 83 }; //幸運輪盤   for (int i = 0; i < lucklyturn.Length; i++)   {    int index = lucklyturn[i];      Maps[index] = 1; //將幸運輪盤的位置處值都設為1   }   int[] landMine = { 5, 13, 17, 33, 38, 50, 64, 80, 94 };//地雷   for (int i = 0; i < landMine.Length; i++)   {    int index = landMine[i];    Maps[index] = 2;  //將地雷的位置處值都設為2   }   int[] pause = { 9, 27, 60, 93 }; //暫停   for (int i = 0; i < pause.Length; i++)   {    int index = pause[i];    Maps[index] = 3;  //將暫停的位置處值都設為3   }   int[] timeTunnel = { 20, 25, 45, 63, 72, 88, 90 };//時空隧道   for (int i = 0; i <timeTunnel.Length; i++)   {    int index=timeTunnel[i];    Maps[index] = 4;  //將時空隧道的位置處值都設為4   }  }  /// <summary>  /// 畫出地圖  /// </summary>  public static void DrowMap()  {   Console.WriteLine("圖例:普通方塊:□ 幸運輪盤:◎ 地雷:★  暫停:▲  時空隧道:卍");   //第一橫行0--29   for (int i = 0; i <= 29; i++)   {    Console.Write(DrowStringMap(i)); //輸出返回的當前單元格的圖形   }   //畫完第一行后換行   Console.WriteLine();   //第一豎行30--34   for (int i = 30; i <= 34; i++)   {    for (int j = 0; j < 29; j++)    {     Console.Write(" "); //兩個空格    }    Console.Write(DrowStringMap(i));     Console.WriteLine();    }   //第二橫行35--64   for (int i = 64; i >=35; i--)   {    Console.Write(DrowStringMap(i));   }   //第二橫行打印完后換行   Console.WriteLine();   //第二豎行65--69   for (int i = 65; i <= 69; i++)   {    Console.Write(DrowStringMap(i));    Console.WriteLine();   }   //第三橫行70--99   for (int i = 70; i <= 99; i++)   {    Console.Write(DrowStringMap(i));   }   Console.WriteLine(); //畫完最后一行地圖后應該換行  }  /// <summary>  /// 畫當前的單元格的圖案  /// </summary>  /// <param name="i">傳入當前單元格的索引</param>  /// <returns>返回當前單元格的圖形</returns>  public static string DrowStringMap(int i)  {   string str = " ";    //如果玩家A和玩家B的坐標相同并且都在地圖上畫一個<>(因為剛開始和結束的時候玩家可能去地圖外)    if (playerPos[0] == playerPos[1] && playerPos[0] == i)    {     Console.ForegroundColor = ConsoleColor.Blue;     str="<>";    }    else if (playerPos[0] == i)    {     Console.ForegroundColor = ConsoleColor.Blue;     str="A";    }    else if (playerPos[1] == i)    {     Console.ForegroundColor = ConsoleColor.Blue;     str="B";    }    else    {     switch (Maps[i])     {      case 0:       Console.ForegroundColor = ConsoleColor.DarkYellow;       str="□";       break;      case 1:       Console.ForegroundColor = ConsoleColor.Green;       str="◎";       break;      case 2:       Console.ForegroundColor = ConsoleColor.Red;       str="★";       break;      case 3:       Console.ForegroundColor = ConsoleColor.Blue;       str="▲";       break;      case 4:       Console.ForegroundColor = ConsoleColor.DarkCyan;       str="卍";       break;     }    } //else    return str;  }  /// <summary>  /// 玩游戲  /// </summary>  public static void PlayGame(int playerNumber)  {   Random r = new Random();   int rNumber = r.Next(1, 7);   Console.WriteLine("{0}玩家開始擲骰子", playerNames[playerNumber]);   Console.ReadKey(true); //ReadKey是重載函數,里面參數為true表示不顯示按下的鍵。   Console.WriteLine("{0}擲出了{1}", playerNames[playerNumber], rNumber);   Console.ReadKey(true);   Console.WriteLine("{0}按任意鍵開始行動", playerNames[playerNumber]);   Console.ReadKey(true);   playerPos[playerNumber] += rNumber;   ChangePos();   Console.WriteLine("玩家{0}行動完了", playerNames[playerNumber]);   Console.ReadKey(true);   //玩家A有可能踩到玩家B   if (playerPos[playerNumber] == playerPos[1 - playerNumber])   {    Console.WriteLine("玩家{0}踩到了玩家{1},{2}退6格", playerNames[0], playerNames[1], playerNames[1]);    playerPos[1 - playerNumber] -= 6;  //如果玩家A踩到了玩家B,玩家B退6格    ChangePos();    Console.ReadKey(true);   }   //玩家A有可能踩到方塊,時空隧道,暫停,地雷,幸運輪盤   else   {    switch (Maps[playerPos[playerNumber]])    {     case 0:      Console.WriteLine("玩家{0}踩到了方塊,安全", playerNames[playerNumber]);      Console.ReadKey(true);      break;     case 1:      Console.WriteLine("玩家{0}踩到了幸運輪盤,請選擇a換位置;b轟炸對方,讓對方退6格", playerNames[playerNumber]);      string input = Console.ReadLine();      while (true)      {       if (input == "a")       {        Console.WriteLine("玩家{0}和玩家{1}交換位置", playerNames[playerNumber], playerNames[1 - playerNumber]); //*******        Console.ReadKey(true);        int temp = playerPos[playerNumber];        playerPos[playerNumber] = playerPos[1 - playerNumber];        playerPos[1 - playerNumber] = temp;        Console.WriteLine("玩家{0}和玩家{1}位置交換成功,按任意鍵繼續游戲。", playerNames[playerNumber], playerNames[1 - playerNumber]);        Console.ReadKey(true);        break;       }       else if (input == "b")       {        Console.WriteLine("玩家{0}選擇轟炸玩家{1},玩家{2}的位置退6格", playerNames[playerNumber], playerNames[1 - playerNumber], playerNames[1 - playerNumber]);        Console.ReadKey(true);        playerPos[1 - playerNumber] -= 6;        ChangePos();        Console.WriteLine("玩家{0}的位置退6格", playerNames[1 - playerNumber]);        Console.ReadKey(true);        break;       }       else       {        Console.WriteLine("只能輸入a或者b,輸入錯誤,請重新輸入");        input = Console.ReadLine();       }      }      break;     case 2:      Console.WriteLine("玩家{0}踩到了地雷,退6格", playerNames[playerNumber]);      Console.ReadKey(true);      playerPos[playerNumber] -= 6;      ChangePos();      break;     case 3:      Console.WriteLine("玩家{0}踩到了暫停,暫停一回合", playerNames[playerNumber]);      flags[playerNumber] = true;      Console.ReadKey(true);      break;     case 4:      Console.WriteLine("玩家{0}踩到了時空隧道,前進10格", playerNames[playerNumber]);      playerPos[playerNumber] += 10;      ChangePos();      break;    } //switch   } //else   ChangePos();   Console.Clear();   //清屏   DrowMap();  //重新畫  }  /// <summary>  /// 當玩家坐標發生改變的時候調用  /// </summary>  public static void ChangePos()  {   if (playerPos[0] < 0)   {    playerPos[0] = 0;   }   else if (playerPos[0] >99)   {    playerPos[0] = 99;   }   else if (playerPos[1] < 0)   {    playerPos[1] = 0;   }   else if (playerPos[1] > 99)   {    playerPos[1] = 99;   }     } }}

關于C#實現飛行棋源碼怎么編寫就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

辉南县| 兴和县| 东乌珠穆沁旗| 阳曲县| 乃东县| 永康市| 论坛| 北碚区| 金湖县| 彭州市| 河北省| 海伦市| 惠安县| 逊克县| 巴彦县| 朝阳县| 军事| 墨竹工卡县| 突泉县| 灯塔市| 喀喇| 台北县| 屏山县| 常山县| 鲁甸县| 文成县| 荃湾区| 保康县| 绩溪县| 通江县| 赣榆县| 九龙坡区| 张家口市| 荆门市| 八宿县| 锡林浩特市| 武功县| 丹东市| 莆田市| 平乐县| 正安县|