机器学习特征扩展方式_可扩展/可重复使用的机器人

我的第一个机器人是作为一个大类文件编写的。 最初,这种方法效果很好,但是随着我在机器人中添加更多智能,它逐渐变得难以管理。 我很快意识到,如果我想与顶级机器人作战,我将不得不想出一个更好的设计。

我想出的解决方案是将机器人分解为可重复使用的模块化部件,每个部件管理着机器人行为的不同方面。 我每个人都创建了一个班级来控制运动,雷达,枪支和瞄准。 我创建了用于跟踪敌方机器人信息的类和用于存储所有敌方机器人信息的类。 紧接着其他课程。

我编写每个类的目的是使它们尽可能独立,因此我可以在不同的机器人中重用它们,或者更改主要机器人类的总体设计,而不必重写扫描,移动,瞄准和其他功能。

即使采用这种模块化设计,仍然有太多代码使主要的机器人类文件混乱。 很大一部分代码将各种模块简单地编织在一起,并且掩盖了机器人的实际操作。

解决方案? 我创建了一个名为AbstractBot的Abstract机器人类,以隐藏编织代码,标准初始化和其他令人讨厌的细节。

AbstractBot类具有几种有用的方法,这些方法可以简化雷达的操作,移动,目标选择,瞄准,发射等操作。 现在,无需编写代码来评估所有可能的目标,而是选择最佳目标,打开雷达,计算要使用的能量,确定要执行的动作等等,我只需扩展AbstractBot类并编写类似以下代码:

EnemyBot target = pickTarget();
scan(target);
ram(target);
blast(target);

或像这样:

EnemyBot target = pickTarget();
scan(rammingBot);
evadeRam(rammingBot);
aimAndShoot(target);

很明显,机器人是做什么的,而不是如何做到的。 这些细节方便地隐藏在AbstractBot和其他控制雷达,移动,目标选择,发射等的类中。 该代码更容易阅读,因此更容易更改。 任务完成。 现在我只需要专注于击败铁血战士!


翻译自: https://www.ibm.com/developerworks/java/library/j-tipreuse/index.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值