文档库 最新最全的文档下载
当前位置:文档库 › 消去游戏毕业论文完整(网络版)

消去游戏毕业论文完整(网络版)

广州大学华软软件学院

毕业论文

题目游戏精灵渲染

学生

学号

指导教师

摘要:近年来,随着经济的日益发展,人们的生活水平不断提高,生活质量也在渐渐的改善。适当的游戏对人们的业余生活是不可必缺的。说到游戏,种类有好多种。在电脑游戏上的分类也很多。RCG(赛车游戏)、FTG(格斗游戏)、SPG(体育游戏)、RPG(角色扮演)、ACT(动作游戏)、AVG(冒险游戏)、PUZ(益智游戏) 等等。虽说繁多的游戏种类让人目不暇接,游戏的可玩性、可延续性和可对比性是益智类游戏深受各年龄阶层玩家欢迎的原因。当今网络发展迅速,益智类游戏被广泛运用到网络各大平台上。借鉴网络各大平台上的益智游戏,我利用Microsoft Visual Studio 2008 C++开发了本游戏项目。我利用Microsoft Visual Studio 2008 C++开发了《消消看游戏》项目,只有把每行或每列添入相同的图形才会消除,所以开始的时候尽量在角落放置不同的图形。可玩性很强,里面不仅要看五个或五个以上排列消除,还要动脑看看是否附近旁边是否有道具炸弹,可以炸出旁边道路。

关键字:消消看;炸弹;声音;分数;关卡

ABSTRACT:In recent years, growing as the economy, improving people's living standard and quality of life has also gradually improved. Appropriate gam es on people’s spare time are not lack of will. There are so many kind of game. Also the classification of the computer games. Such as RCG (racing game), FTG (Fighting Game), SPG (sports games), RPG (role playing), ACT (action game), AVG (adventure game), PUZ (Puzzle Games) and so on. Although there are too many kinds for the eye to take in. continuity and comparability is a popular puzzle game player of all ages welcome reason. The rapid developments of today’s networks, puzzle games are widely appli ed to various network platforms. Major reference network platform puzzle game, I use Microsoft Visual Studio 2008 C + + development projects of this game

Key words:eliminate to see; bomb; sound; scores; levels

目录

中文摘要 (2)

英文摘要 (3)

前言 (6)

第1章概述 (1)

1.1课题研究的目的和意义 (1)

1.1.1 课题来源 (1)

1.1.2 课题目的 (1)

1.1.3 课题意义 (1)

1.1.4 基本内容 (2)

1.2 国内外研究现状综述: ........................................................................1.3研究内容: (2)

1.3.1设计原理 (2)

1.3.2方案选择 (2)

1.4 本选题研究技术要求、研究方法和要解决的关键问题 (2)

1.4.1 技术要求 (2)

1.4.2 研究方法 (3)

1.4.3 要解决的关键问题 (3)

第2章系统开发环境 (4)

2.1 游戏名称 (4)

2.2 开发工具的选择 (4)

2.2.1 良莠不齐的开发工具 (4)

2.3 Visual C++编程特点 (5)

2.4 C++语言的优点 (6)

第3章游戏的操作说明 (7)

3.1 应用系统安装 (7)

3.2 游戏操作说明 (7)

第 4 章游戏详细设计 (9)

4.1 游戏总体设计 (9)

4.1.1 如何拼接 (9)

4.1.2 装载地图 (9)

4.1.3 怪熊消消去游戏算法: (9)

4.1.4 游戏按键 (9)

4.1.5 关卡 (10)

4.1.6 游戏特效 (10)

4.2 创建界面的主框架 (10)

4.3 正常流程的设计 (10)

4.4 游戏区域绘图的实现 (15)

4.5 进度安排 (16)

第5章怪熊消消看游戏程序设计 (17)

5.1 怪熊消消看游戏中的类 (17)

5.1.1 游戏区域设计 (17)

5.1.2 平面参数类 (18)

5.1.3 设置游戏大厅 (18)

5.1.4 玩家进入房间 (19)

