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

作者:書 时间:2021-10-06 23:45:25 

飞行棋游戏大家应该都玩过吧,如何使用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();
 }
}
}
标签:C#,飞行棋
0
投稿

猜你喜欢

  • Android自定义ViewGroup实现标签浮动效果

    2021-12-28 20:20:29
  • 使用java生成json时产生栈溢出错误问题及解决方案

    2023-01-09 17:41:10
  • mybatis-plus中lambdaQuery()与lambdaUpdate()比较常见的使用方法总结

    2023-11-24 22:43:04
  • Java C++题解leetcode904水果成篮

    2023-12-08 21:06:09
  • Android开发中Intent.Action各种常见的作用汇总

    2022-10-08 10:24:53
  • 老生常谈 Java中的继承(必看)

    2023-06-21 11:59:51
  • Spring及Mybatis整合占位符解析失败问题解决

    2022-08-13 06:42:49
  • C++异常处理 try,catch,throw,finally的用法

    2021-08-21 21:29:55
  • MyBatis 配置之集合的嵌套方式

    2023-01-15 12:26:49
  • Java如何在沙箱环境中测试支付宝支付接口

    2023-11-02 14:55:15
  • 详解SpringMVC中的日期处理和文件上传操作

    2021-11-13 05:39:18
  • Android动画 实现开关按钮动画(属性动画之平移动画)实例代码

    2023-01-02 23:06:30
  • SpringMVC使用MultipartFile实现文件上传

    2021-07-01 03:50:22
  • Java根据模板导出Excel报表并复制模板生成多个Sheet页

    2022-09-09 01:16:01
  • Java Spring的使用注解开发详解

    2023-04-27 03:00:40
  • 浅谈Java异常的Exception e中的egetMessage()和toString()方法的区别

    2022-05-27 00:37:31
  • Android如何判断一个点在不在多边形区域内

    2023-07-06 14:06:13
  • 一文带你了解SpringBoot中常用注解的原理和使用

    2022-07-22 14:27:43
  • C#十五子游戏编写代码

    2023-06-13 07:33:22
  • 对spring task和线程池的深入研究

    2022-08-08 10:32:38
  • asp之家 软件编程 m.aspxhome.com