Robocode游戏在Java实验教学中的应用

2009-10-26 09:34
电脑知识与技术 2009年22期
关键词:实验教学

陈 丁 梁 静

摘要:论文通过分析游戏软件在学习中的积极因素,提出一套基于Robocode的Java实验教学方案。倡导通过寓教于乐,提高学生对Java语言的应用能力和创新意识。

关键词:Robocode;Java教学;实验教学

中图分类号:G642文献标识码:A文章编号:1009-3044(2009)22-0000-00

高校实验教学在培养学生基本技能、动手能力和创新思维方面具有课堂教学所不能取代的作用。Java程序设计作为一门强调实践的课程,在其教学模式上需注意理论教育及实践教育的双重把握、不可偏废。目前Java实验内容多是按章节进行验证性实验,不能激发学生的学习兴趣,导致很多学生在做完实验后就开始聊QQ、打游戏,不再主动探索对Java语言的学习。

为克服传统Java实验教学内容的单一和枯燥,本文提出了将Robocode游戏软件引入到Java实验教学的方法:首先搭建Robocode游戏软件在Eclipse下开发、运行的实验平台;然后讲解Robocode的基本原理,学习Robocode的Java API和文献资料;最后组织学生间相互竞赛。通过运用该方法大大提高了Java课程学习的趣味性,激发了同学们的学习热情[1]。

1 计算机教学游戏在学习中的意义

一般认为,游戏对于学习来讲多是弊大于利的,我们也常看到大学生因沉迷网络游戏而引发退学的报道。但是通过对计算机游戏在教育实践中的应用进行大量的探讨和研究后,我们找到了一些通过游戏吸引学习者使用的积极因素。主要表现在以下几个方面[2]:

1) 游戏为学习者提供了一个情境氛围,让他们获得沉浸性经验。游戏情境因素具有容易识别的特征,能使学习的有效性得到很大提高。

2) 游戏提供了一个完整的、交互的虚拟情境,它能很好地激发学习者的学习兴趣。

3) 游戏拥有足够的灵活性和复杂性,能适应学习者的不同学习风格和水平。游戏把学习者放在了决策者的位置,推动学习者利用游戏活动的尝试错误来学习。

4) 游戏能为学习者提供综合性经验,培养学习者的多种技能。制作良好的游戏,通过其故事的视觉性、经验性和创造性途径,能培养学习者解决深层次问题的能力。

因此,我们完全可以利用游戏的上述特点,为教学任务设计出合适的游戏场景,来达到相应的教学目的。Robocode正是为Java趣味性编程学习而诞生。

2 Robocode在Java实验教学中的应用

2.1 Robocode介绍

Robocode是2001年7月在美国IBM的alphaWorks站点上公开的坦克机器人战斗仿真引擎。Robocode必须使用Java语言对机器人动作进行编程,为机器人设计不同的决策方案来自动指挥它运行,可以说Robocode是一种有趣的竞赛性编程。通过它可以让Java初学者掌握Java语言的继承性、多态性、事件处理机制以及Java API等。

2.2 基于Robocode的Java实验计划

授课老师可以根据实际情况在完成基本的Java实验后,分配至少10课时的上机来完成Robocode实验内容。

1) 实验一:进入Robocode的世界

在实验一中,主要任务是完成Robocode实验平台的搭建,熟悉Robocode的平台环境、帮助文档以及游戏规则,指导学生加载系统自带的坦克机器人进行对决,查看坦克机器人的源代码等,使学生对Robocode有个初步的感性认识。

Robocode的最新安装程序可以到http://robocode.sourceforge.net中进行下载。在安装和运行前,请确认系统环境已安装了Java运行环境。目前最新版的Robocode需要至少是Java 1.5.0及以上版本。安装成功后运行 Robocode 时,将看到两个相关的 GUI 窗口,这两个窗口构成了Robocode 的 IDE:战场和Robot Editor。如下图所示:

在Robot Editor中,我们可以对坦克机器人的运行代码进行编辑,不过Robocode自带的编辑器功能比较简陋,编辑、调试起来不是很方便。还好Robocode对Eclipse的支持不错,我们只需进行简单配置,就可以在Eclipse中编写我们的坦克机器人程序了(详细的配置步骤,请参见http://robowiki.net/)。

2) 实验二:开发第一辆坦克机器人

