今天学习了相应的视频后,仿造写了一个飞行棋。
首先,飞行棋要具有以下基本功能。
输入两个玩家的名字,代表玩家A和玩家B。A和B互相掷骰子,根据掷的点数进行行动,相应的行动在棋盘要实时体现出来,棋盘上有幸运轮盘,地雷,时空隧道,暂停等几个图标,当走到相应的图标时,执行不同的选择。
幸运轮盘:可以选择轰炸对方(退6格)或者交换位置
地雷:后退十格
暂停:三回合不能掷骰子
时空隧道:前进十格
当任意一方先到一百格的时候,即为获胜。
代码可以大概的分为两个部分,第一个部分是界面及用户和地图的绘制。
代码如下:
static int[] playerpost = { 0, 0 };//初始化玩家位置,playerpost【0】存玩家A的位置,【1】存B的位置
static int[] num = new int[100];//数组内的一百个元素代表100个棋盘的格
static void Main(string[] args)
{
UI.showUI();//调用绘制界面的方法
string[] name = new string[2];//建立一个存储玩家名字的数组
Console.WriteLine("请输入玩家A的名字");//请玩家输入名字
name[0] = Console.ReadLine();
while (name[0] == "")
{
Console.WriteLine("玩家A的名字不能为空?");//如果输入为空,就提示不能为空
name[0] = Console.ReadLine();//把玩家的输入赋给name【0】
}
Console.WriteLine("请输入玩家B的名字");//让玩家B也输入名字
name[1] = Console.ReadLine();
while (name[1] == "" || name[1] == name[0])
{
if (name[1] == "")
{
Console.WriteLine("玩家B的名字不能为空?");//如果输入为空或者和玩家A一样 那就提示重新输入
}
else
{
Console.WriteLine("玩家A和玩家B的名字不能重复");
}
name[1] = Console.ReadLine();
}
Console.Clear();
UI.showUI();
Console.WriteLine("对战开始。。。。。");
Console.WriteLine("玩家{0}用A来表示", name[0]);//清屏,绘制界面并给用户游戏提示
Console.WriteLine("玩家{0}用B来表示", name[1]);
Console.WriteLine("如果当前A和B的位置重合,那么用<>来表示");
huitu();
drowmap();
Console.WriteLine();
Console.WriteLine("游戏开始");
while (playerpost[0] < 99 && playerpost[1] < 99)//玩家A掷骰子
{
//玩家A掷骰子
#region
Console.WriteLine();
Console.WriteLine("{0}按任意键掷骰子", name[0]);
Console.ReadKey(true);
int b = Class1.shaizi();
Console.WriteLine("{0}掷出了{1}点", name[0], b);
Console.WriteLine("按任意键行动");
Console.ReadKey(true);
playerpost[0] += b;
Console.WriteLine();
if (playerpost[0] == playerpost[1])
{
Console.WriteLine("{0}踩到玩家{1}了,{2}退回起点", name[0], name[1], name[1]);
playerpost[1] = 0;
Console.Clear();
drowmap();
}
else
{
switch (num[playerpost[0]])
{
case 0:
break;
case 1:
Console.Clear();
drowmap();
Console.WriteLine("你走到了幸运轮盘");
Console.WriteLine("请选择1---交换位置,2---轰炸对方");
string ss = Console.ReadLine();
if (ss == "1")
{
int f = playerpost[0];
playerpost[0] = playerpost[1];
playerpost[1] = f;
}
if (ss == "2")
{
playerpost[1] = playerpost[1] - 10;
}
checks();
//幸运轮盘
break;
case 2:
Console.Clear();
drowmap();
Console.WriteLine("你踩到了地雷后退6步");
playerpost[0] = playerpost[0] - 6;
checks();
//地雷
break;
case 3:
//暂停
break;
case 4:
Console.Clear();
drowmap();
Console.WriteLine("你走到了时空隧道,真爽啊,进十个格");
playerpost[0] = playerpost[0] + 10;
//时空隧道
break;
}
Console.Clear();
drowmap();
Console.WriteLine();
Console.WriteLine("{0}掷出了{1}", name[0], b);
Console.WriteLine("{0}当前位置是{1},{2}当前位置是{3}", name[0], playerpost[0], name[1], playerpost[1]);
#endregion
//玩家B掷骰子
if (playerpost[0] >= 99)
{
break;
}
#region
//判断显示A的点数并且判断A是不是踩到B
Console.WriteLine();
Console.WriteLine("{0}按任意键掷骰子", name[1]);
Console.ReadKey(true);
int a = Class1.shaizi();
playerpost[1] += a;
Console.WriteLine("{0}掷出了{1}点", name[1], a);
Console.WriteLine();
drowmap();
if (playerpost[1] == playerpost[0])
{
Console.WriteLine("{0}踩到玩家{1}了,{2}退回起点", name[1], name[0], name[0]);
playerpost[0] = 0;
}
else
{
switch (num[playerpost[1]])
{
case 0:
break;
case 1:
Console.Clear();
drowmap();
Console.WriteLine("你走到了幸运轮盘");
Console.WriteLine("请选择1---交换位置,2---轰炸对方");
string ss = Console.ReadLine();
if (ss == "1")
{
int f = playerpost[1];
playerpost[1] = playerpost[0];
playerpost[0] = f;
}
if (ss == "2")
{
playerpost[0] = playerpost[0] - 10;
}
checks();
//幸运轮盘
break;
case 2:
Console.Clear();
drowmap();
Console.WriteLine("你踩到了地雷后退6步");
playerpost[1] = playerpost[1] - 6;
checks();
//地雷
break;
case 3:
//暂停
break;
case 4:
Console.Clear();
drowmap();
Console.WriteLine("你走到了时空隧道,真爽啊,进十个格");
playerpost[1] = playerpost[1] + 10;
//时空隧道
break;
}
Console.Clear();
drowmap();
Console.WriteLine("{0}掷出了{1}", name[1], b);
Console.WriteLine("{0}当前位置是{1},{2}当前位置是{3}", name[0], playerpost[0], name[1], playerpost[1]);
#endregion
}
}
}
Console.Clear();
drowmap();
if (playerpost[0] >= 99)//判断是否胜利
{
Console.WriteLine("{0}胜利了,游戏结束", name[0]);
}
else
{
Console.WriteLine("{0}胜利了,游戏结束", name[1]);
}
Console.ReadKey();
}