徐婉珍,李 强,魏菊霞
(广东东软学院 计算机科学与技术系,广东 佛山 528200)
在游戏开发实践中培养程序设计能力
徐婉珍,李 强,魏菊霞
(广东东软学院 计算机科学与技术系,广东 佛山 528200)
程序设计能力是软件工程专业学生最基本的专业能力,如何有效地提高学生分析和解决问题的能力,是实践训练中亟须解决的问题。文章通过在实践学期对软件工程专业移动方向学生进行开发实践,探讨基于Android的小型游戏开发对学生程序设计能力的培养和提高所起的作用,并提出今后可能的改进方向。
程序设计能力;游戏开发;教学改革;面向对象
随着移动互联网和通信技术的飞速发展,智能手机、平板电脑等移动终端得到了极大的普及,基于各种平台的移动App也如雨后春笋般出现,各大高校软件工程专业也出现了面向移动开发的一系列课程。对计算机软件工程专业学生而言,程序设计能力是其毕业后能顺利就业于行业岗位的立足根本[1],移动方向学生也不例外。由于移动App与生活密切相关,不少学生在入学时有着浓厚的学习兴趣,但现实与理想之间往往存在差距。一年级的学生学习了Java程序设计和Android程序设计两门与程序设计相关的课程,但大部分学生的现状不尽如人意。
(1)只掌握了语言中基本的语法格式,未真正理解各种语句的作用,无法灵活运用;
(2)没有透彻理解面向对象的概念及思想,无法在实际问题中运用面向对象思想。
(3)当遇到实际问题时,只能跟随教师的思路走,但自身不具备分析问题的能力。
这些问题不仅会对其后续专业课程的学习造成负面影响,而且极大地影响了学生的学习信心,使其对自己的专业学习能力产生怀疑。如何在短时间内提升学生分析问题的能力、增强其程序设计的能力,成为教学工作中亟须解决的问题,也是实践教学改革的重点所在。
为加强学生的综合实践能力,学院把一个学年分成3个学期,在秋、春两个传统的教学学期结束后专门安排了1个小学期用于实践教学。对软件工程移动方向低年级学生来说,充分利用实践学期,引导和培养分析问题能力,巩固和加强程序设计能力,增强对专业学习的信心,是该实践学期的教学目标。软件工程专业正在进行一系列教学改革,并确立了低年级以基本程序设计能力为重点培养目标的原则。吴文虎教授曾说:“教学设计中切入点很重要[2]。”那么对实践训练而言,选择什么项目进行训练,就如同一堂课的切入点一样重要。经过综合考虑,课程组在实践学期为移动方向学生选择了基于Java语言的Android游戏开发作为实践训练项目。
2.1 选题理由
随着智能手机的普及,手机游戏成为人们喜爱的休闲娱乐活动之一。选取Android手机游戏的开发项目作为实践学期的实践项目,主要基于以下几方面因素:
(1)手机游戏与学生的课余生活联系比较密切,容易激发学生的学习兴趣;
(2)基于Java的手机游戏开发,将充分体现Java面向对象的特点,通过开发实践,可对面向对象的分析和设计有更为感性的认识;
(3)选择合适的小游戏,开发中涉及的技术难度基本符合学生目前所学的知识,但又能学习到一些新的知识点,使学生既有巩固亦有提高;
(4)通过对问题的引导分析,可逐步提高学生分析问题的能力;
(5)后继课程中有基于游戏引擎的开发课程,游戏开发的实践可增强学生对后续课程的学习动力。
2.2 培养目标
开发小型游戏可以使学生在知识与能力两方面都得到提高。
1)应熟练掌握的知识点。
(1)程序设计语言基础;
(2)Android图形开发基础;
(3)多线程的概念与运用。
2)重点培养的专业能力。
(1)逻辑思维能力;
(2)理解面向对象的思想及设计方法,采用OO思想进行分析与设计的能力;
(3)自主分析与解决问题的能力。
2.3 实施方案
经过对开发量、复杂性、技术点、学生现状等方面的综合考虑,最后确定了以推箱子、飞机大战、贪吃蛇等经典小游戏作为训练项目供学生选取。
2.3.1前期技术培训
在项目展开前期,首先对学生进行相关技术要点的培训,包括Android图形开发基础(包含使用Canvas、Paint类绘制图形、图像、文字等)、自定义的View组件、碰撞检测方法、多线程的概念及使用等。
2.3.2分阶段引导学生进行问题分析
当学生熟练掌握相关技术点后,首先要求学生熟悉自己要开发的游戏,通过多次试玩游戏,在玩的过程中体会和思考设计思路。
当学生充分了解了游戏的规则、内容后,针对不同游戏,提出不同问题,引导学生分析所选游戏的实现要点。
例如,对于推箱子游戏,可采用什么形式存储某一关的地图?如何绘制与地图对应的图形界面?如何判断一个箱子是否能推动?如何判断已经通关?
对于贪吃蛇游戏,如何记录蛇头和蛇身的位置?当改变方向时,蛇头与蛇身应作何变化?当吃到食物后,如何将蛇身加长?提示学生可使用链表实现。
在3个游戏中,飞机大战游戏最能体现面向对象的程序设计思想。要求学生思考的问题有:该游戏中能看到哪些物体?应设计哪些类?如何实现界面上多架敌机、多颗子弹的绘制?
2.3.3版本升级式实现目标
为了使不同层次的学生都有较容易实现的目标,课程组对不同的游戏项目设计出实现程度不同的版本,要求学生至少实现包含基本功能的最低版本,但可根据自己的能力继续实现下一版本的要求。
以飞机大战游戏为例,各版本的功能要求如下。
1)版本1.0。
要求实现一架敌机随着时间的推移自动向下移动,并每隔一定的时间发射一颗子弹,玩家飞机能随触屏手势移动并发射子弹,可判断玩家子弹是否击中敌机,可判断敌机子弹是否击中玩家,当玩家被击中一定次数后,游戏结束。
2)版本2.0。
除具备1.0的功能外,可在随机位置上产生多架敌机,玩家有得分统计及当前生命值统计,并将数据显示在界面上。
3)版本3.0。
为游戏增加得分排行榜功能,有能力的学生还可添加音效等其他功能。
2.3.4过程考核管理
考核方式的改革也是教学改革的重要方面。作为一门实践课程,应更加重视过程的管理。在实践的过程中,要求学生小组内部互检,以学习小组的形式汇报组员每周的进度,而指导教师进行一定比例的抽查,以点面结合的形式全程掌握学生的开发进度,形成每一阶段的过程数据。
考虑到实践的重点是培养学生分析问题的能力和程序设计的能力,为避免使学生提交的文档流于形式,我们采取了“重代码轻文档”的原则,并未要求学生按周提交报告,仅要求在实践结束时提交一份项目实践报告,但该报告应真实地体现从总体设计、详细设计、关键算法分析到实现、测试的全过程。
学期末每个学生将介绍和演示其作品,并表彰其中的优秀作品。
实施方案是后期实践工作的指导纲要,在项目实施过程中,仍应将具体的技能点进一步细化,并结合学生的实际问题给予引导、讲解。
以飞机大战游戏的开发为例,除前期提供必要的技术培训外,重点是分析该游戏的实现思路。
首先请学生熟悉要开发的游戏,并搜集与之相关的素材。
其次,在技术培训阶段,采取知识讲解与问题分析相结合的形式,按以下步骤实施。
(1)Android中的图形绘制,演示如何通过Canvas类、Paint类、自定义的View组件实现图形的绘制,并要求学生在界面上绘制背景和一架敌机。
(2)了解多线程的概念和线程的定义与使用,演示如何使敌机随时间的推移向下移动,并要求学生自行实现。同时,请学生考虑如何通过线程使敌机每隔1秒产生一颗子弹且逐步下移。
(3)要求学生绘制出玩家飞机,然后讲解如何响应触屏事件(onTouchEvent),演示玩家飞机随着手势滑动的方向移动,并要求学生体验模拟机和真机的区别,讨论细节的处理。
(4)讲解碰撞检测的基本原理,要求学生思考并实现敌机和玩家飞机的碰撞检测。
经过以上培训,学生已经掌握了完成基本功能所需的技术点,此时可以要求学生分析应设计哪些类,并完成版本1.0。
在开发1.0版本时,引导学生思考下面的问题:界面上有敌机、玩家飞机、敌机子弹或玩家子弹等物体,应设计哪些类?这些类有哪些相同的属性和需要实现的功能(即方法)?例如是否都需要有平面坐标、对应的图像等属性,且都应具有绘制自身、判断是否超界等功能,那么是否可以设计一个父类实现这些共性?
在开发2.0版本时,引导学生思考:如何在界面上显示多架敌机?提示学生可使用动态数组类Vector,请学生自行复习该类的常用方法add、remove等,并将其运用在程序开发中。
在开发3.0版本时,提醒学生复习Android开发中存储数据的几种方式,并选取合适的方式存储玩家成绩。
在实践学期选用游戏开发作为实践项目后,取得了一定的成效,主要表现为:
(1)由于选用的游戏流行度高且难度适中,学生开发的积极性比做其他项目更高。
(2)学生普遍反映对面向对象的封装、继承等概念有了更感性的认识和理解。
(3)较完整地了解了项目的整体开发过程。
(4)提高了自行解决问题的能力, 不少学生都能主动利用互联网进行自主学习。
(5)更熟练地使用开发工具。
当然,通过项目的实施,我们发现仍存在一些问题。
(1)部分学生逻辑思维能力较差,即使教师引导,也无法理清实现的思路。针对这部分学生,可考虑进行更为细致的任务分解,更深入地引导学生进行任务的分析。
(2)过程考核管理需要对每名学生每一阶段的情况有具体的了解,但因为人数较多,全面的了解存在一定的困难,因此对学生个体情况的考评仍不够细致。
通过在实践学期进行的教学改革,以小型手机游戏的开发作为低年级软件工程专业移动方向学生的综合实践项目,学生能更形象地理解面向对象的程序设计思想,更好地激发学生的学习兴趣,更全面地巩固与提高学生的程序设计能力,是一种行之有效的实践训练方式,在今后的工作中可进一步深化和推广。
[1] 何昭青, 彭立, 傅红普. 基于程序设计能力培养的计算机专业实践教学体系的思考[J]. 湖南第一师范学院学报, 2012(2): 62-64.
[2] 吴文虎. 教学设计中切入点很重要[J]. 计算机教育, 2005(2): 12-14.
(编辑:孙怡铭)
1672-5913(2017)02-0104-03
G642
软件工程(移动应用方向)战略性新兴产业特色专业项目(粤财教[2014]130 号)。
徐婉珍,女,计算机应用工程师,讲师,研究方向为软件技术与计算机教育,xuwz@neusoft.com。