务书中的对程序设计的具体要求较少,于是,我就有了很多可以自由发挥的空间,如对网络扫雷游戏玩法的设定,对网络模块的设计等,都是秉着实用与简单的原则进行设计的。
程序的编写按照的要求,分为两大模块,单机版与网络版。而其中的单机版,参考windows xp上的扫雷版本,基本实现了该版本扫雷游戏所具有的功能。而网络版的扫雷,使用tcp/ip协议,采用c/s模型架构,能够实现两人一起玩同一局扫雷游戏,且服务器支持多人在线功能。
1扫雷游戏概述
1.1基本信息
扫雷游戏英文名称为mine sweeper,属于益智类游戏。通过鼠标即可操作游戏。游戏特点为操作简单,易于上手。
1.2 游戏玩法简介
在游戏菜单上,单击开局。通过鼠标单击即可挖开方块。如果挖开的是地雷,则输掉游戏。如果方块上出现数字,则表示在其周围的八个方块中共有多少颗地雷。 由玩家逐个翻开方块,以找出所有地雷为最终游戏目标。如果玩家翻开所有非地雷的方块,则游戏通关。且根据游戏计时,判定玩家是否打破了在当前难度下的最短记录,如果是新纪录,则提示玩家输入,进入游戏高分榜。
地雷的位置初始时随机生成。可以给确定是雷的格子通过右键进行标记。如果无法判定某方块是否有雷,请用右键单击两次给它标记一个问号 (?)。之后,可以用鼠标右键单击方块一次将该方块标记为地雷或者或用鼠标右键单击方块两次去掉标记。
游戏除了有中级高级初级难度之外,还允许用户自定义游戏难度。即设定格子的高度,宽度,及雷的数量。
网络扫雷游戏的玩法与单机游戏相同,且可以两个人玩在不同的主机上一起玩同一盘扫雷游戏。
2 系统平台与技术选择
2.1开发语言与工具
程序使用c#语言,开发平台为vs2008。c#语言因其强大的类库与能够十分简便的使用图形界面而著称,可以快速的开发一款桌面应用软件。而且其具有强大的面向对象编程的能力,使得程序功能模块的划分与实现更为容易。
Visual Studio 2008 包括各种增强功能,例如可视化设计器(使用 。
NET Framework 3。5 加速开发)、以及能够加速开发和处理所有类型数据的语言增强功能。
2.2技术选择
程序的开发使发如题目的要求,分为两大模块,单机版与网络版。
单机版主要参考已有的windows xp上的扫雷版本,根据所需实现的功能,利用c#中的事件处理机制,实现相应各种游戏逻辑。
网络版的扫雷,使用tcp/ip协议,c/s模型架构。之所以采用此种模式,是因为相较于UDP而言,我更为熟悉tcp。虽然使用c/s模型还要写相应的服务器程序,但是也因为有了服务器,能够为网络版扫雷很容易的实现一些其它功能,如多人同时聊天,知道对方的游戏状态等。
程序使用到了多线程技术。因此服务器支持多位玩家同时连接到服务器。服务器为每一位玩家打开一个阻塞socket,在一个单独的线程中,接受客户端传来的消息。
消息的传送与处理采用命令头加信息内容的方式。即根据发出命令的类别不同,使用独一的字符串的表示,添加在所要发送消息的前面。然后接受消息时,先分离命令头与内容,根据命令头,采用不同的函数去处理内容。
3扫雷游戏需求分析
3.1编写需求分析的目的
需求分析的主要任务即详细的找出程序所需要的各种功能实现。本程序为扫雷游戏的实现,首先是要实现扫雷游戏的基本功能,根据扫雷游戏的玩法,设计程序,实现程序功能。然后,将其添加为可以联机的网络版扫雷游戏。
3.2功组织结构图
根据任务书的要求,做出如下需求分析,如图3-1所示:
图3-1功能需求组织结构图
4扫雷游戏软件总体设计
4.1主要功能模块划分
整个程序的架构都由模块化结构,分层结构的思想设计完成。
从设计上主要分为两大模块
1.底层逻辑模块:底层主要由两大模块构成,也是程序底层逻辑所需要的主 要功能。
a) 游戏逻辑模块:完成扫雷游戏时的各种逻辑
b)
通信模块 :完成客户端与服务器之间数据的收发
2.界程序设计的实现面功能模块:界面模块属于上层模块,调用底层模块提供的各种借口,完成游