游戏案例在面向对象程序设计教学中的应用
2016-03-22王婧
王婧
摘要:该文将案例教学与兴趣教学相结合,提出了将游戏案例应用于程序设计类课程的思路。同时也针对课程中采用的游戏案例的选取和设计进行了论述,通过实例进行了说明。
关键词:案例设计;游戏案例;整体思路
中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2016)02-0124-03
1 引言
“兴趣是最好的老师”,这句话在程序设计类课程中得到了很好的印证。程序设计类课程的内容较为枯燥,学生很难深入其中。而兴趣能够创造一个宽松愉悦的学习环境,这将成为学生积极主动学习的催化剂。学生更喜欢钻研有趣味性的事物,这能让他们很快的投入,并让他们的脑瓜更加灵活。因此,如何让学生在学习的时候产生兴趣,就成为我们老师思考和研究的重点。
一般在面向对象程序设计授课中,首先要讲解大量而繁琐的语法,而在此过程中,学生很难立刻看到自己的学习成果,因此开始就丧失了学习兴趣。面向对象程序设计属于计算机设计语言类的课程,本身具有较强的操作性、直观性和应用型,因此为了让学生能够尽快看到学习成果,而不是一直陷入语法的研究中,多数会采用案例教学法,以案例为中心来组织教学,将知识和技能融入其中,让学生在做中学,学中做,会取得更好的学习效果。这样在教学中采用的案例的设计就尤为关键。不仅要考虑案例的规模,所融入的知识点,同时也要考虑趣味性、实用性和可操作性。游戏案例教学法在案例教学法的基础上,把小游戏的程序引入课堂,作为程序教学的催化剂,帮助组织教学。让学生更快的对所学内容产生兴趣的同时,通过游戏程序的独特性,让学生在案例的阅读、思考、分析、讨论中,建立起一套适合自己的完整而又严密的逻辑思维方法和思考问题的方式,以提高学生分析问题、解决问题的能力,从而增强教学效果。
2 游戏案例的设计思路
2.1 趣味性游戏解决教学重点
结合教学的相关知识点,设计一些游戏案例。这类游戏案例要求规模一定要小,简单实用的同时又要紧扣教学内容。
案例1:猜数游戏。
功能要求:计算机产生随机数(1-100之间),猜中即胜,猜不中,提示是大了还是小了,继续猜,直至猜到,给出所用次数和评语。
流程要求:7次以内猜对的给予三星奖励,15次以内猜对的给予二星奖励,20次以内猜对的一星奖励,超过20次没有猜对的则不允许继续猜数。
这个游戏源自一档耳熟能详的综艺节目“幸运52”,因此很能引起学生的共鸣。游戏规则简单易懂,学生很容易接受。游戏实现过程中涉及的主要知识技能点包括:输入输出语句、随机数的产生、分支结构的使用、循环结构的使用。案例规模不大,代码不足三十行,却涵盖了Java语言基础语法以及三大结构语句,可以说是一个很有代表性的教学小案例。
课堂上老师带领学生分析游戏要求,设计代码流程,选择结构语句,一步一步引导学生完成案例的同时,学生掌握了相关知识,了解了程序设计的流程。
案例2:聊天机器人
要求:用面向对象的思维方式创建一款聊天机器人。机器人有自己的名字name;有目前的饥饱程度,也就是生命值fullLevel;可以打招呼(sayHello说出自己的名字);可以喂食(Eat(int foodCount));可以聊天说话(Speak(string str));可以对异常情况进行处理(喂食数量过多撑死或饿死等);有两个机器人可供选择,开始通过数字1,2来选择机器人进行聊天。
分析:
创建机器人类,该类包含姓名和生命值两个属性以及打招呼、喂食和聊天三个方法
生成两个机器人类的对象,根据用户选择,调用不同的对象的方法。
这款游戏源自目前流行的人工智能技术。很多聊天软件都有类似的功能。包括苹果的siri也是类似的智能助手。案例在实际生活中的应用让学生对其很感兴趣。课上所完成的聊天机器人较为简单,并不具备更深的智能性,但却结合了Java中最为重要的面向对象的相关知识,包括:类的创建、属性和方法的定义、类的封装、对象的生成、属性的设置和方法的调用等。
这个游戏案例用于面向对象基础单元的教学中,能够很好地激发学生的学习兴趣,并且帮助学生了解和认识面向对象的概念,通过游戏设计,将知识点串联,从而理解各个重点问题。
2.2 真实游戏平台解决教学难点
一些学生经常玩的真实的游戏平台,也可以引入教学中,帮助解决教学难点。让学生知道程序是开放的、实用的,不是封闭的、形式的。通过课上所学内容,完全可以开发出有趣、实用的程序。
在Java教学中,面向对象的封装性、继承性和多态性是教学的难点,也是学生最不容易理解和掌握的内容。而IBM公司发布的Robocode坦克机器人对战引擎则很好的容纳和体现了这些难点问题的应用。将其作为教学案例,能帮助学生很好地理解概念,掌握技巧,突破教学难点。
案例:坦克机器人大战
每个孩子,尤其是男孩子心中都有一份特殊的坦克情结。一提到坦克机器人大战,学生就会产生兴趣,跟小时候玩过的坦克游戏进行比较。给学生讲解说明,这款坦克机器人对战平台,不同于普通的坦克游戏。坦克并不是用鼠标键盘去控制,而是通过编程,赋予坦克智能,让他自己在战场上对战。激发学生的编程的欲望。使用熟悉的程序设计语言,实现自己喜欢玩的游戏,对学生来说还是很有吸引力的。在引入案例的时候,一方面要通过演示案例活跃课堂气氛,吸引学生注意力;另一方面应该强调案例的挑战性,激发学生的学习热情。
这款游戏引擎是一个游戏半成品,他提供了坦克的父类,学生可以通过学习父类,了解类结构以及封装的特点。在创建自己的坦克机器人的时候,通过类的继承,只用简单的几行代码就实现了坦克。当学生看着自己设计的坦克在战场上发射子弹的时候,无比兴奋的同时也切实地体会到了类的继承带来的好处。对坦克父类方法的重写,实现了多态。在学生完成自己坦克机器人设计和实现的过程中,学生就了解了面向对象的重要概念,熟悉了面向对象的实现方法,体会到了面向对象的编程思想。使得编写代码不再是为了交作业,而是在实现一个有趣的作品。
通过这个游戏案例的引入,使得课堂气氛变得非常活跃,学生主动学习的热情非常高。很多学生都是迫不及待的实现自己的坦克,再与其他同学的坦克对战,来检验自己的成果。
2.3 经典的综合性游戏,串联知识点,锻炼综合实践能力
经典而有趣的游戏更容易引发学生的兴趣。而这些游戏往往不是只包含几个知识和技能点,需要对知识的综合运用。
案例:贪吃蛇
贪吃蛇游戏是一款大家都耳熟能详的小游戏,简单而经典。而要实现贪吃蛇则需要一个完整的设计过程。包括应设计几个类,类之间的关系,类的属性和方法的实现,以及界面的设计,游戏关卡的设计等等。因此这是一个综合性的游戏案例。
游戏案例的兴趣是前提,分析和引导是入门,实现是关键。教师要鼓励学生去完成所给的案例。要学生开始就顺利的写出代码是很有难度的,各种各样的问题让他们无从着手。游戏程序的设计包括几个模块,模块实现的先后顺序如何,关键问题在哪里,哪些方法最适宜解决问题等等。因此教师的引导和启发就变得非常关键。例如给学生一些界面设计的参考案例,提倡个性化的设计;跟学生一起找出实现案例的关键点,一起技术攻关;与学生一起设计流程,甚至可以提供一些解决方案供参考。一步一步引导和带领学生共同完成,从而培养和锻炼学生的综合实践能力。
2.4 举一反三案例,鼓励学生独立完成,强化知识掌握
除了课堂上带领学生共同完成的案例,还可以找一些与课堂案例大同小异的游戏案例,鼓励学生独立完成。
案例:是男人就下100层
这个游戏看上去跟前面谈到的贪吃蛇游戏没有任何关系,但是两者在设计思路及实现过程上都非常类似。台阶类似于蛇身的方块,整个楼梯是由一个一个台阶组成,类似于蛇身是由一个一个方块组成。蛇吃到食物身体会增加一个方块,而小人下台阶的同时,台阶也在不断上移,也就是说在不断地增加台阶。看到这些相似点之后,学生就会猛然发现,这两款看似完全不相关的游戏,原来实现起来却如此相似。给出学生以下提示后,不妨就此收住,让学生自己进一步思考,独立完成这个举一反三的游戏案例。引入这些类似的案例,能让学生开拓眼界,善于在不同的程序中找相同,也就能够举一反三的完成更多的案例设计,有利于学生思维的提升,挖掘学生潜能。
3 结论
在面向对象程序设计课程授课中运用游戏作为教学案例,能充分调动学生学习的积极性和主动性,活跃课堂气氛,课堂教学效果也有相应的提升。但对老师却提出了更高的要求。想要让游戏案例教学真正发挥更好的效用,老师应该做到以下几点:
1)认真甄选游戏案例。案例规模、难度都要适中,要精简、有趣、实用。游戏难度过大或者操作性差,反而会起到反作用。
2)要将知识技能点有机地结合到游戏中,让学生真正在玩中学,在学中玩。就游戏讲游戏,知识点过于分散,反而会让知识体系不够系统。
3)课前做好充分准备,如何引导启发学生,可以将游戏案例做成一些半成品,让学生在此基础上完成,将游戏案例结合到课程设计中,充分发挥作用。
4)案例制作完成之后要有恰当的总结。在总结中,要揭示出游戏案例中包含的理论知识,让学生不只是完成了一个游戏的制作,还知道用了哪些知识制作的这个游戏,如何用这些知识完成其他案例的设计制作。
游戏案例法是在案例教学法的基础上,结合兴趣教学进行的一种微创新,是在新教学理念改革的前提下,确立以学生为主体,以培养学生动手能力、创新思维为基本方向的一个有效手段。案例教学法能促进教学相长,在学生的整体积极性得到提高的同时,突出教师教学实践的亮点,使教师在教学中获得充分的满足感,从而使程序教学的效能得到稳步提升。