专栏首页深圳java培训深圳Java培训:游戏中寻找学习JAVA的乐趣
原创

深圳Java培训:游戏中寻找学习JAVA的乐趣

深圳Java培训:游戏中寻找学习JAVA的乐趣

游戏中寻找学习JAVA的乐趣之坦克大战系列6-API常用函数说明2

前言

本篇主要介绍RobocodeAPI中的各种事件函数的说明,便于使用函数时有更清晰的思路。

子弹事件函数

onBulletHit()

当击中对方时

public void onBulletHit(BulletHitEvent event)

当你的子弹击中对方时就会调用这个方法。如果你想在子弹击中对方时作处理的话,你应当重写这个方法

例如:

public void onBulletHit(BulletHitEvent event) {  

       out.println("I hit " + event.getName() + "!");  

   }  

onBulletHitBullet()

当子弹击中子弹

public void onBulletHitBullet(BulletHitBulletEvent event)

当你的子弹击中别人的子弹时这个方法会被调用。如果你想在此时作一些处理,你应当重写这个方法。

例如:

public void onBulletHitBullet(BulletHitBulletEvent event) {  

 out.println("I hit a bullet fired by " + event.getBullet().getName() + "!");  

}  

onBulletMissed     

当子弹未打中对方时调用

也就是说,此时你的子弹打到墙了。如果你想在此时做一些处理,你应当重写这个方法。

例如:

public void onBulletHit(BulletMissedEvent event) {  

       out.println("Drat, I missed.");  

   }  

onHitByBullet     

当自身被子弹打中时

当你的机器人被子弹击中时这个方法会被调用。如果你想在此时做一些处理,你应当重写这个方法。

例如:

public void onHitByBullet(HitByBulletEvent event) {  

       out.println(event.getRobotName() + " hit me!");  

   }  

其他事件函数

onHitRobot   

当你的机器人撞到别的机器人时,这个方法就会被调用。如果你想在此时做一些处理,你应当重写这个方法

例如:

public void onHitRobot(HitRobotEvent event) {  

if (event.getBearing() > -90 && event.getBearing() <= 90) {  

           back(100);  

       } else {  

           ahead(100);  

       }  

   }  

或者更高级一些:

public void onHitRobot(HitRobotEvent event) {  

if (event.getBearing() > -90 && event.getBearing() <= 90) {  

          setBack(100);  

      } else {  

          setAhead(100);  

      }  

  }  

onHitWall

当你的机器人撞到墙时这个事件会发生。如果你想在些时做一些处理,你应当重写这个方法。

在顶上的墙是0度,在右边的是90度,在左边的是270度,。当是这个事件也和你的面向有关,所以:turnRight (event.getBearing())调用会让你的机器人向墙垂直走

例如:

public void onHitWall(HitWallEvent event) {  

       out.println("Ouch, I hit a wall bearing " + event.getBearing() + " degrees.");  

   }  

onScannedRobot       

当你的机器人发现了其它机器人时这个方法会被调用,也就是此时你的雷达扫描到了其它的机器人。如果你想在些时做一些处理,你应当重写这个方法。

注意:几乎所有机器人都应当重写这个方法!

当有机器人进入你的雷达的范围时这个方法会被自动调用

例如:

public void onScannedRobot(ScannedRobotEvent event) { 

if (event.getDistance() < 100) {  

          fire(3);  

      } else {  

          fire(1);  

      }  

}

提示:

如果枪和雷达是对齐的(并且上一时刻也是对齐的),并且这个事件是同时发生的,并且在你调用fire() 之前没有做其它任何动作,fire()会直接向那个机器人开火。

本质上说,这意味着如你扫描到了一个机器人,并且它不动,那么就会击中它。

高级机器人不会以这个方式被帮助,它们想去检查这个事件看fire()能否击中。(也就是说,你在旋转你的枪,但当你得到这个事件的消息时,你的枪与机器人偏离了5度)。

至于战术策略如何写就看程序员了

好啦,本期内容就到这里喽,我是不会玩游戏却非得写游戏的陈老师,一起来学习JAVA吧!

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 深圳Java培训:5分钟了解折半插入排序

    折半插入排序(Binary Insertion Sort)是对直接插入排序算法的一种改进。

    深圳java培训技术
  • 深圳Java培训:游戏中寻找学习JAVA的乐趣

    本篇主要介绍RobocodeAPI中的各种常见函数的说明,便于使用函数时有更清晰的思路。

    深圳java培训技术
  • 深圳Web前端学习:5G对Web前端发展的影响--【千锋】

    5G浪潮的来临让全世界都为之关注,各个国家都在争夺它的主导权。它对软件行业影响是巨大的,深远的,甚至会导致行业的重新洗牌,和很多技术工种的兴衰。所以我们这些开发...

    深圳java培训技术
  • React基础语法06-事件对象的应用

    老规矩,先看完官方文档,记录学习笔记: 教程:https://www.runoob.com/react/react-tutorial.html 文档:htt...

    王小婷
  • Event(事件)的传播与冒泡

    特性说明和原理图: 标准浏览器和Ie9+浏览器都支持事件的冒泡和捕获,而IE8-浏览器只支持冒泡 标准和Ie9+浏览器用stopPropagation()或c...

    sam dragon
  • 分析kubernetes中的事件机制

    我们通过 kubectl describe [资源] 命令,可以在看到Event输出,并且经常依赖event进行问题定位,从event中可以分析整个POD的运行...

    silenceper
  • 第55天:简单冒泡方法原理

    事件冒泡: 当一个元素上的事件被触发的时候,比如说鼠标点击了一个按钮,同样的事件将会在那个元素的所有祖先元素中被触发。这一过程被称为事件冒泡;这个事件从原始元素...

    半指温柔乐
  • JS获取事件对象,获取事件的源对象(Firefox,IE)

    用户1258909
  • 向zepto.js学习如何手动(trigger)触发DOM事件

    最近一直在看zepto的源码,希望通过学习它掌握一些框架设计的技巧,也将很久不再拾起的js基础重新温习巩固一遍。如果你对这个系列感兴趣,欢迎点击下方地址watc...

    IMWeb前端团队
  • Cypress web自动化16-参数化,数据驱动测试案例

    自动化测试里面参数化思想是非常重要的,同一类型的测试,只需维护不同的数据就可以了。 对每组测试数据自动生成对应的测试用例,并且每个测试用例的结果互不影响,不能因...

    上海-悠悠

扫码关注云+社区

领取腾讯云代金券