APP下载

基于Funcode平台的软件课程设计

2016-08-19汪红兵姚琳张敏武航星李莉

教育教学论坛 2016年31期
关键词:计算思维

汪红兵 姚琳 张敏 武航星 李莉

摘要:软件课程设计是大学生计算机实践教育体系中的重要环节。通过具有较高显示度的作品激发学生学习兴趣,使得学生在做完课程实践之后具有强烈的成就感,是做好软件课程设计的关键。作为基于游戏界面的C、C++和Java语言综合实验教学平台,Funcode完全满足这些要求。本文在简要介绍我校计算机应用实践体系之后,对Funcode平台的使用、教学案例设计、教学效果等进行了详细的解析。今后需要结合计算思维的培养要求,将抽象的计算思维转化为直观的游戏精灵,进一步据此建立基于Funcode平台的计算思维训练平台。

关键词:Funcode;软件课程设计;实践教育体系;计算思维

中图分类号:G642.41 文献标志码:A 文章编号:1674-9324(2016)31-0253-03

一、背景

当前正处于知识经济时代,社会需要高校培养更多的理论和应用兼备的优秀人才,要求学生具有较高的信息素养和信息处理能力。因此,社会和时代迫切需要提高程序设计类实践性课程的教学质量和教学效果,要求在人才培养模式上进行相应的改革和创新,促使课程体系、教学内容、教学方法等紧跟社会发展的步伐。但是,教学质量的提高、教学效果的加强和高素质人才的培养不是只靠理论教学就可以达到的,同样离不开与理论教学同等重要的实践教学。一般来说,计算机实践教学往往存在以下问题:

1.实践教学以验证为主,难以培养学生创新能力。目前在程序设计课程的课内实验中,为了巩固理论课堂所讲解的语法规则和算法,采取验证性的实验居多,学生只需要按照实验指导书的步骤,即可得到理想的实验结果,完成实验。这很容易导致学生实际动手能力、创新能力的不足。

2.教学案例与现实问题结合不密切。理论教学过程中以经典算法为基础,对基本概念、语法和程序设计知识进行讲解,采用的大多是比较抽象的案例,与现实问题有一定差距。对于大学一年级学生,既枯燥又难以理解,常常感到课堂上听懂算法思想,当自己编程解决问题时,又觉得无从下手。

3.实践教学内容单一、枯燥,学生缺乏学习兴趣。程序设计课程中,首先介绍数据类型、语法规则、基本程序设计框架和函数定义等基础知识,课内实验内容一般与课程的知识点相对应,一个实验对应一部分知识点,内容比较单一、枯燥。综合性的实验受时间、学生理解等多种因素影响,练习相对比较少。而学生的自学能力与主动学习的意识不高,很多学生课外很少主动做练习,欠账后更缺乏学习兴趣。如何激发学生对程序设计课程的興趣,调动学生的学习积极性,培养学生创新能力、计算思维能力,是教学中亟待解决的一个难题。

“实践是催生创新的动力源泉”。近年来我校一直强化计算机类课程的实践教学,以增强学生利用计算机解决实际问题的应用能力,顺应当前信息社会发展和工程教育认证的需要为目标。基于Funcode平台的软件课程设计是计算机实践教学体系改革中重要环节。

二、我校的计算机实践教育体系

需要说明的是,这里的计算机实践教育体系指的是我校非计算机专业的计算机相关课程第二个学习阶段的实践教育体系。第一个学习阶段,非计算机专业学生主要按照大专业分类学习不同知识模块组成的计算机基础;第二个学习阶段,非计算机专业学生按照理工和非理工类进行划分,非理工类学生学习多媒体相关课程并据此进行有关实践活动,理工类学生学习程序设计语言课程并据此进行有关实践活动。

针对程序设计基础课程,需要在课堂教学中设置单元实验来巩固课堂教学所讲授的知识点,也可以在教学后期由教师根据需要设置一些综合实验来串联各个知识点,例如可以设置一个排序实验,可以根据键盘输入的选择来完成对整数、字符、字符串和对象构成的集合进行排序。学生在完成课堂实验教学之后,在当年的暑期即进入软件课程设计。由于VB语言教学中已经具有窗口功能,VB的软件课程设计一般沿用课堂教学需要延展的综合性案例。C和C++语言在日常教学过程中没有涉及到窗口设计,学生做的几乎所有实验的运行结果都是命令行的显示方式,迫切需要一种更能激发学生兴趣且具有较高显示度的方式来支持C和C++的软件课程设计。Funcode平台是一个很好的选择。当然,学生在完成课程设计之后,还可以参加相应的程序设计大赛和SRTP项目,继续加强对程序设计语言的实践学习。

三、基于Funcode平台的软件课程设计

(一)Funcode平台介绍

Funcode是一款全新的基于游戏和动画界面的C、C++和Java语言综合实验教学平台。基于Funcode平台,学生用课堂里学到的程序设计知识,即能轻松开发出一款互动式游戏或应用系统。Funcode旨在点燃学生学习激情,激发学生创新灵感,培养学生综合编程能力,最大程度减轻教师的工作负担。Funcode包含界面设计和项目开发两大模块。学生在编辑器中轻松设计游戏界面、特效、各种精灵(动态精灵和静态精灵),在VC++(或其他IDE)中编写代码,完成各种定制功能。

