前言    1

   
本软件是一款具有联机功能扫雷游戏,并且具有单机游戏功能。联机功能采用C/S模型,通过服务器程序中转消息,完成对游戏消息的传送。程序功能丰富,具有多种难度,且带有保存,排行榜,聊天等功能。
程序的设计采用了模块化程序设计的方法,对底层模块和经常被调用的函数,进行封装。使得单机扫雷游戏与网络版的扫雷都可以共用底层的游戏逻辑。且使得在单机版的基础上实现网络功能变得简单。
游戏界面美观,显示的数字和地雷都用贴图实现。
关键词:扫雷游戏;C/S模型;服务器;

Abstract
This software is a mine sweeper game with online features and functionality with a single game. Online features using C / S model, the game send the the message through the server program . This program has a lot of functions,like  a variety of difficulty, and with a save,high scores, chat and other functions.
Program was designed with a modular design method, often called the bottom of the module and function of the package. Makes the game stand-alone mine clearance and the network version of the game can share the underlying logic. And makes on the basis of stand-alone networking simple.
    Game interface is beautiful, showing the number and mine playground with the bitmap.
Key wordsminer sweeper ;C/S model;server ;
前言
随着计算机与网络的普及,人们生活水平的提高,电脑游戏越来越成为人们生活中不可或缺的
一部分,在人们繁忙的工作之余,给人带去欢乐与放松。而一款网络游戏,因为能和真实存在的人一起互动,能和周围的同伴一起游戏,更使得游戏的可玩性大大提高,使得人们更能的投入到游戏中去。
随着电脑游戏产业的规模越来越大,开发一款成功的电脑游戏靠个人之力已非易事。不过,随着市场上开发的游戏产品越来越丰富,各种题材的游戏越来越多,创意已成为一款成功游戏的最重要的特点。例如目前流行的游戏<<植物大战僵尸>>,<<愤怒的小鸟>>,虽然都是一些很小的休闲游戏,但是因其特有的风格,使得它们都大获好评。
扫雷游戏是Windows操作系统自带的一款小游戏,在过去的几年里,Windows操作系统历经数次换代更新,变得越来越庞大、复杂,功能也越来越强大,但是这款小游戏依然是该系统装机必备的软件,可见这款小游戏受到越来越多人的喜爱。
我的毕业设计题目为2D单机版/网络版扫雷。单机版扫雷作为一款windows平台上最为普及的游戏,玩过的人不计其数,对大部分人来说,扫雷游戏不再具有吸引力。可是扫雷网络版,却是一款全新的游戏。由于其网络功能实现,为扫雷增添了新的趣味,再次丰富了游戏的可玩性。由于设计任务书中的对程序设计的具体要求较少,于是,我就有了很多可以自由发挥的空间,如对
网络扫雷游戏玩法的设定,对网络模块的设计等,都是秉着实用与简单的原则进行设计的。
程序的编写按照的要求,分为两大模块,单机版与网络版。而其中的单机版,参考windows xp上的扫雷版本,基本实现了该版本扫雷游戏所具有的功能。而网络版的扫雷,使用tcp/ip协议,采用c/s模型架构,能够实现两人一起玩同一局扫雷游戏,且服务器支持多人在线功能。
1扫雷游戏概述
1.1基本信息
扫雷游戏英文名称为mine sweeper,属于益智类游戏。通过鼠标即可操作游戏。游戏特点为操作简单,易于上手。
1.2 游戏玩法简介
 在游戏菜单上,单击开局。通过鼠标单击即可挖开方块。如果挖开的是地雷,则输掉游戏。如果方块上出现数字,则表示在其周围的八个方块中共有多少颗地雷。 由玩家逐个翻开方块,以出所有地雷为最终游戏目标。如果玩家翻开所有非地雷的方块,则游戏通关。且
根据游戏计时,判定玩家是否打破了在当前难度下的最短记录,如果是新纪录,则提示玩家输入姓名,进入游戏高分榜。
 地雷的位置初始时随机生成。可以给确定是雷的格子通过右键进行标记。如果无法判定某方块是否有雷,请用右键单击两次给它标记一个问号 (?)。之后,可以用鼠标右键单击方块一次将该方块标记为地雷或者或用鼠标右键单击方块两次去掉标记。
游戏除了有中级高级初级难度之外,还允许用户自定义游戏难度。即设定格子的高度,宽度,及雷的数量。
网络扫雷游戏的玩法与单机游戏相同,且可以两个人玩在不同的主机上一起玩同一盘扫雷游戏。
2 系统平台与技术选择
2.1开发语言与工具
程序使用c#语言,开发平台为vs2008c#语言因其强大的类库与能够十分简便的使用图形界
面而著称,可以快速的开发一款桌面应用软件。而且其具有强大的面向对象编程的能力,使得程序功能模块的划分与实现更为容易。
Visual Studio 2008 包括各种增强功能,例如可视化设计器(使用 NET Framework 35 加速开发)、以及能够加速开发和处理所有类型数据的语言增强功能。
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.界程序设计的实现面功能模块:界面模块属于上层模块,调用底层模块提供的各种借口,完成游戏游戏功能的实现。并且提供丰富的人机交互界面,方便用户操作  
    程序主要功能组织结构图如图4-1   
      4-1 程序各模块组织结构图
游戏逻辑模块功能细分的组织结构图如图4-2所示:
     
4-2 游戏逻辑模块的组织结构图
4.2设计步骤流程
程序设计的流程主要为先实现单机扫雷,然后为单机扫雷添加上网络模块。然后再利用同样的网络模块开发出服务器端程序,提供信息的中转服务。
单机扫雷的系统流程图如图4-3 所示
4-3 单机扫雷系统流程图
网络扫雷的系统流程图如图4-4 所示
4-4网络扫雷系统流程图
最终,在实现了网络与单机游戏的基础之上,在为程序添加上一些其它功能。如排行榜功能,保存功能等。并且对程序的部分地方予以优化。