黑马程序员_骑士飞行棋学习

发表于:2014-7-22 09:50

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:aipeng    来源:51Testing软件测试网采编

分享:
  2.绘制图形时,我们是一行一行的绘制图形,找到每行的开始编号和结束编号,通过遍历map数组进行绘制,绘制的主要逻辑代码如下:
  在绘制过程中,我们应先考虑玩家A或B的位置,然后根据关卡进行输出结果:
/// <summary>
/// 设置每个位置的图形
/// </summary>
/// <param name="i"></param>
/// <returns></returns>
static string GetMapString(int i)
{
string result = "";
if (playerPos[0] == i && playerPos[1] == i)
{
Console.ForegroundColor = ConsoleColor.DarkCyan;
result = "<>";
}
else if (playerPos[0] == i)
{
Console.ForegroundColor = ConsoleColor.DarkCyan;
result = "A";
}
else if (playerPos[1] == i)
{
Console.ForegroundColor = ConsoleColor.DarkCyan;
result = "B";
}
else
{
switch (map[i])
{
case 0:
Console.ForegroundColor = ConsoleColor.White;
result = "□";
break;
case 1:
Console.ForegroundColor = ConsoleColor.Green;
result = "◎";
break;
case 2:
Console.ForegroundColor = ConsoleColor.Red;
result = "★";
break;
case 3:
Console.ForegroundColor = ConsoleColor.Yellow;
result = "▲";
break;
case 4:
Console.ForegroundColor = ConsoleColor.Magenta;
result = "卐";
break;
}
}
return result;
}
  3.最后要考虑的是玩家A和B的行动如何进行代码的实现,
  具体的代码实现如下:
/// <summary>
/// 执行AB动作
/// </summary>
/// <param name="playernumber"></param>
static void Action(int playernumber)
{
#region 玩家掷骰子
Random rand = new Random();   //产生随机数
int step = 0;  //存储临时产生的随机数
string msg = "";   //关卡提示消息
Console.WriteLine("{0}按任意键开始掷骰子", players[playernumber]);
ConsoleKeyInfo rec = Console.ReadKey(true);
step = rand.Next(1, 7);
msg = "";
if (rec.Key == ConsoleKey.Backspace && (rec.Modifiers == ConsoleModifiers.Shift|rec.Modifiers == ConsoleModifiers.Control))
{
ConsoleKeyInfo rec2 = Console.ReadKey(true);
if (rec2.Key == ConsoleKey.Tab)
{
step = 30;
}
}
Console.WriteLine("{0}掷出了{1}", players[playernumber], step);
Console.WriteLine("按任意键进行行动........");
Console.ReadKey(true);
playerPos[playernumber] = playerPos[playernumber] + step;
CheckPos();
//玩家A踩到了玩家B,B返回原点
if (playerPos[playernumber] == playerPos[1 - playernumber])
{
playerPos[1 - playernumber] = 0;
msg = string.Format("{0}踩到了{1},{1}退回原点", players[playernumber], players[1 - playernumber]);
}
else   //没踩到的时候判断是否有其他的关卡
{
switch (map[playerPos[playernumber]])
{
case 0:
//普通
break;
case 1:
//幸运轮盘
Console.Clear();
DrawMap();
Console.WriteLine("你走到了幸运轮盘,请选择运气:");
Console.WriteLine("1---交换位置  2---轰炸对方");
int userSelect = ReadInt(1, 2);
if (userSelect == 1)
{
playerPos[playernumber] = playerPos[playernumber] - playerPos[1 - playernumber];
playerPos[1 - playernumber] = playerPos[1 - playernumber] + playerPos[playernumber];
playerPos[playernumber] = playerPos[1 - playernumber] - playerPos[playernumber];
msg = string.Format("{0}选择了交换位置", players[playernumber]);
}
else
{
//轰炸
playerPos[1] -= 6;
msg = string.Format("{0}轰炸了{1},{1}退6格", players[playernumber], players[1 - playernumber]);
}
break;
case 2:
//地雷
playerPos[0] -= 6;
msg = string.Format("{0}踩到了地雷,{0}退6格", players[playernumber]);
break;
case 3:
//暂停
isStop[0] = true;
msg = string.Format("{0}走到了暂停", players[playernumber]);
break;
case 4:
//时空隧道
playerPos[0] += 10;
msg = string.Format("{0}进入时空隧道,爽死了,{0}前进10格", players[playernumber]);
break;
}
}
CheckPos();
Console.Clear();
DrawMap();
Console.WriteLine();
if (msg != "")
{
Console.WriteLine(msg);
}
Console.WriteLine("\n{0}掷出了{1},行动完成", players[playernumber], step);
Console.WriteLine("{0}的位置为{1}", players[playernumber], playerPos[playernumber] + 1);
Console.WriteLine("{0}的位置为{1}", players[1 - playernumber], playerPos[1 - playernumber] + 1);
#endregion
}
32/3<123>
精选软件测试好文,快来阅读吧~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号