5.1.5 新网络信息 (20)

5.2 游戏区域视图的操作 (21)

5.3 中断操作流程的设计 (22)

5.4 用户根据功能按键不同流程图 (22)

第 6 章课题研究重点难点与思路算法分析 (23)

6.1 课题研究重点 (23)

6.2 课题研究难点 (23)

6.3 思路分析: (23)

6.3.1 基本内容 (23)

第 7章结语 (24)

参考文献 (26)

附目录1(游戏截图) (27)

附录二(程序代码) (29)

前言

现在,游戏的类型也由最初的动作游戏和简单益智游戏向更复杂、更高智力,更具真实性的游戏发展。目前的游戏种类繁多,包括角色扮演、仿真模拟类、人工智能、休闲类、渲染类、网络类等等,甚至有的游戏包含了好几种类型。

消消看游戏一直以来都很多。但仿真模拟类的游戏却有不少,现在休闲类的技术广泛的应用到很多游戏里面等等。最广泛应用的应该就是交换排列检测。随着技术的不断提高,玩家对游戏真实性的要求也不断提高。相信益智类游戏的技术,以后会更加深入各种游戏之中。

消消看游戏是广泛人士喜爱的游戏,它实现由十种不同颜色的球组成,然后存储在一个数组的十个元素中,计算机随机由等级产生不同十种类型的球,然后玩家控制鼠标移动行、列或对角交叉排列消除加分,空格的游戏区域会随机出现闪闪待出现球。根据鼠标控制球在不同摆放排列消除,玩家目的是在利用最快速度交换消除所有的球加分通关而胜对手。

鉴于游戏的对社会的巨大影响力和光辉的发展前景,以及我们自己对游戏爱好,这次的毕业设计我们决定尝试设计和制作一个具有一定可玩性的游戏。期间,我们收集相关资料、研究同类型的游戏、阅读有关这类型游戏和相关技术性的书籍,通过制作游戏项目来熟悉游戏的制作思路、过程,加深对面向对象编程语言的掌握,培养自己的耐心、细心和考虑问题的全面性,同时解决本课题要完成的问题,如游戏框架如何构建,如何将DirectX的内容封装,如何完善游戏的各种功能,如何能让游戏有音乐和音效的实现,如何能让游戏过关,如何能让游戏界面美观,看起来舒服感觉。

第1章概述

1.1课题研究的目的和意义

1.1.1课题来源

毕业设计是完成本专业教学计划达到培养目标的重要的教学环节,是教学计划中综合性最强的实践性教学环节,它可以培养我正确的思想和工作作风,提高综合运用专业知识分析和解决实际问题的能力,达到工程技术人员所必须具备的基本素质等方面具有重要的意义。而且毕业设计可以使我在以下几个方面有明显提高:融会和贯通所学习专业的基本概念、基本理论和基本技能;综合运用所学专业理论知识和技能分析,提高解决实际问题的能力;以科学的、实事求是的态度进行科学试验和工程实践的动手操作能力;提高文献阅读和使用能力。所以说毕业设计是非常重要的,它把我们大学四年所学到的知识全部融会贯通,是一个综合能力的体现,能完成好课题对我们自身水平有很大的提高。

1.1.2目的

游戏制作的目的是满足了人们休闲的需要,在紧张工作之余益智类的小游戏能够给人带来最大程度的放松,也可以增进人们之间的交流,沟通,通过游戏还可以认识更多的朋友,也可以到达跨省、跨市,甚至跨国间人们互相娱乐的目的。而消消看游戏学会锻炼眼力,时间利用快速、连续的移动,在十行十列限制区内,交换相对一致球移动。消消看除了掌握正确的动作和遵循一般的规律以外,还应学会一些特殊的变化。变节奏和变位置的,以避免加分被对手赢了。应掌握多种方式的移动球,做到能里能外,而且学会多获取随机出现增加的新球。

1.1.3意义

消消看游戏是一个比较经典的游戏,根据软件工程有关的规范,以合理的开发原则,设计出消消看游戏,并给人们的生活带来唯美的艺术享受和健康愉快的补充。

