C#小程序飛行棋,程序效果圖

1、設計分析
這個程序界面大致分為四部分:
① 最上面游戲名字界面

②信息提示區

③游戲界面區

④游戲操作提示區

2、分區設計實現
一、游戲界面顯示區,由于只需要顯示出圖形即可,因此直接用Console.Writeline()輸出即可。
二、信息提示區,此處用于顯示 游戲對戰雙方的姓名等信息,在游戲開始時需要由用戶錄入對戰雙方的姓名信息,因此可用Console.Readline()來讀取 用戶鍵入的值,<注:需要檢查驗證對戰雙方的姓名不可相同!>
三、游戲界面區,此處用于顯示游戲每一步的界面,可看出界面中有普通的方塊、關卡方塊以及游戲對戰雙方。針對該操作界面需要多次繪制 ,因此可單獨寫成一個方法進行實現,對游戲界面普通的方塊 出現的最多,因此可將地圖的繪制初始化為 數組 ,并將其出初始化為普通方塊,此處可利用一個整形數組來存儲坐標的屬性,(例如:用0表示普通方塊,1表示幸運轉盤,2表示地雷,3表示暫停,4表示時空隧道,A、B分別表示對戰用戶)在繪制地圖時 再根據不同的數字繪制出相應的圖案,在用戶進行對戰重新繪制地圖時只需根據相應坐標上的值 來繪制出地圖即可,游戲界面繪制可分為 5部分 進行繪制,如下圖所示:
 繪制第一部分和第五部分,可用常規的Console.Write()進行輸出,而第二部分則需繪制出前面的空格,第三部分由于是逆向繪制的,所以 在繪制時可采用循環從大坐標到小坐標遞減進行繪制。
四、游戲操作提示區,此處用于提示用戶進行操作游戲,只需輸出語句即可。
這個飛行棋小游戲最難的部分便在于 繪制游戲地圖,以及關卡操作上面。
繪制地圖:
1、 初始化地圖,在繪制時可先將地圖進行初始化,用數組來存儲關卡的位置,然后利用循環給地圖中 關卡所在處賦予代表關卡的值。
關鍵代碼如下
/// <summary> /// 初始化游戲地圖 /// </summary> static void InitialMap()    {      for (int i=0;i<Map.Length;i++)      {        Map[i] =0;      }      //用于存儲關卡位置      int[] luckyTurn = { 6, 23, 40, 55, 69, 83,98 };//幸運轉盤 1      int[] landMine = { 5, 13, 17, 33, 38, 50, 64, 80, 94 };//地雷 2      int[] pause = { 9, 27, 60, 93 };//暫停 3      int[] timeTunnel = { 20, 25, 45, 63, 72, 88, 90};//時空隧道 4      for (int i=0;i<luckyTurn.Length;i++)      {        int pos = luckyTurn[i];        Map[pos] = 1;      }      for (int i=0;i<landMine.Length;i++)      {        Map[landMine[i]] = 2;      }      for (int i=0;i<pause.Length;i++)      {        int pos = pause[i];        Map[pos] = 3;      }      for(int i=0;i<timeTunnel.Length;i++)      {        int pos = timeTunnel[i];        Map[pos] =4;      }    }2、檢查坐標的值,在將地圖進行初始化之后,便可開始進行繪制地圖的操作了,地圖繪制可使用 在程序設計時所講的分布繪制,在繪制地圖時應檢驗該該坐標點的值,在根據該點的值繪制相應的圖案,在檢查時根據值 返回相應的圖案 ,在利用循環繪制出即可,檢查坐標的值代碼如下:
/// <summary>    /// 獲得要繪制的坐標    /// </summary>    /// <param name="i"> 要繪制的坐標</param>    /// <returns></returns>    static string GetMapString(int i)    {      string Result="";//用于返回 給一個坐標相應的圖案      if (playerPos[0] == i && playerPos[1] == i)//判斷是否是對戰雙方所在此處      {        Console.ForegroundColor = ConsoleColor.Yellow;//設置圖案的前景色為黃色        Result = "<>";//得到兩人均在圖案      }      else if (playerPos[0] == i)      {        Console.ForegroundColor = ConsoleColor.Yellow;         Result = "A";//得到A均在圖案      }      else if (playerPos[1] == i)      {        Console.ForegroundColor = ConsoleColor.Yellow;        Result = "B";//得到B均在圖案      }      else      {        switch (Map[i])        {          case 0:            Console.ForegroundColor = ConsoleColor.White;             Result = "□";//得到普通均在圖案            break;          case 1:             Console.ForegroundColor = ConsoleColor.Red;             Result = "○";//得轉盤圖案            break;          case 2:             Console.ForegroundColor = ConsoleColor.Blue;             Result = "☆";            break;          case 3:            Console.ForegroundColor = ConsoleColor.Green;            Result = "▲";            break;          case 4:            Console.ForegroundColor = ConsoleColor.DarkBlue;            Result = "
主站蜘蛛池模板:
兖州市|
全州县|
达州市|
广元市|
长宁区|
定南县|
临漳县|
裕民县|
交口县|
车致|
淄博市|
慈利县|
潜山县|
曲阜市|
平阴县|
平江县|
莒南县|
东丰县|
榆林市|
泌阳县|
乌鲁木齐市|
江西省|
慈溪市|
梧州市|
潜江市|
庆阳市|
元江|
石城县|
夹江县|
江阴市|
台安县|
武陟县|
玉林市|
太仆寺旗|
嘉荫县|
图木舒克市|
永福县|
肥东县|
宁远县|
翁源县|
禹城市|