02 AI-TANK的快速入门
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
AI-TANK的应用和方法
本文发表于程序员杂志2006年4月杂志,全面介绍了AI-TANK的应用和方法。
至今还记得进入程序设计领域第一次在屏幕上用程序语言成功输出“Hello World”的喜悦。至今还记得无数日日夜夜枯燥的代码编写。却不记得一个小小的Bug伴随着自己渡过了多少的通宵。每每灯下感叹,这些代码能是游戏就好了。
终于过了编程设计的第一关,能独立写一些程序了。却要面对外面世界无数语言的选择,因为这些选择很可能就决定了自己未来的工作,甚至幸福。然而铺天盖地的各方支持者都在自己的阵营摇旗呐喊。Java 好,C好,C++好,C#......。于是每种语言都尝试了一下,几年也就过去了,仍然分不同谁好谁不好。现在终于明白扎实的基础、精通一门足已。但心中还是偶尔会拿这些编程语言出来比比,有时还和其他阵营的高手过几招,但环境不同怎么也说不上谁写的程序更好。最后相互还是不服。
是否有一种软件能让大家在边学边玩?是否有一种软件能让各语言高手同台竞技?实现我们征服程序世界的梦想!
AI-CODE就是在这种思想是设计出来的。它以竞技游戏和比赛、任务驱动、寓教于乐的方式的方式进行学习和思维训练。打破了传统教育的模式,利用游戏的这种互动性和操作性,让使用者在玩游戏、学编程中运用知识、提高能力。并且实现了Java、C、C++、C#......等各种编程语言同台竞技。你有可能在闪躲炮弹和执行精确攻击的演练中学会数组、函数、对象、类…这个游戏即将为全世界的开发者实现这个愿望,它把游戏风潮变成了教学工具。
AI-CODE为使用者提供了一个虚拟机器人的制作环境和竞技环境。首先,使用者利用自己编程、数学、物理等相关学科知识建立一个虚拟机器人。这些知识通过图形化编写方式(机器人快车)或者纯代码编写方式(CodeCanvas)编写的机器人控制代码来体现。编写好的机器人控制代码经过编译以后,就可以在虚拟机器人运行平台(AIRobot)竞技环境下和其它的机器人拼死战斗到底。在这个过程中,为了取得胜利,您不断学习程序设计和机器人策略算法,通过学到的程序不断完善自己的机器人。在学习的同时您感到了快乐,可是在娱乐的同时您发现自己目前的知识存储不能给您更高的支持,所以为了得到更多的快乐,您又投入学习。AI-CODE就是这样一种系统,让你在玩,学习,玩,学习的循环过程中不断提高自己程序设计和策略算法设计的水平。AI-CODE 里有一些预先做好的机器人对手让你入门,但一旦您不再需要它们,就可以把您自己创建的机器人加入到正在世界范围内形成的某个联盟里去和世界最强手对阵。
AI-CODE以不同的外在表现形式与侧重点分为两大主题:侧重于教学、竞技适合中小学信息技术教育的AI-RCJ(智能足球); 侧重于程序、策略适合大中院校程序设计教育的AI-TANK(智能坦克)。下面请跟随skyala.Li 以AI-TANK为例,着手建造属于自己的、定制的、小而精悍的战斗机器人。
下载并安装AI-TNAK
您可以到网站http://***“下载中心”下载免费版安装版,如果您下载的是AI-TNAK 3.0免费版(带图形编辑器),直接点setup.exe就可安装到本地机器上。AI-CODE如果您下载的是不带图形编辑器,直接运行AI-TANK.exe。支持简体、繁体、英文三个版本,您可根据不同的地区选择不同的语言版本。
AI-TANK运行平台
AI-TANK是集虚拟机器人运行平台、机器人程序图形编辑平台、机器人程序代码编辑平台于一体的软件系统。
虚拟机器人运行平台----AIRobot
AIRobot是AI-TANK的核心平台,只有通过它您的代码才能以虚拟机器人的形象表示出来。您可在此平台下完成选择机器人、设置比赛环境等各种操作,并可在此平台下参看比赛过程和比赛结果。
虚拟机器人编辑平台----机器人快车(图形化编程平台),CodeCanvas
此平台主要用于编写机器人控制程序。其中机器人快车通过图形化的编程方式,使用户可以方便,快速的建立起自己的机器人,给入门用户提供了极大的控制方便。而CodeCanvas是程序代码编辑器,用户通过手工编写代码来生成机器人程序,给中高级用户提供了更大的灵活性。
CodeCanvas
机器人快车
快速体验
在开始编写程序之前,我们来体验一场机器人比赛。真正感受AI-CODE给我们带来的无穷魅力,也借此体验了解虚拟动作平台-AIRobot下的一些操作。
运行AI-TANK,选择“比赛”->“新建”,弹出“新建比赛”对话框,在“机器人选择”页上,先选择包“Javabook”,然后选择机器人“Walls”,然后按“添加”按钮,这样机器人“Walls”就被选择为战斗机器人了。用同样的方法添加机器人“PatternFire”。点击“完成”按钮运行比赛,见下图。注:AIRobot 是以Java为开发基础,所以用到了包的概念,即机器人存入的目录。
这样机器人就会按默认的规则比赛。好好欣赏你这一小段时间的操作果实吧,是不是手马上痒了,想自己写个机器人试一试了,别急,我们将在后续的章节中陆续讲解机器人的编写和所需的相关知识。
AI-TANK 各种参数
机器人结构
机器人有两个部分组成:机身和炮管。这里要注意的是这两部分的控制是独立的,且它们的转动结果不会相互影响。举个例子:假设当前炮管的方向为0,机身的方向也为0。当我们用机身控制模块使机身的方向变为10时,炮管此时的方向仍为0,并不会随着机身的转动而转动。机器人本身就是有大小的,并不是一点。无论机器人外观图片怎样,在碰撞、中弹监测中机器人都视为直径为20系统单位长度的圆。在机器人运算中都是以中心点(圆心)来运算的。
坐标系统
AI-TANK的坐标系统是一个标准的笛卡尔坐标,战场地图的左下角坐标为(0,0),右下角为(地图宽,0),左上角为(0,地图高),右上角为(地图宽,地图高),场地中水平向右为0度方向,水平向上为90度方向等。如下图:
系统时钟
在现实生活中有一个时钟的概念,同样,在AI-TANK中也有一个时钟的概念,称为系统时钟。在AI-TANK中,系统单位时间指系统战斗中计时的度量单位,其意义为虚拟系统中的最小单位时间,一个时钟周期可以看成为现实世界中的一秒也完全可以。例如设定机器人转动速度为10度/系统单位时间,那么