《Spring+Struts+iBatis程序设计》课程的游戏案例教学法

2016-01-21 22:10林淑飞
教育教学论坛 2015年40期
关键词:案例游戏

林淑飞

摘要:通常,《Spring+Struts+iBatis程序设计》课程使用企业级项目做教学案例,业务复杂的企业级项目案例会影响学生对教学内容的学习。游戏业务简单且有趣,不但能激发学生的学习兴趣而且不会打击学生的自信心。本文使用扫雷游戏做教学案例,使用Spring+Struts+iBatis开发扫雷游戏的同时来讲授Spring+Struts+iBatis理论知识。文中具体介绍了游戏案例教学法的实施过程,讲授Spring部分时做游戏的业务层,讲授iBatis部分时做游戏的持久层,讲授Struts部分时做游戏的展示层。此方法已进行过两轮的教学实践,效果较好。

关键词:游戏;扫雷游戏;Spring Struts iBatis教学方法;案例

中图分类号:G642.0 文献标志码:A 文章编号:1674-9324(2015)40-0182-03

一、引言

Spring、Struts和iBatis都是企业级开源框架,对学生就业很有帮助,但不好掌握,因此案例教学法很有必要。游戏案例业务简单,而且易于激发学生的学习兴趣。将一个简单的游戏开发贯穿于Spring+Struts+iBatis(以下简称“SSI”)程序设计的教学中,即边带着学生开发游戏边讲授SSI重要知识点的原理和应用,这就是本文的游戏案例教学法。

下面说明扫雷游戏案例教学法的实施过程,即给出以扫雷游戏的开发为辅、讲解SSI为主的教学过程。

二、教学方法实施过程简介

(一)讲解Spring部分

Spring的核心技术是IOC和AOP[1,2]。因为IOC和AOP的底层技术是反射机制,所以需用2课时来讲解java的反射机制,再用2课时讲解IoC和AOP的概念,最后将IoC和AOP应用到扫雷游戏中。在扫雷游戏中,类Pair表示按钮的位置,类ThunderButton表示按钮,类DengJi表示游戏的级别,ThunderButtonLayout表示和类DengJi有关的按钮布局。领域类User、Log分别表示玩家和成绩统计。

DengJi类应只有4个对象,分别是初级、中级、高级和自定义,都交给SpringIoc容器管理。前3个对象成员变量的值是固定的,第4个自定义等级是玩家在游戏进行时才能确定的,所以通过IoC容器引用属性文件中的值来实现。

GameStyle表示游戏的外观,主要指按钮和雷的外观。如果按钮有3种样式,雷有2种样式,那么共有6种外观,就在SpringIoC容器中放6个GameStyle对象。为了讲解SpringIoC对集合的管理,可以将GameStyle的6个对象放到集合里。

ThunderButton的结构如下:

public class ThunderButton extends JLabel{

//定义成员变量,如按钮的位置、按钮外观、所属窗口等

public ThunderButton(){ }

public int begin(){ //在这里设置按钮的一些属性值,方法返回值表示已找到的雷数}

}

使用AOP的环绕增强技术将按钮的鼠标左击、右击和双击事件处理植入到ThunderButton的begin方法中,顺势讲SpringAOP的原理及使用。鼠标双击某数字按钮可获得此按钮周围雷的位置提示。

当单击窗口的关闭键、结束按钮或结束菜单项想要退出游戏时,都有确认提醒,即“游戏正进行,您希望做什么?保存、不保存或是取消”,这可以使用Spring AOP的后置增强来实现。若游戏已开始就植入增强,若游戏没有开始就不植入增强,这是有条件的植入增强。

当游戏结束时,不管是由于成功,还是由于踩雷,或是由于时间到了,必须要记录游戏的结果,这可以使用SpringAOP的前置增强来完成。

当单击“新游戏”菜单项或当游戏失败了,都会出现“开始一个新的游戏”和“重新开始这个游戏”两个选项,这时就可使用AOP的引介增强了。这两个选项的不同之处是后者需要保存当前游戏中雷的位置,并在新游戏中应用。可以将这两个选项的实现放在同一个方法中,在此方法中植入“保存当前游戏的雷的位置”的功能,并设置是否开启此功能的开关,这正是引介增强所能实现的。

Spring支持基于XML配置的AOP、基于Schema配置的AOP以及基于@AspectJ注解的AOP,我们课堂上用基于XML配置AOP,其余两个使用很简单,让学生课下自学。

(二)讲解iBatis部分

[3]iBatis是对JDBC操作一定程度上的封装。它的核心是映射文件和接口SqlMapClient。映射文件的作用是指出有映射关系的类和数据表,并定义一些SQL语句。接口SqlMapClient具有SQL执行、批处理和事物处理的能力。为了讲解iBatis,我们给扫雷游戏提供了以下功能:登录,注册,统计当前玩家每个游戏等级最好的5次成绩,对每个游戏等级从所有玩家中找出前5名,游戏结束时除了显示游戏成败外还显示当前玩家等级游戏的总次数、成功次数、成功率、连续成功次数、连续失败次数、最好成绩及其取得的时间。我们可边实现这些功能边讲授iBatis。

首先搭建数据库,准备实体类和实体类对应的映射文件。实体类有User和Log,分别表示玩家和日志,它们对应的数据表分别为user和log。接着根据游戏的业务需求,分别为两个实体类定义对应的映射文件User.xml和Log.xml。最后来准备UserDao(接口)、UserDaoImpl(实现类)、LogDao(接口)、LogDaoImpl(实现类),对数据表有什么操作它们就有什么方法。比如,LogDao有如下方法:

void save(Log log);

List

猜你喜欢
案例游戏
案例4 奔跑吧,少年!
随机变量分布及统计案例拔高卷
发生在你我身边的那些治超案例
爆笑游戏
一个模拟案例引发的多重思考