基于互联网的课程教学
摘要:为改进Java课程教学效果,提出基于互联网的Java课程教学模型,通过Java课程设计,介绍基于互联网的Java课程教学模式,阐述以学生为主体的行动导向教学理念。借助Robocode平台,采用任务驱动式教学法,激励学生的学习热情,提高其编程能力。
关键词:Java教学实践平台;Robocode;Java课程教学;基于互联网的教学模型
1、Java课程的传统教学
目前,许多院校仍采用传统方式进行Java课程教学。传统教学方式通过概念与理论知识讲解来介绍Java程序编写案例,让学生进行Java程序编写练习,实施Java程序设计项目,通过该教学过程使学生掌握Java编程技术。但在实际教学中学生已不能适应这一教学过程,尤其是职业院校的学生,对Java概念和理论知识不理解,无法跟上Java编程案例教学进度,无法参与项目实践,学生失去兴趣,最终放弃Java程序设计课程。
基于学生的实际情况和课程特点及教学环境,改变传统教学方式,采用任务驱动教学,以学生为主体,提高教学实效。Java课程的传统教学改革势在必行。
2、基于互联网的Java课程教学模型
为体现以学生为主体的教学过程,笔者所在团队设计了基于互联网的Java课程教学模型,如图1所示。
该教学模型阐述教学过程的5个环节。(1)布置学习任务,通过互联网将学习任务向学生展示,提供相关参考资料和资料索引。(2)设计战车改进方案,学生根据任务书要求和参考资料通过Roboeode平台设计战车及改进方案。(3)实现改进方案,根据设计完成的改进方案,采用Roboeode平台提供的参数,编写Java代码实现设计方案。(4)检验、测试程序模型,通过Java代码编写,将制作完成的坦克模型程序在互联网上进行测试,检验战车模型的性能是否提高。(5)展示与讨论战车程序的改进效果。
3、Robocode平台介绍
Roboeode平台是2001年IBM公司在Web-AlphaWorks上发布的坦克机器人战斗仿真程序引擎,是MatNelson利用Java程序语言专为Java程序员设计的游戏半成品。与由键盘、鼠标控制的游戏不同,参赛者必须利用Java语言对机器人程序模型编程,通过编程设计实现智能操控。
Robocode平台成为从初学者到高级黑客程序开发者都可以参与的娱乐活动。初级Java程序员可学习基础程序语言,如调用API代码、阅读Javadoc、内部类、事件处理等。高级开发者可以在构建“最优品种”的软件机器人全球竞赛中提高其编程技巧。
Roboeode平台的教育特性被世界诸多从事Java程序教学的人员发掘利用,笔者在德国亲身体验了Java程序设计语言课程利用Robocode平台的教学方法。在网络上Robocode用户组、讨论列表、FAQ和Webring随处可见。Robocode为学生与Java工程师提供简便、有趣的游戏教学方式,释放他们的创造力。Robocode平台的出现给枯燥的Java编程学习注入了动力与激情,使学生在娱乐的同时提高Java技术。
我国Java-Robocode协会在湖南师范大学发起成立,2008年举办了湖南省Java-Robocode机器人大赛。我国高校教师逐渐开始采用Robocode平台进行Java课程教学,但为数不多。我国高校教师对Robocode平台的教学研究还远落后于国际水平。
4、Java课程的教学设计
通过Robocode平台学习Java,是非常有效的教学方法,该方法符合行动导向的教学理念,通过设计Java课程,介绍Java程序设计如何采用Robocode平台实施教学。
4.1 课程任务与环境要求
课程任务目标是调动学生对该课程的兴趣,学生能够独立创建机器人,学会调用RobotEditor和compiler程序,通过编写Java程序语言移动机器人、炮和雷达,并能够处理机器人避障、雷达目标出现、击中目标、自身中弹等事件。
软件和硬件环境要求,PC网络系统,JavaVM(JDK 1.3.x)、Robocode 1.6.2、Intemet可链接Robocode Battle online。
4.2 模型观摩与程序设计
教师通过Java编程指挥机器人的动作,让学生看到采用Java编程控制机器人并不难。通过编程演示创建战车的操作,使学生认识到自己可以通过Java编程创建战车并改变其战斗力,增强学生对Java编程的信心。
让学生设计自己的战车并能够初步战斗,包括行进、寻找目标、旋转火炮、射击、避障等。创建机器人,启动Robot Editor选择File-New-Robot,系统提示输入机器人名称,该名称将成为Java类名,可在提示符处输入KKStraight。下一步系统提示输入数据包前缀,它是Java文件的数据包名称,可在该提示符处输入KK。此时Robot Editor会显示机器人程序模型需要编写的Java程序代码。学生使用run、while语句,参照程序范例修改机器人程序代码、参数或采用程序代码缺省值,最后在Robot Editor菜单上选择Compiler-Compile对代码进行编译。
4.3 检验程序模型
测试创建完成的机器人程序模型。切换到主程序,选择程序菜单上的Battle-New,将机器人KKStraight添加到平台中,观察该模型的战斗过程。
通过Java程序代码tumRight(double degree)和tumLeft(double degree)移动机器人,使机器人转过指定角度。ahead(double distance)和back(double distance)使机器人移动到指定的像素点距离,以上方法在机器人遇到障碍物时即告完成。 转动炮和雷达,通过程序代码atrnGunRight(double degree)和tumGtmLe(double degree)使炮可以独立于坦克车的方向转动。ttmiRadarRight(double degree)和tumRadarLeff(double’degree)使雷达独立转动。
射击,fire(double power)和fireBuilet(doublepower)用来发射指定能量的炮弹。调用fireBulletO程序返回Robocode Bullet对象,程序提取一个引用,该引用可以用于高级机器人。
获取关于机器人的信息,getXO和getYO可以捕捉到机器人当前的坐标。getHeadingO、getGunHeadingO和getRadarHeadingO可以得出坦克车、炮或雷达当前的方向,该方向以角度表示。getBattleFieldWidtla0和getBattleFieldHeightO可以得到当前这一回合的战场尺寸。
至此,实现了Java程序代码的功能,形成战车程序模型,随着编程能力的不断提高,学生会逐渐提高战车程序模型的战斗力。
4.4 改进程序模型
处理机器人遇到障碍物、雷达目标出现、击中目标、自身中弹等事件;是改进模型最常见的方法。
当机器人在移动或转动时,雷达一直处于激活状态,如果雷达检测到有机器人在其范围内,就会触发事件。基本的Robot类中包括了所有这些事件的缺省处理程序。下面是一些较为常用的事件程序代码:
当雷达检测到机器人时,调用Scanned-RobotBvent通过覆盖onScarmed.Robot( )进行处理。当机器人被炮弹击中时,调用HitByBulletEvent通过覆盖onHitByBuUe( )进行处理。当机器人击中其他机器人时,调用HitRobotEvent通过覆盖onHitRobotO进行处理。当机器人遇到障碍,调用HitWallEvent通过覆盖onHitWall( )进行处理;所有这些事件、方法均通过Java编程对机器人的动作进行控制,学生熟练掌握Java程序代码的功能作用,提高自身Java编程技能。
4.5 展示与评价
教师审核学生的成果,通过鼓励与评价引导学生,让有进步的学生展示他们的战车程序模型,讲解他们采用的编程方法、程序模型改进与设计思路,让大家分享其成果,彼此交流。
5、结语
随着社会发展,科技进步将带来许多新的教学方法,基于互联网的Robocode平台为Java课程教学提供了有效的教学方法,该方法激发了学生的学习热情,培养了学生的Java编程能力、规划能力和思维能力。国内一些院校陆续开始使用该方法实施Java教学,国际上可用于c++和Dot Net教学的新平台或Robocode平台扩展正在发展。基于互联网的课程教学正在迈上新台阶。