代码是看视频之前自己写的,所以有很多地方和老师不太一样。
投色子的时候可以让循环体中就一个玩家,通过对变量i(循环次数)的操作完成对玩家的选择。
绘制地图这里,视频的方法比较简单,我这里采用的是函数(huatu)传参的方式绘制的。
投色子的时候可以让循环体中就一个玩家,通过对变量i(循环次数)的操作完成对玩家的选择。
绘制地图这里,视频的方法比较简单,我这里采用的是函数(huatu)传参的方式绘制的。
以下就是通过循环次数来操作投色子的代码。
do
{
Console.Clear();
chu();
huatu(Map, zb[0], zb[1]);
if (rp[i % 2] != 0)
{
rp[i % 2]--;//检测上次该玩家是否踩到暂停,使用i--的目的是方便调整暂停回合数
i++;
continue;
}
sz = c.Next(1, 7);
zb[i % 2] = zb[i % 2] + sz;
Console.WriteLine("玩家{0}掷出了{1},按任意键继续",i%2+1,sz);
Console.ReadKey();
//最优先检查该次投掷后该玩家是否获得胜利
if (zb[i % 2] >= 99)
{
i++;
break;
}
Console.Clear();
chu();
huatu(Map, zb[0], zb[1]);
Console.WriteLine("按任意键继续");
Console.ReadKey();
//其次检查该玩家是否踩到另一位玩家
if(zb[i%2]==zb[(i+1)%2])
{
zb[(i + 1) % 2] = 0;
Console.Clear();
chu();
huatu(Map, zb[0], zb[1]);
Console.WriteLine("玩家{0}将玩家{1}踩回起点,按任意键继续",i%2+1,(i+1)%2+1);
Console.ReadKey();
}
//最后检查其他特殊事件
//幸运轮盘
if (Map[zb[i % 2]] == 1)
{
Console.WriteLine("玩家{0}幸运轮盘,输入1交换位置,输入2轰炸对方",i%2+1);
do
{
try
{
select = Convert.ToInt32(Console.ReadLine());
}
catch{}
if(select != 1 && select != 2)
Console.WriteLine("输入不合法,请重新输入1或者2");
} while (select != 1 && select != 2);
if (select == 1)
{
zb[i % 2] = zb[i % 2] ^ zb[(i + 1) % 2];
zb[(i + 1) % 2] = zb[i % 2] ^ zb[(i + 1) % 2];
zb[i % 2] = zb[i % 2] ^ zb[(i + 1) % 2];
}
else
{
zb[(i + 1) % 2] -= 5;
if (zb[(i + 1) % 2] < 0)
zb[(i + 1) % 2] = 0;
}
select = 0;
Console.Clear();
chu();
huatu(Map, zb[0], zb[1]);
Console.WriteLine("按任意键继续");
Console.ReadKey();
}
//地雷
if (Map[zb[i % 2]] == 2)
{
zb[i % 2] -= 5;
Console.Clear();
chu();
huatu(Map, zb[0], zb[1]);
Console.WriteLine("玩家{0}踩到地雷,退5格", i % 2 + 1);
Console.WriteLine("按任意键继续");
Console.ReadKey();
}
//暂停
if (Map[zb[i % 2]] == 3)
{
Console.WriteLine("玩家{0}悲剧了,暂停一次",i%2+1);
rp[i % 2] = 1;//这里是数字可以用来设置暂停次数
Console.WriteLine("按任意键继续");
Console.ReadKey();
}
//时空隧道
if (Map[zb[i % 2]] == 4)
{
zb[i % 2] += 10;
Console.Clear();
chu();
huatu(Map, zb[0], zb[1]);
Console.WriteLine("玩家{0}happy了,进入时空隧道,前进10格",i%2+1);
Console.WriteLine("按任意键继续");
Console.ReadKey();
}
i++;
} while (zb[0] < 99 && zb[1] < 99);
//显示胜利玩家,注意有玩家获胜以后i会加一,所以(i+1)%2代表获胜玩家的下标,再+1代表获胜玩家
Console.WriteLine("玩家{0}取得胜利",(i+1)%2+1);
Console.ReadKey();
分享自:黑马程序员论坛!黑马程序员-最专业的北京.net培训