【前言】
飞行棋这个小游戏难点在于画图和逻辑的判断,也就是玩家如何行走。下面将详细的讲解一下这个小游戏。
【正文】
一、游戏头
首先是显示游戏头,游戏一打开就要显示游戏头,玩的过程中要隐藏游戏头,等到游戏结束的时候又要显示游戏头。
/// <summary>
/// 显示游戏头
/// </summary>
public static void ShowUI()
{
Console.WriteLine(" *********************************************");
Console.WriteLine(" * *");
Console.WriteLine("* 终极骑士飞行棋 *");
Console.WriteLine(" * *");
Console.WriteLine(" *********************************************");
}
玩法规则
Console.WriteLine("对战开始……");
Console.WriteLine("{0}的士兵用A表示……", PlayerNames[0]);
Console.WriteLine("{0}的士兵用B表示……", PlayerNames[1]);
二、初始化地图
初始化地图的时候要注意游戏规则,幸运转盘、地雷、时空隧道和暂停键的位置和碰到它们的反应
/// <summary>
/// 初始化地图
/// </summary>
public static void InitMap()
{
//初始化地图
//我用0表示普通,显示给用户就是 □
//....1...幸运轮盘,显示组用户就 ◎
//....2...地雷,显示给用户就是 ☆
//....3...暂停,显示给用户就是 ▲
//....4...时空隧道,显示组用户就 卐
int[] luckyturn = {
6, 23, 40, 55, 69, 83 };//幸运轮盘◎
int[] landMine = {
5, 13, 17, 33, 38, 50, 64, 80, 94 };//地雷☆
int[] pause = {
9, 27, 60, 93 };//暂停▲
int[] timeTunnel = {
20, 25, 45, 63, 72, 88, 90 };//时空隧道卐
//把数组中下标为6, 23, 40, 55, 69, 83的地方的值改为1
for (int i = 0; i < luckyturn.Length; i++)
{
//int temp = luckyturn[i];
Map[luckyturn[i]] = 1;
}
for (int i = 0; i < landMine.Length; i++)
{
Map[landMine[i]] = 2;
}
for (int i = 0; i < pause.Length; i++)
{
Map[pause[i]] = 3;
}
for (int i = 0; i < timeTunnel.Length; i++)
{
Map[timeTunnel[i]] = 4;
}
}
三、画地图
画地图的时候需要注意一下地图上具体位置的具体图标应该是什么,要分清楚行列的位置。
当然很多代码都是重复的,可以另外重新写一个方法。
/// <summary>
/// 画地图
/// </summary>
public static void DrawMap()
{
//图例:幸运轮盘:◎ 地雷:☆ 暂停:▲ 时空隧道:卐
Console.WriteLine("图例:幸运轮盘:◎ 地雷:☆ 暂停:▲ 时空隧道:卐");
#region 画地图第一横行
DrawMapLeftToRight(0, 29);
//Console.Write(DrawStringMap(i));
#endregion
Console.WriteLine();
#region 画地图第一竖行
for (int i = 30; i <= 34