游戏软件是一种与文化背景密切联系的产品,具有很强的民族性和丰富的文化内涵。伴随着游戏软件在市场上的销售,与其相关的文化也随之传播。因此发展我国自主的益智、健康的游戏软件已是当务之急。游戏是一种基于计算机的应用软件,是新型的休闲娱乐方式。当前开发的游戏软件应该做到知识性、娱乐性、趣味性、教育性相统一。

通过此次课题的设计,掌握制作一个游戏软件的方法,以及制作游戏软件的整个流程,制作游戏软件的步骤,为以后的就业工作打下基础。

1.1.4 基本内容

在本课题中只要研究的内容:基本框架,建立服务器连接,建立游戏大厅,建立玩家进入房间后连接游戏区域,游戏界面,游戏控制,游戏核心,道具使用,分数,声音,关卡和加入相互交流通讯功能的实现。只有把每行或每列或交叉添入相同的五个或五个以上相同足球才会消除,所以开始的时候尽量在角落放置不同的图形。如果对手先达到分数,游戏结束就输了。游戏中有各种各样颜色球。每局游戏都可以支持两位玩家同时间一起对战,早先达到10000分早赢,增加了刺激性。

1.2 国内外研究现状综述:

网络游戏正处于加速发展周期中,中国网络游戏市场迅速扩大,近三年的年均增长率超过100%。网络游戏的告诉发展,逐渐引起了我国政府的高度重视,信息产业部、文化部、新闻出版总属等相关部门都在积极推动各项市场监管和鼓励网络游戏产业发展的政策措施的出台,2003年网络游戏首次被正式纳入国家863计划,标志着我国网络游戏产业已经的到政府的充分重视。除外,在网络游戏产业发展的同时,有力带动了相关行业的发展,如软件、计算机、通信、电信运营、互联网等,根据统计,网络游戏能够带动10倍于自身产值的相关行业的发展。预计未来三年,中国游戏时常规模仍将保持60%以上的告诉增长,至2010年市场规模将接近1000亿元,而多样的资本运作模式将成为网络游戏产业发展的重要推动力。同时,手机游戏、家用游戏机、游戏传媒、电子竞技等游戏周边行业也将快速发展起来。

1.3 研究内容:

1.3.1 设计原理

在论文完成过程中,认真学习了游戏开发的基本技术,OOD方法软件设计的基础知识,VC++程序设计语言等。结合游戏开发的过程、算法的设计与分析(深度搜索,游戏核心,交换排列检测。)、软件工程等角度重点研究了实现游戏的算法和采用VC++平台设计游戏的优点和现存结构的不足之处。

1.3.2 方案选择

这是一款消消看游戏,玩家使用鼠标控制球移动交换排列消除并得到加分,玩家之先到达限定分数就赢,玩家必须在关卡提供的球都使用后达到规定的分数,否则游戏将会结束。游戏的的最大特色是,游戏区域中有特殊炸弹和特效。

1.4 本选题研究技术要求、研究方法和要解决的关键问题

1.4.1 技术要求

(1). 1、CGame类主要实现负责管理游戏中的所有物体,包括管理显示,碰撞,创建和关卡等,还提供了一些服务,方便查询关卡中的一些物体的信息。

(2). CGameLogic类主要负责控制portrait决定方向与位移。

(3).CDisplay类主要鼠标在目标内。

(4). CRoom类主要进入游戏房间。

(5). C Score类主要负责游戏通关和游戏结束显示各关成绩。

(6). CButton类主要负责整个游戏界面的菜单按键控制。

(7). CSound类主要负责整个游戏声音。

(8).CNumber类主要负责每个关卡的显示数字图案。

(9). CGameObjectManage类根据播放模式设置动画播放的初始条件。

(10).CClientSocket类初始化服务器skSocket

(11). CCommand类控制台消息处理

1.4.2 研究方法

按照软件开发的总过程进行设计,经历定义和计划、需求分析、软件设计、软件编码、软件测试等过程。

