APP下载

基于MVC模式的扫雷游戏设计与实现

2012-11-01吴伟美

扬州职业大学学报 2012年4期
关键词:雷区视图控制器

吴伟美

(广东科学技术职业学院,广东珠海 519090)

扫雷游戏是Windows操作系统自带的一款小游戏,它以画面精美、游戏方法简单等特点得到人们的认可和青睐。Windows操作系统自带的扫雷游戏有两个关键的地方:第一个是初始化问题,包括随机产生本局游戏中雷的总数,以及每一个小区域如何获取周围地区的雷数分布等等。第二就是对鼠标事件的处理问题,即在游戏过程中对鼠标事件应如何做出反应。本文基于MVC模式对扫雷游戏进行设计。

1 MVC模式及其工作原理

MVC是一个设计模式,它强制性地使应用程序的输入、处理和输出分开。使用MVC,应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。见图1。

图1 MVC模式中三个部件的关系

1.1 视图

视图是用户看到并与之交互的界面。对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色。MVC一个大的好处是它能为应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式[1,2]。

1.2 模型

模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以,减少了代码的重复性。

1.3 控制器

控制器接受用户的输入并调用模型和视图去完成用户的需求。比如,当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理,它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。

2 基于MVC模式的程序总体设计

根据MVC模式的三个功能部件要求,通过分析扫雷游戏的总体功能要求,把程序的总体框架按MVC模式设计为:(1)模式部分。定义并初始化雷区(以二维数组的形式定义),同时以随机方式布雷,再确定雷区的相关标记。该部分以多个类互相配合实现雷区相关标记的坐标定位,数据模型改变后的关联数据修正以确保模型数据的准确性;(2)控制器部分。该部分主要借用Java图形界面组件及事件处理机制来实现,通过对程序菜单操作及雷区操作改变模型中相关的业务数据。该部分设置菜单操作类及雷区操作类实现对业务逻辑的控制;(3)视图部分。借用Java语言的相关组件提供对模型数据的显示及用户的操作界面,所需要的特殊图片标记等也主要应用于该部分。总体功能框架图见图2。

图2 扫雷游戏的总体功能框架图

3 Java事件处理机制及其在程序中的应用

3.1 基于代理委托的事件处理模型

其内容为:(1)在这个模型中,事件被直接送往产生这个事件的组件;(2)对于每一个组件注册一个或多个监听者的类,这些类包含事件处理器,用来接收和处理这个事件;(3)监听者就是实现了Listener接口的类,事件是只向注册的监听者报告的对象。每个事件都有一个对应的监听者接口[3-5]。

3.2 事件处理步骤

处理步骤为:(1)给所需的事件源对象注册事件监听器。事件源对象.addXXListener(XXXListener);(2)实现相应的方法。如果某个监听器接口包含多个方法,则需要实现所有的方法。Java事件处理机制在程序中主要体现在控制器部分,即通过菜单及雷区控件的操作改模型数据并调用视图部分的控制方法以显示相应的模型数据。

4 程序运行效果

程序主要集中体现MVC模式、Java图形界面及事件处理机制的综合应用,因此,对相关辅助功能如“英雄榜”等功能未做具体实现,中等难度等级的运行效果见图3。

本文主要探讨MVC模式在软件设计开发中的应用,体现了分层思想在处理复杂事件中的作用。运用MVC模式把业务模型、业务处理及业务视图显示分开为不同部分,能够降低软件开发的难度,增强程序的可维护性、提高程序开发的可控性,同时使用Java面向对象语言的GUI控件及事件处理机制能够很好地实现模式中的控制器部分及视图部分。

图3 程序运行效果图

[1]万建成,卢雷.软件体系结构的原理、组成与应用[M].北京:科学出版社,2002.

[2]FRANK,BUSCHMANN,MEUNIER R,et al.面向模式的软件体系结构:卷I[M].贲可荣,郭福亮,译.北京:机械工业出版社,2003.

[3]耿祥义,张跃平.Java-2实用教程[M].3版.北京:清华大学出版社,2006.

[4]耿祥义,张跃平.Java课程设计[M].2版.北京:清华大学出版社,2008.

[5]中国IT实验室.用Java编写扫雷游戏[EB/OL].(2010-09-29)[2012-06-17].http://java.chinaitlab.com/base/827892-4.html.

猜你喜欢

雷区视图控制器
绕开老年理财五大“雷区”
工商业IC卡控制器改造为物联网控制器实践
4个补钙雷区,您踩过几个?
外保内贷,又一个雷区?
因式分解八大“雷区”
用于机器人运动控制的精确位移控制器设计
面向国产化的MCU+FPGA通用控制器设计
视图
Y—20重型运输机多视图
SA2型76毫米车载高炮多视图