代码如下所示:
namespace 骑士飞行棋
{
class Program
{
//在下面的数组存储我们游戏地图各各关卡
//数组的下标为0的元素对应地图上的第1格 下标为1的元素对应元素第2格...下标为n的元素对应n+1格
//在数组中 1:表示幸运轮盘 ◎
// 2: 表示地雷 ☆
// 3: 表示暂停 ▲
// 4: 表示时空隧道 卍
// 0: 表示普通 □
static int[] map = new int[100];
static string[] names = new string[2]; //names[0]存储玩家A的姓名 name[1]存玩家B的姓名
static int[] playerPos = { 0, 0 };//playPos[0]存玩家A的位置,playPos[1]存玩家B的位置
static int step = 0; //用于存放产生的随机数
static string input = ""; //用户存储用户的输入
static string msg = ""; //用于存储用户踩到某个关卡,输出的话
static bool[] isStop = { false, false };//isStop[0]表示玩家A是否上次一走到暂停,似的话为true,不是为false
static Random r = new Random();//r是产生的随机数
static void Main( string[] args)
{
ShowUI(); //显示游戏
InitialName();
Console.Clear();
ShowUI();
Console.WriteLine("对战开始......");
Console.WriteLine("{0}用A来表示", names[0]);
Console.WriteLine("{0}用B来表示", names[1]);
Console.WriteLine("如果AB在同一位置,用<>表示");
InitialMap();//初始化地图
drawMap();//绘制地图
Console.WriteLine("开始游戏......");
//这个循环中让玩家A和玩家B轮流掷骰子 当玩家A或者玩家B的坐标>=99时,则循环结束
while (playerPos[0] < 99 && playerPos[1] < 99)
{
Action(0);//A掷筛子
Action(1);//B掷筛子
}
Console.ReadKey();
}
/// <summary>
/// 用于绘制飞行棋的名称
/// </summary>
static void ShowUI()
{
Console.WriteLine("*******************************************************");
Console.WriteLine("* *");
Console.WriteLine("* 骑 士 飞 行 棋 *");
Console.WriteLine("* *");
Console.WriteLine("*******************************************************");
}
static void InitialName()
{
Console.WriteLine("请输入玩家A的姓名");
names[0] = Console.ReadLine();
//判断用书输入的内容是否为空,如果为空,则让用户重新输入
while (names[0] == "")
{
Console.WriteLine("玩家A的姓名不能为空,请重新输入!");
names[0] = Console.ReadLine();
}
Console.WriteLine("请输入玩家B的姓名");
names[1] = Console.ReadLine();
//判断用户输入的内容是否为空,如果为空,则让用户重新输入
while (names[1] == "" || names[1] == names[0])
{
if (names[1] == "")
{