项目-坦克大战学习-人机ai

我们要知道,人机的移动和玩家的移动方式是一样的,所以我们可以将玩家移动代码以及检测碰撞代码移过来,唯一不同的就是人机检测到碰撞后会改变方向继续移动而不是停止

所以我们需要一个随机数使人机检测到碰撞后随机修改方向

 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值