我们要知道,人机的移动和玩家的移动方式是一样的,所以我们可以将玩家移动代码以及检测碰撞代码移过来,唯一不同的就是人机检测到碰撞后会改变方向继续移动而不是停止
所以我们需要一个随机数使人机检测到碰撞后随机修改方向
Random rd = new Random();
然后将方向的meiju类型给一个int类型
enum fangxiang
{
Up=1,
Down=2,
Left=3,
Right=4//方便随机数设置方向
}
这样随机数是int类型方便强制类型转换为枚举类型
设置一个方向转换方法
private void gaibianfangxiang()//发生碰撞改变方向
{
fangxiang fx=(fangxiang)rd.Next(1, 5);
if (fx == Fangxiang)
{
fx = (fangxiang)rd.Next(1, 5);//强制类型转换
}
Fangxiang = fx;
}
在方法中首先我们定义一个新的方向变量用来存储改变后的方向
fangxiang fx=(fangxiang)rd.Next(1, 5);//强制类型转换随机数1到5(不包含5)
然后检测转换后的方向与原方向是否相等
if (fx == Fangxiang)
{
fx = (fangxiang)rd.Next(1, 5);//强制类型转换
}
Fangxiang = fx;
如果相等就再次调用随机数,反之就将人机方向转换为转换后的方向
将移动固定为true