在实验二中,主要任务是指导学生在Eclipse中,开发和调试第一个自己的坦克机器人。在开发前指导教师可以首先通过分析Robocode自带的机器人(如比较典型的Corners、Craze、Walls)源代码,帮助学生理解坦克机器人的运行原理、决策机制以及相关函数的意义。开发完后,让学生把自己的机器人加载到游戏平台中,与其它机器人进行对决。通过对决可以检验自己开发的机器人是否能“机灵”地打败对手,学生也可以反复调整自己的程序来达到目的。

通过实验二,可以让学生十分熟练地使用Eclipse进行Java程序开发,帮助学生进一步理解类、对象、继承等面向对象的概念。但最关键的是,通过机器人间的反复对决,学生会发现开发一个“战无不胜”的机器人是很困难的。如何使自己的机器人更加“聪明”地判断对手的移动轨迹,躲避对手子弹等等这些问题,将激发起学生的学习热情,也为实验三的内容埋下铺垫。

3) 实验三:设计高级坦克机器人

基于实验二的问题,实验三的主要任务就是从坦克机器人的移动策略、射击策略和雷达扫描策略这三个方面进行讲解,指导学生设计出较智能的坦克机器人。指导教师可以根据本班学生的实际情况,选择性的分析国内外优秀机器人的设计策略思想。比如在移动策略中除了比较简单的圆周运动方式、随机运动方式和来回振荡运动方式等,Alisdair Owens提出了反重力运动[3],利用此方法允许你定义一些在战场上应该避开的特殊点,向较理想的位置运动;又如在射击策略中的单一瞄准算法和通用瞄准算法[4]等。

通过实验三,可以让学生学习到Java语言中的高级应用,比如抽象、多态、覆盖、重载等。指导教师可以对遗传算法、神经网络算法在Robocode中的应用进行适当介绍,扩充学生的视野,引导学生进行更深入的探索。

本次实验内容对指导教师的要求较高,需要做好充分的备课准备。关于Robocode的高级应用可以访问http://www.ibm.com/developerworks/library/ j-robotips/ index.html,在里面有其关于优秀智能机器人策略的详细讲解。

4) 实验四:坦克机器人大决战

实验四将是最激动人心的时刻,在本次实验中,学生开发的各类机器人将一决高下。首先指导教师对学生进行分组,我们以每班40名学生为例。实行“1对1”的比赛模式,最多赛三场定胜负,每场9个回合,以40进20,20进10,10进5依次进行淘汰。在最后的5强赛中,实行单循环淘汰赛制,得出最后的比赛排名。在最后,指导教师可以让进入前5强的学生讲解自己的设计思路,老师可做适当点评。

上述内容只是为大家提供一种参考方案,指导教师可以灵活地进行调整安排。总之,Robocode是一款很不错的利用游戏来学习Java编程的教学平台。

3 结论

通过使用Robocode竞赛性编程后,同学们表现出很大的学习兴趣,能利用课余查阅国内外的文献资料,分析国内外优秀机器人的设计思想,不断更新坦克机器人的策略机制。任课教师也可以根据学生的实际情况,适当引入人工智能、算法分析、游戏开发等相关知识介绍,深化学生的学习兴趣。总之,文中介绍的将Robocode游戏引入到Java实验教学中,是对教学方法多样性的有力补充,虽然它无法解决实验教学中的所有问题,但对实验教学的改进提供了另一种思路。

参考文献:

[1] 王梅.应用于教学的Java编程竞赛平台的开发[J].科技信息,2008(18):70-71.

[2] 王广新.计算机教学游戏的基本结构与特征综述[J].中国电化教育,2006(7):77-79.

[3] Owens A .Secrets from the Robocode masters: Anti-gravity movement [EB/OL].[2009-03-20].

http://www.ibm.com/developerworks/library/j-robotips/index.html.

[4] 陈静.高级瞄准策略[J].电脑报,2003(05):66-70.

猜你喜欢
实验教学
问题引导在初中化学实验教学中实践探索
关于基础教育阶段实验教学的几点看法
光反应与有机化学实验教学结合的研究
电容器的实验教学
几何体在高中数学实验教学中的应用
基于云计算的计算机实验教学探讨
高中自然地理课堂实验教学的探讨
微课在高职高专实验教学中的应用探索
综合实验教学在妇产科护理学实验教学中的应用