骑士飞行棋源代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 飞行棋
{
class Program
{
#region 程序变量定义
static int[] Map = new int[100];//定义了一个100格的地图
static int[] playerPos = { 0, 0 };//记录玩家的格子数
static string[] name = new string[2];//接收玩家姓名
static Random r = new Random();//产生一个随机数
static int temp = r.Next(1, 7);//数的范围在(1<=temp<7)
static int input;//接收幸运轮盘的选择项
static string msg = "";//用于返回掷完骰子后的情况
#endregion
static void Main(string[] args)
{
#region 用户注册
ShowUI();
Console.WriteLine("请输入玩家A的姓名:");
name[0] = Console.ReadLine();
while (name[0] == "")
{
Console.WriteLine("名字不能为空,请重新输入:");
name[0] = Console.ReadLine();
}
Console.WriteLine("请输入玩家B的姓名:");
name[1] = Console.ReadLine();
while (name[1] == "" || name[1] == name[0])
{
if (name[1] == "")
{
Console.WriteLine("名字不能为空,请重新输入:");
name[1] = Console.ReadLine();
}
else
{
Console.WriteLine("您输入的名字已被玩家A【{0}】注册,请重新输入:", name[0]);
name[1] = Console.ReadLine();
}
}
#endregion
//-----------------------------------玩家准备完毕,游戏开始---------------------------------------------
#region 游戏说明
Console.Clear();
ShowUI();
Gameillustration();
Console.WriteLine("\n");
Console.WriteLine("按任意键开始游戏...");
Console.ReadKey(true);
Console.Clear();
#endregion
//--------------------------------------说明文档演示完毕------------------------------------------------
#region 正式游戏
ShowUI(); //绘制欢迎界面--
InitialMap();//初始化地图--
DrawMap();//绘制地图
Console.WriteLine();
Start();//开始游戏
#endregion
Console.ReadKey();

}
//-------------------------------------------游戏调用的函数-------------------------------------------------
#region
static void ShowUI()
{
Console.WriteLine("********************************************************************");
Console.WriteLine("* *");

Console.WriteLine("* 骑 士 飞 行 棋 *");
Console.WriteLine("* *");
Console.WriteLine("********************************************************************");
Console.WriteLine("\n");
}//欢迎界面--
static void Gameillustration()
{
Console.WriteLine(" \t\t\t游戏说明\n\n");
Console.WriteLine(" \t幸运轮盘 :1.可以和对手交换位置 2.可以轰炸对手\n");
Console.WriteLine(" \t地 雷 :踩到地雷倒退6格\n");
Console.WriteLine(" \t暂 停 :不能掷骰子\n");
Console.WriteLine(" \t时空隧道 :可以前进10格\n");
Console.WriteLine(" \t追 踩 :被踩到的退回开始位置");
}//游戏说明--
static void InitialMap()
{
int[] lunkTurn = { 6, 23, 40, 55, 69, 83 };//幸运轮盘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 < lunkTurn.Length; i++)
{
int pos = lunkTurn[i];
Map[pos] = 1;
}
for (int i = 0; i < landMine.Length; i++)
{
int pos = landMine[i];
Map[pos] = 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;
}
}//初始地图--
static void DrawMap()
{
//□◎¤▲卍
#region 地图标示简介
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("玩家A[{0}]\t\t\t\t\t\t玩家B[{1}]\n", name[0], name[1]);
Console.ForegroundColor = ConsoleColor.Cyan;
Console.Write("<>AB同位置\t");
Console.ForegroundColor = ConsoleColor.Green;
Console.Write("◎幸运轮盘\t");
Console.ForegroundColor = ConsoleColor.Yellow;
Console.Write("¤地雷 ");
Console.ForegroundColor = ConsoleColor.DarkBlue;
Console.Write("▲暂停 ");
Console.ForegroundColor = ConsoleColor.DarkCyan;
Console.WriteLine("卍时空隧道 ");
Console.WriteLine();
Console.ResetColor();
#endregion
#region 绘制地图
for (int i = 0; i < 30; i++)//画第一行
{
Judge(i);
}

Console.WriteLine();
for (int i = 30; i < 35; i++)//画右边的列
{
for (int j = 0; j < 29; j++)
{
Console.Write(" ");
}
Judge(i);
Console.WriteLine();
}
for (int i = 64; i > 34; i--)//画第二行
{
Judge(i);
}
Console.WriteLine();
for (int i = 65; i < 70; i++)//花左边的列
{
Judge(i);
for (int j = 0; j < 29; j++)
{
Console.Write(" ");
}
Console.WriteLine();
}
for (int i = 70; i < 100; i++)
{
Judge(i);
}
Console.WriteLine();
Console.ResetColor();
#endregion
}//绘制地图
static void Judge(int i)
{
if (playerPos[0] == i && playerPos[1] == i)
{
Console.ForegroundColor = ConsoleColor.Cyan;
Console.Write("<>");
}
else if (playerPos[0] == i)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.Write("A");
}
else if (playerPos[1] == i)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.Write("B");
}
else
{
switch (Map[i])
{
case 0:
Console.ForegroundColor = ConsoleColor.White;
Console.Write("□");
break;
case 1:
Console.ForegroundColor = ConsoleColor.Green;
Console.Write("◎");
break;
case 2:
Console.ForegroundColor = ConsoleColor.Yellow;
Console.Write("¤");
break;
case 3:
Console.ForegroundColor = ConsoleColor.DarkBlue;
Console.Write("▲");
break;
case 4:
Console.ForegroundColor = ConsoleColor.DarkCyan;
Console.Write("卍");
break;

}
}
}//判断i位置上的图案
static void Start()
{
while (playerPos[0] < 100 && playerPos[1] < 100)
{
#region 玩家A掷骰子
Console.WriteLine("请玩家{0}按任意键继续...", name[0]);
Console.ReadKey(true);
temp = r.Next(1, 7);
Console.WriteLine("玩家[{0}]掷出了{1}。", name[0], temp);

Console.WriteLine("请玩家{0}按任意键继续...", name[0]);
Console.ReadKey(true);
playerPos[0] += temp;
CheckPos();
GameRuleA(); //游戏规则函数调用
Console.Clear();
ShowUI();
DrawMap();
if (msg != null)
{
Console.WriteLine(msg);
}
#endregion
if (playerPos[0] >= 99)
{
break;
}
#region 玩家B掷骰子
Console.WriteLine("请玩家{0}按任意键继续...", name[1]);
Console.ReadKey(true);
temp = r.Next(1, 7);
Console.WriteLine("玩家[{0}]掷出了{1}。", name[1], temp);
Console.WriteLine("请玩家{0}按任意键继续...", name[1]);
Console.ReadKey(true);
playerPos[1] += temp;
CheckPos();
GameRuleB(); //游戏规则函数调用
Console.Clear();
ShowUI();
DrawMap();
if (msg != null)
{
Console.WriteLine(msg);
}
#endregion
if (playerPos[1] >= 99)
{
break;
}
}
Console.Clear();
ShowUI();
DrawMap();
if (playerPos[0] >= 99)
{
Console.WriteLine("{0}取得了胜利!",name[0]);
}
else
{
Console.WriteLine("{0}取得了胜利!",name[1]);
}
Console.WriteLine("游戏结束!");
Console.ReadKey(true);
}//玩家开始游戏
static void GameRuleA()
{
if (playerPos[0] == playerPos[1])
{
playerPos[1] = 0;
msg = string.Format("{0}踩着{1},{1}退回原点。", name[0], name[1]);
}
else
{
switch (Map[playerPos[0]])
{
case 0:
msg = "";
break;
case 1:
Console.WriteLine("{0}走到了幸运轮盘,请选择:",name[0]);
Console.WriteLine(" 1--交换位置 2--轰炸对方");
#region
do
{
try
{
input = int.Parse(Console.ReadLine());
if (input == 1)
{
int temp = playerPos[0];
playerPos[0] = play

erPos[1];
playerPos[1] = temp;
msg = string.Format("{0}选择了和对方交换位置。", name[0]);
break;
}
else if (input == 2)
{
playerPos[1] -= 6;
CheckPos();
msg = string.Format("{0}轰炸了{1},{1}退6格。", name[0], name[1]);
break;
}
else
{
Console.WriteLine("输入数字错误,重新输入!");
continue;
}

}
catch
{
Console.WriteLine("输入错误,重新选择!");
continue;
}
} while (true);
break;
#endregion
case 2:
playerPos[0] -= 6;
CheckPos();
msg = string.Format("{0}踩到了地雷,退6格。", name[0]);
break;
case 3:
break;
case 4:
playerPos[0] += 10;
CheckPos();
msg = string.Format("{0}进入时空隧道,进10格。", name[0]);
break;
}
}
}//游戏规则
static void GameRuleB()
{
if (playerPos[0] == playerPos[1])
{
playerPos[0] = 0;
msg = string.Format("{0}踩着{1},{1}退回原点。", name[1], name[0]);
}
else
{
switch (Map[playerPos[1]])
{
case 0:
msg = "";
break;
case 1:
Console.WriteLine("{0}你走到了幸运轮盘,请选择:",name[1]);
Console.WriteLine(" 1--交换位置 2--轰炸对方");
#region
do
{
try
{
input = int.Parse(Console.ReadLine());
if (input == 1)
{
int temp = playerPos[0];
playerPos[0] = playerPos[1];
playerPos[1] = temp;

msg = string.Format("{0}选择了和对方交换位置。", name[1]);
break;
}
else if (input == 2)
{
playerPos[0] -= 6;
CheckPos();
msg = string.Format("{0}轰炸了{1},{1}退6格。", name[1], name[0]);
break;
}
else
{
Console.WriteLine("输入数字错误,重新输入!");
continue;
}

}
catch
{
Console.WriteLine("输入错误,重新选择!");
continue;
}
} while (true);
break;
#endregion
case 2:
playerPos[1] -= 6;
CheckPos();
msg = string.Format("{0}踩到了地雷,退6格。", name[1]);
break;
case 3:
break;
case 4:
playerPos[1] += 10;
CheckPos();
msg = string.Format("{0}进入时空隧道,进10格。", name[1]);
break;
}
}
}//游戏规则
static void CheckPos()
{
for (int i = 0; i < 2; i++)
{
if (playerPos[i] > 99)
{
playerPos[i] = 99;
}
if (playerPos[i] < 0)
{
playerPos[i] = 0;
}
}
}//检查玩家位置,防止玩家越界
#endregion
}
}

相关文档
最新文档