Funcode平台实际是一个小型游戏引擎,对涉及处理流程的细节进行了封装,将游戏运行过程划分为游戏初始化、游戏运行和游戏结束三个函数。

以下代码是关于CGameMain类的成员函数GameMainLoop,该函数在main函数中被循环重复调用来运行游戏。成员函数GameMainLoop内部,涉及初始化游戏、游戏运行和运行结束三种状态,分别使用GameInit函数完成游戏初始化功能、使用GameRun函数执行游戏运行功能,使用GameEnd函数执行游戏结束功能,三种状态按如下代码进行切换。

void CGameMain::GameMainLoop(float fDeltaTime)

{

switch( GetGameState() )

{

// 初始化游戏,清空上一局相关数据

case 1:

GameInit();

// 初始化之后,将游戏状态设置为进行中

SetGameState(2);

break;

// 游戏进行中,处理各种游戏逻辑

case 2:

GameRun( fDeltaTime );

if(……) GameEnd();

break;

// 游戏结束/等待按空格键开始

case 0:

// 通过设置游戏状态可以让游戏重新开始

break;

}

}

此外,Funcode平台将游戏中所涉及的各类实体划分为静态精灵和动态精灵,将精灵与精灵、精灵与边界的交互抽象为回调函数,使得当事件发生时系统会自动地进行调用。如下函数:

void CGameMain::OnSpriteColSprite(const char *szSrcName,const char *szTarName);

在精灵和精灵发生碰撞时会自动被回调,其中szSrcName指针指向发起碰撞的精灵,而szTarName指针指向接受碰撞的精灵。如下函数:

void CGameMain::OnSpriteColWorldLimit(const char *szName,const int iColSide);

在精靈与边界发生碰撞时会自动被回调,其中,szName指针指向发起碰撞的精灵,iColSide确定精灵与边界碰撞的方向,其中值为0表示与左边边界碰撞,值为1表示与右边边界碰撞,值为2表示与上边边界碰撞,值为3表示与下边边界碰撞。

最后,Funcode将用户与游戏的交互划分为键盘和鼠标两类,并提供相应的函数自动处理,如下所示:

void CGameMain::OnKeyUp(const int iKey);

void CGameMain::OnKeyDown(const int iKey,const bool bAltPress,const bool bShiftPress,const bool bCtrlPress);

void CGameMain::OnMouseUp(const int iMouseType,const float fMouseX,const float fMouseY);

void CGameMain::OnMouseClick(const int iMouseType,const float fMouseX,const float fMouseY);

void CGameMain::OnMouseMove(const float fMouseX,const float fMouseY);

所有这些为学生进行代码编写带来了极大的方便,实际上学生只需要根据项目需要完成这些函数的实际功能即可。

(二)教学案例设计

Funcode平台中提供了大量的教学案例,如海底世界、黄金矿工、拼图游戏、桌球游戏、拍飞虫、打飞碟、太空战机和坦克大战等传统小游戏。

学生根据需要,可以选择Funcode中自带的教学案例,教师需提供简单的功能说明,鼓励学生增加新的功能,如积分、排名和倒计时等。此外,鼓励学生积极设计新的游戏,充分利用各种多媒体工具制作素材,发挥团队作战效能,按照制作脚本、素材准备、Funcode制作和运行优化的步骤有计划、有步骤地完成软件课程设计。下表分别为C++和C课堂学生自选课题和选择Funcode平台中题目的比例。

四、应用Funcode平台的软件课程设计的教学效果

(一)Funcode平台使用情况介绍

对于2014~2015学年夏季学期,全校大约有3300名学生参加暑期实践。暑期实践分为计算机实践、英语夏令营和创业训练三个部分。其中,选择参加计算机实践的学生大约为1600名,近50%。这其中,选择参加C和C++Funcode游戏设计的学生大约1200名,选择Office综合练习的约300名,选择VB窗口系统设计的约120名。

(二)教学反馈

软件课程设计结束后,基于学校课程中心提供的在线调查功能对学生进行了教学效果的网络调查。下面分别从课程对培养团队精神的重要性、使用程序设计语言的体验感和成就感以及综合评价四个方面分别进行说明。

五、总结与展望

基于Funcode平台进行C和C++软件课程设计达到应有的目标,在培养学生团队能力、提升学生使用C和C++程序设计语言的体验感和成就感方面效果显著。未来需要进一步改进的工作包括:将C和C++程序设计语言课程中各种抽象的计算思维,实例化为游戏中各种实际的精灵和实际算法需求,进一步将Funcode建设成为计算思维的训练平台。

参考文献:

[1]Jeannette M. Wing. Computational Thinking. Communications of the ACM. 2006,49(3):33-35.

[2]陈国良.计算思维[J].中国计算机学会通讯,2012,8(1):31-34.

[3]李廉.计算思维-概念与挑战[J].中国大学教学,2012,(1):7-12.

[4]陈国良,董荣胜.计算思维与大学计算机基础教育[J].中国大学教学,2011,(1):7-12.

[5]武航星,姚琳,张敏.基于Funcode平台的C语言课程设计教学改革[J].计算机教育,2014,(24):30-33.

猜你喜欢

计算思维
高中信息技术课堂中计算思维能力培养问题的探讨
公安专业学生计算思维能力培养对策初探
基于计算思维的软件类研究生高级算法课程教学研究
基于计算思维程序设计的军事案例研究
程序设计课程中计算思维和应用能力培养问题研究