1.4.3 要解决的关键问题

开始制作游戏时,主要要解决的问题有以下几个方面:如何设置整个游戏的界面;鼠标控制球移动排列。在普通模式,那位玩家先达到规定的分数就赢,反而结束游戏,结束时跳出结束游戏界面。

第2章系统开发环境

2.1 游戏名称

《怪熊消消看》游戏

2.2 开发工具的选择

2.2.1 良莠不齐的开发工具

游戏在Windows XP系统下开发,基于visual studio C++ 2008的开发平台,采用了Direct X技术进行开发。

操作系统:Microsoft Windows XP

程序语言:C++

开发包:Microsoft DirectX SDK (June 2008)

系统必备组件:DirectX9.0

开发工具:Microsoft Visval Studio 2008,Direct X

Microsoft Visual C++,(简称Visual C++、MSVC、VC++或VC)微软公司的C++开发工具,具有集成开发环境,可提供编辑C语言,C++以及C++/CLI等编程语言。VC++集成了便利的除错工具,特别是集成了微软视窗程序设计(Windows API)、三维动画DirectX API,Microsoft .NET框架。Visual C++以拥有“语法高亮”,IntelliSense(自动编译功能)以及高级除错功能而著称。比如,它允许用户进行远程调试,单步执行等。还有允许用户在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。其编译及建置系统以预编译头文件、最小重建功能及累加链接著称。这些特征明显缩短程序编辑、编译及链接的时间花费,在大型软件计划上尤其显著。

C++语言是目前面向对象编程的首选语言,学习、使用 C++ 语言并进行应用程序设计的人员非常多,Microsoft公司的Visual C++ 2008 因其强大的功能、非常友好的界面

而成为当前最为热门 C++ 语言开发环境。Visual C提供的集成开发环境、MFC 类库和应用程序框架极大地便利了用 C++ 语言开发Windows应用程序所需的源代码编写、用户界面设计、消息映射、编译链接和调试运行等工作。Visual C++ 2008功能强大的主要原因是它拥有一套庞大而齐全的MFC类库,即Microsoft Foundation

Class Library(微软基础类库)。要想真正地掌握Visual C++ ,高效地开发Windows应用程序,就必须尽可能地熟练使用MFC类库。

目前图书市场上介绍MFC类库方面的书较少,且大多只是罗列每个类的每个成员函数的语法、功能、返回值及参数,而没有关于类的使用方法的介绍及相关实例,使读者无从下手。其他Visual C++ 编程方面的书大多是从Visual C软件本身的体系结构来介绍的,有时会联系到应用程序的各种界面和部件是如何用Visual C来实现的(它们有些是以程序实例来编写的,有些是为某一专门编程需要来编写的,如图形的、图像的、数据库的、多媒体的、网络的,等等)。这些书适用于不同程度的读者学习Visual C的需求,但它们都没有完整、全面地介绍MFC类库及其使用方法。目前,Microsoft公司的.NET战略已经深受业界的推崇。特别是Visual C++ .NET 的推出,可以使开发人员的工作速度更快、质量更高、功能更强。相对于其他的应用程序开发工具,它具备很大的优势,特别是在开发网络应用方面,新版本有了较大的改善。

本书以Microsoft公司推出的Visual C++ .NET版本的MFC类库为主要内容,重点介绍每个类的功能、主要成员函数、使用方法及程序实例,使读者能够了解、掌握MFC类库中的每个类的作用、使用方法以及类与类之间的区别等。全书共12章,分别介绍了MFC类库简介、基本基类、应用程序结构类、对话框和控件类、图形显示和打印类、数据类型和集合类、线程和同步类、文件和数据库类、网络和Internet 类、OLE类、ActiveX控件类、调试和异常类,每个类都给出一些实践性很强的应用实例,以帮助读者来理解、掌握该类的内容。

2.3 Visual C++编程特点

