好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

C#飞行棋小程序设计代码

飞行棋游戏大家应该都玩过吧,如何使用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();

   }

  }

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

dy("nrwz");

查看更多关于C#飞行棋小程序设计代码的详细内容...

  阅读:162次