Visual C++的源程序要求用C++语言编写,它支持面向对象设计方法,并可以使用功能强大的微软基础类库MFC(Microsoft Foundation Classes),充分体现了Microsoft 司的技术精华。由于Microsoft公司在操作系统市场上的垄断地位,用Visual C++开发出来的软件稳定性好,可移植性强,而且软件与硬件相互独立。

利用Visual C++可以编制各种类型的’Windows应用程序,从最简单的单文档和对话框程序到复杂的多文档和组合界面程序。并且Visual C++作为Visual Studio 可视化组件家族中最重要的一个成员,与其他可视化工具如Visual Basic、Visual J++及Visual C#紧密地集成在一起,可进行不同类型的程序开发工作,适用于特殊、复杂和综合软件项目的开发以及系统软件的设计。

Visual C++6.0源代码编辑器提供了自动语句完成功能,编辑输入源程序时,能自动显示当前对象的成员变量和成员函数,并指明函数的参数类型。Visual C++6.0的编译器增加了新的编译参数,改进了对ANSI:C++标准的支持,并采用Microsofl 的代码优化技术,使生成的目标代码更短小,应用程序运行的速度更快。Visual C++6.0程序调试器功能更强大,提供了诊断映射机制、无须重编译的调试、远程调试和实时调试等功能。

2.4 C++语言的优点

1、它允许程序员采用近似自然语言的方式来表达需要解决的问题,降低了程序开

发和维护的成本。

2、C++不仅有着与C相同的控制能力,而且具有和C语言几乎一致的运行效率。

采用面向对象编写的程序可能比用C语言编写的程序更加有效率。

3、C++允许程序员更加自由地使用各种库,鱿鱼程序各部分的名字是相互独立的,

所以程序员想用多少库就可以使用多少库,不会再有名字冲突的问题。

4、C++的异常处理机制能够保证在运行期间检查到错误,并转至相应的处理程序,

减少了代码的长度和复杂度。

第3章游戏的操作说明

3.1 应用系统安装

该软体程序运行在Visual Studio 2008开发平台上,因此启动程序需要安装该平台,打开程序中的服务器.sln文件与客户端.sln文件。按Ctrl+F5键或用debug编译,然后即可运行程序,观看效果。

3.2 游戏操作说明

(1). 用VS2008打开该项目,按Ctrl+F5键或用debug编译,执行程序,看到登陆界面。如图:

图1 登陆界面

(2).玩家登陆确定后,即可看到游戏大厅界面。如图2:

如图2 游戏大厅区域

(3).玩家选择位子后,即进入游戏界面。如图3:

3.3游戏按键

鼠标点击操作,游戏当中会出现不同的图案,把相同的图案拼凑在一起,五个或五个以上就可以清除了。先点击你要移动的图案再点击要放到的地方,它就会自己跑过去了!当有图形移动时,它的所过之处会有闪烁着影子,闪闪影子显示了出图形的移动路径。加油吧。对于你每次移动球个数都统计数量,还有道具使用:(1)、使用键盘“1”字键可以移动炸弹到炸弹球范围,在填满球位置的周围爆炸消除球,可以破坏周围共六个格的所有球,然后点击鼠标清除掉。游戏区域还增加了网络通讯信息对话,玩家可以使用键盘“F2”键可以打开通讯信息相互交流对话,对方看到提示信息后同样按键盘“F2”键可以打开通讯信息回复信息。

3.4 帮助信息

(1)在对于交叉、水平或垂直方向上按形状匹配5个或5个以上使它们消失。要移动球,先单击该球,然后单击该球,然后单击你想把它挪进去的空方格。(2)你不能沿对角线移动物体,也不能将它们从其它球堵住方向移过去。要进入下一个级别,你必须捡起预定数量的球。在游戏区域上节约的每一方格都将给你带来多点胜利通关希望。

(3)大炸弹能清除周围方格中的所有球。

3.5 分数计算

一次消除5 * 30 = 150分

一次消除 6 * 30 = 180分

一次消除 7 * 30 = 210分

一次消除 8 * 30 = 240分

一次消除 9 * 30 = 270分

第 4 章游戏详细设计

4.1 游戏总体设计

消消去游戏设计要求根据指定的flash版海底消消去游戏,在Microsoft Visual Studio 2008 C++中制作该游戏。Microsoft DirectX SDK (June 2008) 4.1.1 如何拼接

用一张整图不现实,这样会影响程序的执行效率,而且很占空间。只有通过图块的拼接。因此,要设计合理的图块(Tile),对地图索引的排列也需要重点的设计。还有地图工具的寻找和使用,脚本化地图的编辑,使地图编辑更方便,不仅是程序人员可使用,其他人员如策划和美术通过此工具编辑后导出拼接文件给程序人员。

4.1.2 装载地图

将地图索引写进文件,在程序装载的时候,通过输入输出流来读取地图内容。与地图工具的相结合使用,抽取独立的工具类和函数。

4.1.3消消去游戏算法:

①深度优先搜索:即能走就走,若有多条路可走则按照一定的次序选择(如上下左右)。如果交换不能消除就退回。显然这种方法不一定能找到最短的路径,但它对内存的要求很小。它在找路和AI中都很有用。

②A*搜索(启发式搜索):当物体的下面没有其他物体支撑时就受重力向下落,直到有其他物体支撑或者落到了最底。核心是一个估价函数F(x),扩展节点时先扩展F(x)值小的节点。F(x)又等于G(x)+H(x),其中G(x)为从起始状态到当前状态的代价,一般就是已经搜索了多少步;而H(x)则是当前状态到目标状态的估计代价,即估计还有多少步就可到目标。为了保证搜索到的是最优解,H(x)必须大于或等于实际代价,F(子节点)也必须大于或等于F(父节点)。就找路的问题来说,我们可以把H(x)定为离目标的直线距离,显然这样就可以满足上面的两个条件,保证找到的是最短路径。启发式搜索的好处是速度快而且占用空间不多。

4.1.4 游戏按键

鼠标点击操作,游戏当中会出现不同的图案,把相同的图案拼凑在一起,五个或五个以上行、列或对角交叉就可以消除了。

4.1.5关卡

关卡地图的设置:不同的关卡需要不同样子的地图。应该在外面定义LEVEL文件来定义各个关卡的具体属性。并在关卡结束后显示前面各关的分数。

4.1.6游戏特效

当有图形移动时,它的所过之处会有闪烁着影子,闪闪影子显示了出图形的移动路径。

4.2 创建界面的主框架流程图

界面流程图

4.3 正常流程的设计:

(1)打开消消去客户端流程图。如图(1):

如图游戏客户端正常流程图(1)

(2)显示了服务器函数的流程。如图(2)

如图:显示了服务器函数的流程(2)

(3)服务器开启流程图。如图(3)

如图:服务器开启流程图(3)

这就是Host()函数的概貌,下面是程序调用它的代码:hReturn = g_pDPServer ->Host ( &dnAppDesc,

&g_pDeviceAddress,

1,

NULL,

NULL,

NULL,

NULL);

(4) 这里传递给函数的有效值是设备描述和设备地址:

如图 iAddPlayer() 函数流程图(4)

PACKET_TYPE_REMOVEPLAYER消息:

程序要查询处于激活状态的玩家列表,并将找到的与之匹配的玩家ID设置为非激活状态。所有的逻辑都是由vRemovePlayer()函数负责处理。

主要的逻辑分支将查询这个包是否关于玩家自己的信息。如果ID被设置成-2,那么,这个包包含的是关于玩家自己的信息,否则,就是关于其他玩家的信息。

if(pGen ->dwType = = PACKET_TYPE_ANGLE){

pacAngle = (PacketAngle)pReceiveMsg ->pReceiveData;

EnterCriticalSection(&g_csModifyPlayer);

if(iPlayerID!= -2)

PlayerInfo[iPlayerID].fRot = pacAngle ->fAngle;

Else

LocalPlayer.fRot = pacAngle ->fAngle;

LeaveCriticalsection(&g_csModifyPlayer);}

相关文档