免费预览已结束,剩余44页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
广西科技大学普通本科毕业设计(论文)说明书课题名称 基于MFC的小球进帐篷游戏设计 学 院 计算机科学与通信工程学院 专 业 计算机科学与技术(软件工程方向) 班 级 学 号 姓 名 指导教师 年 月 日摘 要随着电脑硬件和软件的快速发展,大家的生活水平和娱乐方式有了很大的改变,计算机给人们带来的娱乐越来越多。这几年来,计算机游戏更是如雨后春笋般的速度在发展,益智类的,射击类的,动作类的,棋牌类的,各种各样的游戏已经是人们生活中必不可少的娱乐内容。现今游戏在快速发展,并且已经在PC和移动设备上有了很大的普及。因此,设计一款网络游戏是一件非常有意义的事。本文从玩家的角度去分析游戏项目的需求,构思了独特的游戏玩法,设计出了整个小球进帐篷网络游戏的基本模型。该游戏项目是基于Windows平台的一款休闲益智的网络游戏。整个项目由数据库、网络服务器、基于MFC的游戏大厅和基于图形界面的游戏进程等四个部分构成。玩家可以通过联网的电脑安装游戏客户端后注册登陆游戏,实现了游戏数据由服务器保存和玩家之间的互动,实现良好的用户体验。文中主要叙述了小球进帐篷网络游戏的需求分析以及其技术实现,整个游戏项目中涉及TCP/IP网络编程协议和游戏开发逻辑。本文详细介绍了小球进帐篷这款游戏的设计思路和实现的过程。游戏中使用类似泡泡堂的游戏图片,类似于天天酷跑、愤怒的小鸟、植物大战僵尸的关卡比赛风格。整个游戏项目开发结束后对每个功能都进行了测试,游戏中的各个功能都可以正常的运行。关键词:益智 游戏 网络 数据库 娱乐AbstractWith the rapid development of computer hardware and software, everyones standard of living and entertainment had the very big change,Computer brings more and more entertainment.Over the past few years,Computer games have mushroomed speed in development,Puzzle of the class, shooter,action class,Chess classes,All kinds of games have is indispensable entertainment in peoples life.Todays game in rapid development,And it has been in the PC and mobile devices have made a lot of popularity.As a result,Design a network game is a very meaningful thing.In this paper, from the Angle of the players to analyze game project requirements,Design a unique game play,Designed the network game the basic model of the ball into the tent.The game project is based on Windows platform, a casual puzzle of the network game.The whole project by the database, web server,Based on the MFC Games hall and the game process based on the graphical interface and so on four parts.Players can be connected to the computer to install the game client after registration log in the game,Implements the game between data kept by the server and the player interaction,Achieve a great user experience.This paper mainly describes the ball into the tent demand analysis of the network game and its technical implementation,The game involved in the project TCP/IP Network programming protocol logic and game development.This paper introduces the ball into the tent of the game design ideas and implementation process.Use game like soaplands pictures in the game,Similar to cool everyday run, angry birds, plants vs zombies level playing style.The game after the project development for each function was tested,Different functions can be normal operation in the game.Key words:Puzzle Game Network Database Entertainment目 录第一章 绪 论1第一节 设计背景1第二节 目前研究现状2(一)计算机网络游戏的现状2(二)国外游戏发展现状2(三)国内游戏发展现状2第三节 主要工作内容及难点3第二章 需求分析5第一节 系统介绍5第二节 功能需求5第三节 系统软硬件需求12第三章 系统总体设计13第一节 系统框架图13第二节 服务器与客户端数据传输15第三节 数据库表设计17第四章 详细设计18第一节 服务器设计19第二节 游戏大厅设计20第三节 游戏进程设计21第五章 程序运行与测试23第一节 程序运行截图23第二节 服务器模块测试27第三节 游戏大厅测试29第四节 游戏进程测试30结束语32致谢33参考文献34附录35广西科技大学本科毕业设计说明书第一章 绪 论小球进帐篷Online游戏是一款基于网络的休闲益智游戏,对于现今游戏的快速发展,同时为了总结在大学这几年的时间所学到的专业知识,我打算开发一款益智的休闲类游戏小球进帐篷,游戏风格类似于天天酷跑和打飞机、愤怒的小鸟的比赛风格,但是游戏的玩法却完全不同,并开展对网络版小球进帐篷的设计和实现。这款休闲的益智游戏,使用类似于泡泡堂的游戏图片。游戏中有多顶帐篷,并且有多个足球,玩家需要经过一定的思考去踢动足球,足球在移动的过程中可以站在足球上面,玩家操作键盘将足球踢进帐篷中,踢进帐篷的足球也可以踢出来,当所有的足球踢进帐篷后算法判断胜利可以进入下一关,玩家的通关时间等信息会被则换成分数记下来,分数越高的玩家将会获得更高的等级和更高的头衔。游戏过程中必须使用脑力才能够取进入的一款游戏。小球进帐篷不同于其他大型网络游戏只是通过闯关等级的提升给玩家带来乐趣。小球进帐篷需要经过思考如何将小球踢入帐篷。开发网络小球进帐篷,给游戏爱好者提供一个网络上就可以对战的平台。游戏中使用了较多的算法,人物移动时对障碍物的判断、人物进入和走出帐篷的判断、取得胜利判断、关卡判断、人物与小球之间的移动判断等。游戏后台服务器使用到了数据库对游戏玩家的信息存储,每次玩家登陆游戏时会从数据库中获取相应的数据。该游戏中玩家之间还可以进行聊天,增加了游戏玩家之间的互动性。第一节 设计背景自从人类进入计算机时代,人类人们在生活和学习中就变得非常的方便。计算机网络的出现也给人们带来了很多的互动性和娱乐性。从计算机进入图形界面开始,计算机游戏的发展更加的迅速。游戏中分有很多的类型,有益智类的,有射击类的,有动作类的,有棋牌类的,不同性格爱好的人喜欢玩不同类型的游戏,总之,游戏已经是当今很多男女老少都是爱不释手的了。现今游戏(包括网络游戏和单机游戏)的快速发展,同时为了给大学这几年做一个总结,因此开发一款益智休闲类的游戏,叫做小球进帐篷。游戏风格类似于天天酷跑和打飞机、愤怒的小鸟的比赛风格,但是游戏的玩法却完全不同,并开展对网络版小球进帐篷的设计和实现。为了满足现今快速的生活节奏,使人们在疲劳的学习工作之余能够放松身心,网络版的休闲益智游戏是最好的选择。 小球进帐篷是一款休闲益智的游戏,使用类似于泡泡堂的游戏图片与界面。游戏中的取胜条件就是:所有的小球都被踢进帐篷中。在游戏的过程中有多顶帐篷,并且有多个小球,玩家需要经过一定的思考去踢动足球,足球在移动的过程中可以站在足球上面,玩家不管使用什么样的手段将足球踢进帐篷中,踢进帐篷的足球也可以踢出来,当所有的足球踢进帐篷后可以进入下一关。玩家的通关时间等信息会被则换成分数记下来,分数越高的玩家将会获得更高的等级和更高的头衔,也是通过这些数据来提高玩家对游戏的兴趣。游戏风格类似于天天酷跑和打飞机、愤怒的小鸟的比赛风格,但是游戏的玩法却完全不同于天天酷跑和打飞机、愤怒的小鸟,为的就是使玩家有不一样的体验感。小球进帐篷不同于其他大型的网络游戏,只是通过对等级的提升(游戏中经验积累越多等级就会越高)和闯关(有些游戏会有不同的关卡,玩家通过了当前关卡后才可以进入下一关卡)给玩家带来乐趣。小球进帐篷需要经过思考如何将小球踢入帐篷并取得胜利,设计的这款游戏还提供了在线玩家聊天功能,玩家之间可以交流游戏心得或者学习和工作上的事。开发的这款小球进帐篷Online Game,给游戏爱好者提供一个网络上就可以对战的一个平台。第二节 目前研究现状(一)计算机网络游戏的现状游戏从单机版的黑白界面到彩色的图形界面,再到网络版的图形界面游戏,经历了几十年的发展才有了今天已经趋于成熟的网络游戏。网络游戏可以使游戏玩家在虚拟的游戏环境中带来快感,比如游戏中设计的各种特技,就是在现实中无法满足的,人们从小就有对科幻和武侠时代的向往,网络游戏就可以实现人们内心的需求,因此也有很多的游戏爱好者沉迷于网络游戏。网络游戏能够得到迅速发展的主要原因是互动性和健壮性好,试想一下如果一个游戏不可以活动或是经常出现异常,那么有谁回去玩呢,互动性也正是单机游戏和网络游戏的主要区别。网络游戏的这些优势使得从事计算机开发的程序员都向往着游戏开发领域,网络游戏已经不止是PC设备上的产物,在今天智能手机迅速发展的时代,移动网络游戏也在迅速发展。因为很多人都喜欢玩游戏,所以很多网络游戏开发商也看到了在这一领域上的巨大利益,他们很清楚网络游戏开发是个利润非常优厚的一个领域。(二)国外游戏发展现状 在国外,网络游戏已经进入到非常成熟的阶段,现在大多数游戏爱好者玩的游戏都是外国开发的游戏,比如英雄联盟、CF、地下城与勇士等游戏,这些游戏都是风靡全球的。国外的游戏模式非常多,角色扮演,第一人称射击、益智趣味等,场景和玩法都是不一样的,给游戏玩家带来不同的视觉上的转变,不同的玩法给玩家带来新鲜感,对于不同的游戏会有不同的体验。而且国外的游戏都是很多都是他们自己研发的,非常的注重游戏的新鲜感和可玩性,他们开发的游戏不止是为了赚钱,更是给游戏者带来快乐。(三)国内游戏发展现状 在国内,网络游戏还是处于低迷的状态。游戏玩法和模式都比较单一,同一公司开发的游戏更是充分的体现了换汤不换药,基本上玩法都是一样的,因为很多国内的游戏开发商都是跟国外的游戏开发商购买了游戏开发包进行二次开发,游戏开发包的售价少则几十万,多则几千万人民币。国内的游戏游戏开发商为了能够赚取更多的财富,只能在购买来的游戏开发包进行多次的开发,所以国内的游戏一般玩法和风格都很相似,只是把场景和故事背景变了一下,其他的变化并不大,所以说国内的游戏主要是一盈利为目的,因为一些小公司也没有太多的金钱和人力去搞创新,所以只能对游戏做简单的更改,没有花太多的时间去研究游戏新的玩法,而是只想着效仿其他成功游戏所获得成功的某些因素,没有灌输自己的想法和创意,所以说国内的游戏一直还处于低迷的状态。第三节 主要工作内容及难点对于这次的项目开发主要是设计整个游戏,包括服务器、游戏大厅、数据库、游戏客户端等,主要的工作难点如下:这次项目开发中,因为项目比较大,涉及到网络传输、游戏逻辑设计、数据库访问、整个框架的搭建,不同数据的传输和接收以及处理等很多的问题,因此在整个项目中一定要把逻辑弄清楚之后才能够搭建整个游戏的框架。在设计过程中遇到很多问题,不同数据之间的传输都是通过一个已连接套接字进行传输的,不同的数据类型要做不同的处理,因为客户端向服务器发送的数据有注册、登陆、更新数据、获取好友排名、聊天数据等不同的信息,服务器在接收到数据时就应该进行判断数据的类型和是否已经全部接收客户的数据在进行处理,在这个问题上,我设计了一个结构体来做服务器和客户端的通信协议,结构体的大小是固定的,所以接收方必须要接收完固定大小的数据以后才会进行处理,而且结构体里面包含了消息的类型,根据接收的这个结构体的数据来进行判断不同的处理。聊天信息在转发的时候因为是多线程,所以在当时使用了互斥锁来进行同步处理,防止数据在传输的过程中几个线程同时向一个描述符里发送数据。接着是数据库的设计,数据库如何设计才能够对所有用户的信息和整个项目的数据存储不会发生冲突,在设计的时候一共设计了两张表,每张表都用不同的用途,尤其是雍熙用户信息表,需要进行合理的设计。在设计游戏大厅的时候,也遇到了很多问题,因为有聊天信息的接收和排名列表的更新,如果在获取列表更新的同时,又有聊天信息发送过来那么数据就会发生混乱,解决的办法是创建一个线程来接受服务器发送过来的数据,将数据存储到一个容器里面,线程通过容器获取数据,这样即实现了聊天信息的更新也实现了好友列表的同时刷新。界面的控制也需要与内部的数据相互协调。在启动游戏进程时,如何将数据传输给游戏进程并且保证数据和服务器上的数据进行同步,所以解决的方法是使用TCP/IP协议进行数据的传输,将数据在游戏大厅和游戏进程之间进行同步,并由游戏大厅发往服务器进行更新。在实现游戏进程的时候也花了很多心思对游戏界面和关卡进行了设计,为了是游戏界面更加的友好和漂亮,找了很多的图片,为了使游戏玩家在游戏的过程中的兴趣,对游戏的关卡的难度是由易到难的设计。游戏中的地图布置和游戏人物的移动反向以及动态显示,帐篷和沙滩海水的动态显示都做了很多思考和编码上花了很多的时间。游戏的逻辑设计也是比较困难的,对界面的绘制和鼠标键盘的输入使用了多线程技术进行处理。对鼠标和键盘信息的判断,键盘主要是控制人物的移动,根据方向键来判断人物移动的方向等。人物在移动的时候如何踢动小球等,小球和人物进入帐篷的时候都需要做不同的处理,使游戏有更多的情节。第二章 需求分析第一节 系统介绍这个项目是一款网络版的游戏,项目中可以进行用户的添加,登陆验证、聊天等功能。对于一款成功的游戏,必须具备良好的用户体验,所以,了解用户需求并对其进行详细分析,是项目开发的基础。网络版的游戏需要服务端和数据库的支持,将用户的信息存储到数据库中,服务器主要接受客户端的连接和处理数据并且将数据与数据库进行更新,客户端包括两个进程,一个是游戏大厅,一个是游戏进程。系统基于Windows平台,客户端是基于图形界面编程使用第三方图形库graphcis.lib。第二节 功能需求为了使开发过程中对整个项目有总体的一个概念,对项目做了比较详细的功能需求和分析,对项目中需要的每一个功能需求和界面的总体分布都进行了分析。游戏大厅是游戏登陆后才显示的界面,在进入游戏大厅之前必须要登正确的账号和密码,账号和密码需要通过TCP/IP协议网络传输给服务器进行认证,服务器认证成功后返回正确的通知,否则返回错误登陆失败。还没有账号就必须进行账号注册,注册时需要填写个人信息并输入验证码,数据正确则发往服务器,服务器经过确认后对数据进行保存,即存储到数据库中,服务器根据已经注册的用户的最大账号的值加一以后生成当前玩家的账号,生成的账号则存入数据库中,并返回给游戏玩家,游戏玩家通过账号和密码登陆游戏。登陆成功后进入游戏大厅,根据游戏大厅的功能分析,大厅的界面需求需要有:左边是人物对应的图片,左下方显示角色的昵称、账号ID、等级、头衔、性别等信息,中间显示所有已经注册玩家的排名,包括所有玩家的信息等,使用的是MFC中的列表控件存储这些数据。游戏大厅界面的右边设计为聊天窗口,聊天信息存储于聊天列表控件中,每一个玩家发送的信息所有的玩家都可以接收得到。游戏大厅界面的下方需要设计四个按钮,分别是“开始游戏”,“刷新列表”,“退出游戏”,“全世界发言”等。游戏大厅界面的左下方设计一个选择关卡的控件,玩家可以调整要玩的是哪一个关卡,但是必须是已经通过了的关卡才可以进入。在网络传输数据时,为了对用户密码进行保护,对密码进行加密后在传输给服务器,即使在传输的过程中被窃取,别人也无法知道密码的明文。在进行游戏时,自动隐藏大厅窗口,游戏结束时弹出大厅窗口。游戏大厅是直接跟游戏玩家交互的界面,所以界面的设计很重要,使用第三方的一个界面库对界面进行配置,使界面更加的美观。同时,游戏大厅还需要连接服务器进行数据的交流,所以预先知道服务器的IP地址和端口才可以连接服务器,对于服务器运行在不同的电脑上都会有不同的IP地址,所以游戏大厅需要有一个配置文件对这些数据进行配置,每次服务器的IP地址和端口发生改变时只需要更改配置文件就可以,无需重新编译源代码。游戏进程中主要是玩家进行游戏的进程,游戏中有不同的关卡,游戏界面的右边显示当前的时间和退出按钮、音乐开关按钮。当前关卡胜利以后会计算分数以及等级发送个大厅,大厅收到数据后发往服务器进行数据的更新。当前关卡通过以后会自动进入下一个关卡。游戏进行时要有背景乐,还要有其他音效,踢动小球、取得胜利等。游戏中可以对音乐进行控制等操作。退出游戏时会相应大厅,重新弹出大厅窗口。游戏进程需要与游戏大厅进行TCP/IP协议的数据传输,所以就必须要用游戏大厅的IP地址和端口等信息,需要使用一个配置文件对这些信息进行存储,在更改大厅IP和端口时可以只修改配置文件就可以,无需重新编译源代码。服务器必须能够处理不同玩家的不同的数据,判断客户端传输过来的数据是登陆、注册、更新、获取列表或其他数据,服务器需要做出正确的判断。客户端向服务器发送数据时,需要用一个信息头来标记是即将要发送的数据,这样服务器才可以根据这些信息来做不同的处理。服务器需要跟数据库直接进行数据的交换,用户登陆时,根据数据库中的数据进行比较,判断密码和账号是否正确,根据正确与否返回给用户不同的信息提示。因为服务器不需要跟用户直接交互,所以界面不需要使用图形界面,只使用控制台的服务器可以减少内存的占用。服务器启动时需要同时启动数据库,服务器打开数据库,对数据库中的数据进行添加、更新、获取等操作。因为服务器编译好后无法再更改代码,所以服务器应该设置一个配置文件,配置文件中包含服务器的IP地址和端口,数据库的账号密码、数据库名等信息,这样即使服务器运行在不同的电脑上只需要更改配置文件而无需重新编译源代码。数据库的设计要包括用户的信息和系统信息两张表。用户信息表要包括:用户密码、用户ID、用户昵称、用户等级、用户经验、用户性别、用户通过的关卡等信息。系统表主要存储注册用户的数量和已经注册用户的最大ID值,还有一个标记位用于标记系统表。数据库管理员可以对数据库进行更改,但是密码是加密后的,即使数据库管理员打开数据库也无法获得用户的密码等信息。数据库一般通过服务器进行数据的添加、修改、获取、更新等操作。这个系统的需求概要是,游戏进程将接收游戏大厅传输过来的数据,又要将更新后的数据回发给游戏大厅,游戏大厅接收到游戏进程的新数据之后发送给服务器,服务器接收到更新的数据将会更新用户的数据到数据库中。因为整个项目中数据的传输比较复杂,所以绘制成了以下的用例图、设计分析图、数据流图,数据字典等。系统用例图见图2.1:图2.1 系统用例图数据库管理员用例图见图2.2:图2.2 数据库管理员用例图玩家与游戏大厅和游戏进程用例图见图2.3:图2.3 玩家与游戏大厅和游戏进程用例图以下是系统的需求分析设计图,系统整体框架图见图2.4:图2.4 系统整体框架图服务器与数据库数据流见图2.5。图2.5 服务器与数据库数据流服务器与游戏大厅数据流见图2.6。图2.6 服务器与游戏大厅数据流游戏大厅与游戏进程数据流见图2.7。图2.7 游戏大厅与游戏进程数据流以下是系统数据流图,见图2.8:图2.8 客户端与服务器数据流图游戏大厅与游戏进程数据流图见图2.9。图2.9 游戏大厅与游戏进程数据流图游戏中的数据字典定义如下:(1)数据文件的数据字典:a.数据文件:用户注册明细表文件组成:用户ID, 用户密码, 用户昵称, 用户等级, 用户经验, 用户性别,用户通过关卡(2)数据项数据字典:a.数 据 项:用户ID数据类型:可变字符类型数据长度:20b.数 据 项:用户密码数据类型:可变字符类型数据长度:50c.数 据 项:用户昵称数据类型:可变字符类型数据长度:50d.数 据 项:用户等级数据类型:整型数据长度:4e.数 据 项:用户经验数据类型:整型数据长度:4f.数 据 项:用户性别数据类型:整型数据长度:4g.数 据 项:用户通过关卡数据类型:整型数据长度:4(3)数据流定义:a.用户注册名 称:用户注册简 述:用户注册新的游戏账号数据来源:玩家输入信息数据去向:后台数据库数据组成:用户ID+用户密码+用户昵称+用户等级+用户经验+用户性别+用户通过关卡b.用户数据更新名 称:用户数据更新简 述:用户通过新关卡时更新后台数据库数据数据来源:游戏客户端数据去向:后台数据库数据组成:用户ID+用户等级+用户经验+用户通过关卡第三节 系统软硬件需求根据以上所述的功能需求分析,可以采用C/S模型完成项目。以服务器和客户端的模式进行开发。游戏中需要使用图形界面编程、服务器编程以及MFC编程等,因此对硬件的要求并不是很高,只需要普通的电脑配置就可以运行项目。软件开发工具选用比较小巧的Microsoft VC+6.0,服务器不需要与用户直接交互,因此使用控制台即可,图形界面比控制台界面花费的内存更大。游戏大厅则使用VC6.0的MFC开发,因为游戏大厅与用户直接交互,因此选用图形界面进行开发。游戏进程则使用第三发的图形库graphics.lib进行开发,因为这个图形库含有比较丰富的图片处理函数。对于硬件的需求,可以使用如下的硬件配置:内存1G及以上,CPU 1.5GHZ及以上双核即可。其他配置要求如下:(1) 、Windows XP、Windows7、Windows8系统(2) 、MySQL 5.6版本第三章 系统总体设计整个项目工程中一共有三个进程,分别有游戏服务器、游戏大厅、游戏进程。服务器负责与数据库的数据增加、更新、插入、获取,并且与客户端的游戏大厅进行数据的交流,服务器接收游戏大厅的各种数据并进行不同的处理,其中包括注册、登入、登出、聊天、游戏数据更新等。服务器中有配置文件,文件中保存IP地址、端口、数据库的用户名、数据库密码、数据库等信息,方便进行不同数据库和IP地址是进行不同的配置。游戏大厅负责显示当前用户信息、游戏关卡选择、所有游戏玩家的排名、刷新排名、聊天窗口等功能。聊天信息直接发送给服务器,服务器会转发给其他在线的游戏玩家,所有的在线玩家都可以接收到其他玩家的信息。大厅主要负责与服务器和游戏进程之间数据交流用,也就是一个中间进程,负责在游戏进程和服务器中间进行通信。其中还有游戏登陆模块和注册模块,这两个模块跟服务器直接通信,登陆时候会向服务器发送登陆请求,并把自己的自己的账号和密码加密后发送个服务器进行认证。注册模块是用户注册新账号的一个模块,用户注册信息正确后服务器会返回一个账号ID,之后的登陆需要使用这个ID号和密码进行登陆。游戏大厅中有一个配置文件ini,文件中保存的是上次登录的用户名、密码(如果选择保存密码)、IP地址和端口(供游戏进程进行连接)。游戏进程就是进行游戏的进程,游戏中设计了6个关卡,只有当前关卡成功通过后才会进入下一个关卡,通过关卡后向游戏大厅发送当前的数据信息,大厅向服务器发送更新数据的请求。更新成功后游戏进入下一个关卡。游戏中会播放背景音乐,其中有背景音乐的开关,可以选择打开音乐或关闭音乐,这个功能会以ini文件保存在本机中,方便下次打开游戏的时候还记录上次的开关记录。配置文件ini中还记录着游戏大厅的IP地址和端口号等信息,在开启游戏进程的时候游戏进程以客户端的形式连接游戏大厅,这是数据能够进行传输的基础。下面是系统分析图:第一节 系统框架图整个游戏系统的整体框架中涉及三个进程,所以数据之间的交流需要有清晰的布局,系统流程图见图3.1:图 3.1 系统流程图系统包括玩家和数据库管理员,系统E-R图见图3.2:图 3.2 系统E-R图用户要想进行游戏就必须要进行账号的注册和登陆,系统的顺序图见图3.3:图3.3 系统顺序图第二节 服务器与客户端数据传输游戏大厅负责注册、登陆、更新用户信息、用户聊天,当做游戏进程的服务器等功能,服务器与客户端流程图见图3.4:图3.4 服务器与游戏大厅通信流程图游戏中在进行新的账户时,需要在联网的情况下进行,因为要将用户的信息发送到服务器中存储进数据库,用户在登陆时就可以使用已经注册过的账户进行登陆。用户注册流程图见图3.5所示:图3.5 用户注册流程图用户登陆的账户必须是已经注册过的账号,而且要处于联网的状态下才可以进行登陆成功,因为数据会被发送到服务器中与数据库中的数据进行比对,服务器会将比对的结果返回给用户,比对成功才能进入游戏,用户登陆流程图见图3.6:图3.6 用户登陆流程图在玩家通过下一个关卡时,游戏进程会将已经通过关卡的数据发送给游戏大厅,由游戏大厅将更新的数据发送给服务器,服务器将数据更新到数据库中,用户数据更新流程图见图3.7:图3.7 用户数据更新流程图在玩家登陆成功后会跳出游戏大厅,游戏大厅现实了当前登陆账号的信息和所有玩家的排名。玩家可以在左边窗口中进行聊天,聊天数据将会发送给服务器,服务器将数据发送给每一个在线的玩家,这就实现了玩家们之间的互动,用户聊天流程图见图3.8:图3.8 用户聊天流程图第三节 数据库表设计数据库一共使用了两张表,分别是system表、userdata表。system表用于存储已经注册的用户数量和已经注册的最大ID号。userdata表用于存储每一个已经注册用户的数据,用于用户登陆时进行验证和保存用户游戏中的数据。两张表的设计如下:表3.1 system表信息字段名字段类型长度主/外键字段值约束对应中文名alwaynumberint4所有注册的用户量IDint4当前已注册的最大IDFALGint4P标记一张表表3.2 userdata表字段名字段类型长度主/外键字段值约束对应中文名USER_PASSWORDvarchar50用户的密码MD5值USER_IDvarchar20P用户的ID号USER_NAMEvarchar50用户昵称USER_GRADEint4用户等级USER_EXPERIENCEint4用户经验USER_SEXint4用户性别(1.男 2.女)USER_PASSint4用户通过的关卡第四章 详细设计整个网络游戏使用了TCP/IP协议进行数据的传输,服务器绑定配置文件里的IP地址和端口并打开配置文件里保存的数据库的用户名和密码以及数据库名称等信息,服务器的绑定和打开数据库成功这等待接收客户端的连接,失败则关闭服务器。服务器主要是基于线程池的一个服务器模型,没有一个客户端进行连接成功后就会把当前的用户的ID和端口绑定在一起,并存储在一个vector向量里面,也就是将现在在线的用户都存储在vector的容器里面,在有聊天信息到来的时候可以根据这个向量里面的端口发送数据。服务器打开数据库的连接以后,可以对数据库进行操作,操作的内容包括数据的插入、更新、修改等。服务器接收到客户端的连接以后会启动一个线程来处理相应的客户的信息,线程中使用的是switch的程序块来处理数据,根据用户发送过来的不同数据进行不同的处理,客户端每一次向服务器发送数据时都会想服务器发送一个数据头,这个数据头使用一个结构体来表示,这个结构体字节大小是固定的,结构体里面包含有即将发送过来的数据的长度和数据的类型(包括注册、登陆、聊天、更新数据等),服务器就是根据这两个信息来判断数据是否被接收完和用户发送过来的是什么数据类型的信息。接收到用户的注册信息时,调用注册函数,将用户的信息插入到时数据库中,并返回系统为用户分配的ID号给用户,用户需要通过这个ID号来登陆游戏。当接收用户登陆的信息时,调用用户登陆信息的函数,该函数会将用户发送过来的用户密码和账号在数据库中进行比较,如果正确则返回登陆成功,失败则返回失败信息让用户重新输入账号和密码。当发送的是数据更新信息时,调用数据更新函数,将用户的游戏信息进行更新。当发送的是聊天信息时,调用聊天信息函数,将用和发送过来的信息发送给其他所有的在线用户。当是用户的退出信息时,将当前用户的套接字描述符和IP等信息从vector向量容器中移除。游戏大厅模块的详细设计包括用户的登陆界面和注册界面和大厅等三个模块。登陆界面主要是提供用户输入账号和密码,发送给服务器,让服务器进行验证。登陆界面还提供了注册的模块,用户可以通过注册模块注册新的账号,注册信息包块用户的昵称、密码、确认密码、性别选择、验证码等信息输入,注册成功后服务器返回一个ID账号,用户需要通过服务器返回的ID和注册的密码进行登陆。登陆成功后显示的是游戏大厅,游戏大厅根据性别来显示相应的图片信息,性别是男生的就显示男生的图片,是女生就显示女生的图片。图片的下面需要显示的是用户的信息,包括用户名、用户等级、用户的头衔、用户性别等信息,这些信息在登陆成功后由服务器返回。大厅的中间部分显示所有游戏玩家的排名信息,根据玩家的经验来进行排名。大厅的左边是游戏的聊天窗口,该窗口提供了玩家之间的交流和互动,提高更好的用户体验,聊天信息发送给服务器,由服务器进行转发,形成C/S模型。大厅的下方有三个按钮,包括“开始游戏”、“刷洗列表”、“退出游戏”等三个按钮。鼠标点击开始游戏按钮时调用游戏进程开始游戏,“刷新列表”是刷新游戏玩家的排名信息。游戏开始时将用户的信息发送给游戏进程。游戏进程模块中是玩家进行游戏的一个进程,游戏中有不同的关卡玩家只有在取得当前的关卡胜利后才可以进入下一个关系,并且将数据发送给大厅,将数据同步到服务器。游戏中分布多顶帐篷和多个足球,游戏中还有石头、树木、木柜、水池等障碍物,玩家需要思考后才可能将足球踢入帐篷中,当足球经过障碍物都踢进帐篷后游戏过关,游戏中会统计玩家在经过关卡使用的时间,将时间通过公式换算成经验,达到一定经验后升级,根据等级的不同会获得不同的头衔。游戏的界面使用了泡泡堂一样的游戏图片,图片使用的都是卡通素材,更加贴近游戏的风格。游戏进程里还有背景音乐,采用了轻松愉快的背景音乐,使其更加的贴近游戏的风格,游戏界面的左边有游戏音乐的控制开关,可以根据需要对游戏进行音乐的开关控制。游戏进程的左上方显示当前玩家的信息和游戏的玩法提示,为用户提供更好的用户体验。这个游戏项目中包含了服务器代码,游戏大厅代码、游戏进程代码。代码中也设计了比较对的算法对问题的实现。下面是代码的核心算法实现。第一节 服务器设计对于服务器,是整个项目的枢纽,即是用户数据的交流的一个转接点,也是访问数据库的的一个重要进程。用户的注册、登陆、聊天、数据获取和数据更新都需要传输给服务器进行验证,所以对于一个网络游戏来说,服务器是必不可少的,服务器在用户进行游戏的过程中能够准确无误的运行才能证明是一个成功的服务器。游戏服务器是基于线程池的服务器模型,当有客户端进行连接时就会创建一个线程来处理客户端的事务,服务器第一步是接收客户端发送过来的数据头,数据头是服务器和客户端公有的数据结构,数据头的大小是固定的,服务器可以根据头部的大小来完整的接受到客户端发送过来的数据头。之后,服务器根据对接收到的数据头进行分析判断做不同的处理,数据头包含了即将接收到的数据的大小和类型,根据数据头的大小可以正确的接收完客户端发送过来的实际操作数据,并且根据操作类型执行具体的操作。服务器在向客户端发送数据时,也是先将数据头发送给客户端,之后再发送实际的数据,这样做的好处就是客户端可以根据不同的数据来做不同的处理,实现了多功能,即:注册、登陆、聊天、数据获取和数据更新。服务器逻辑设计流程图见图4.1:图4.1 服务器逻辑设计流程图所以服务器的设计是非常重要和关键的,服务器的核心代码见附录。第二节 游戏大厅设计与用户直接交流的就是游戏大厅,用户登陆系统成功后,呈现在眼前的就是游戏大厅。游戏大厅的设计也是至关重要的,实现了多功能的游戏大厅可以给用户带来更好的体验。因为所有发往服务器的数据都是从大厅进程发送出去的,服务器发送来的数据也都是由大厅来接收的,所以对接收和发送的数据类型的设计以及数据同一个socket接收到的数据如何存储等都是其中的关键点和难点,对此,使用的是多线程来接受服务器发送过来的数据,所有的接收都是在新开辟的这个线程中执行,其它线程是不执行接收操作的,接收的数据存储到了一个向量容器中方便其它线程获取服务器发送过来的数据,其中还使用了线程锁来处理临界资源互斥的问题。大厅的设计基于MFC的对话框,使用了列表、button等控件进行界面的布局。对于大厅接收服务器的数据是在开辟的独立的一个线程中进行的,所有服务器发送过来的数据都是由这个线程接收,因为大厅中的聊天功能是随时都会有数据发送过来的,在这时如果有在更新排名列表就会有两个线程同时recv的情况,这种方法就很好的解决了多线程同时recv一个描述符时带来的问题。接收来的数据是存放在一个全局的向量容器中,设计一个获取相应类型数据的函数GetData(int msgType, char *buf1, char *buf2),这个函数可以提供给不同线程之间获取相应的数据,每一次数据被获取之后删除掉容器中的数据。对于游戏大厅与游戏进程,游戏大厅则充当了服务器,负责与游戏进程进行数据通讯,游戏进程启动时,将玩家的数据发送给游戏进程,玩家每通过一个新的关卡以后将数据发回游戏大厅,大厅再将数据发往服务器进行更新保存。所以游戏大厅功能的设计也是非常关键的,游戏大厅的设计逻辑流程图见图4.2:图4.2 游戏大厅逻辑设计流程图具体核心算法见附录。第三节 游戏进程设计对于一款网络版游戏来说,最重要的就是游戏的玩法和游戏的界面能否给玩家带来快感,游戏中的环节是否给玩家带来乐趣等。所以游戏进程才是这个项目的重点,游戏中涉及到很多的逻辑设计,关卡的切换、背景音乐的开关、键盘数据获取后进行相应的处理,鼠标信息的处理、游戏中胜利的判断、人物和小球的移动、帐篷的抖动、障碍物的判断.需要进行很多的逻辑判断,否则程序将无法运行。程序中也使用了多线程技术对用户输入的信息进行处理,对用户输入的键盘和鼠标信息进行相应的处理,另开一个线程对游戏的界面进行绘制,游戏进程也使用了TCP/IP协议与游戏大厅进行数据的传输,其中最复杂的也就是游戏进程。游戏中使用了二维数组对地图进行布置和绘制,二维数组的值存储不同的值会显示不同的图片,实现了游戏的界面布局。使用双重循环对整个界面进行绘制,循环中对人物和其他障碍物进行了判断以及坐标的计算等,通过公式计算对足球的位置进行坐标判断,对帐篷的动态显示和静态显示也做进一步的处理等。游戏中还有对显存进行模糊化操作,获取整个窗口的显存后将每一个像素点进行RGB分解,在将RGB三个值进行一定比例合成,使全屏模糊化,到达游戏的特效效果。对于游戏人物的移动,通过获得键盘的消息,判断消息的类型使人物显示不同的方向。游戏中绘制界面通过不断的循环绘制,每秒钟最多绘制25帧的图片,对于一个休闲游戏来说,每秒25帧图片已经足够使游戏可以流畅的进行。游戏中还添加了背景音乐,背景音乐是可以控制开与关的。游戏进程的逻辑设计流程图见图4.3:图 4.3 游戏进程逻辑设计流程图具体核心算法见附录。第五章 程序运行与测试经过几次对游戏进行系统级功能测试之后,整个游戏系统可以成功的运行。测试的目的是对整个游戏系统的各个功能模块进行功能测试和压力测试,并对系统中各个模块的协调工作进行测试,确保程序在Windows平台上能够正常运行。下面是整个系统运行界面与所有功能模块的测试结果。第一节 程序运行截图游戏登陆界面使用的是MFC创建,并使用了一个界面库对界面进行了更改,使界面看上去更加接近游戏的风格,游戏的登陆界面如下图所示:图5.1 游戏登陆界面如果还没有账号,那么可以在下面的界面中注册新的账号,游戏注册新账号如下图所示:图5.2 游戏注册界面登陆成功后会出现游戏大厅窗口,窗口中显示了用户的所有信息(除密码外),以及会有已经注册玩家的排名信息,并可以在该窗口中进行聊天。游戏大厅如下图所示:图5.3 游戏大厅界面及功能游戏中还提供了聊天的功能,玩家之间可以在游戏中进行交流,游戏聊天界面如下图中的右边部分所示:图5.4 游戏聊天功能游戏开始时都会出现下面的界面,突出游戏的风格,游戏开始的界面如下图所示:图5.5 游戏开始界面游戏中使用了与泡泡堂类似的游戏图片,使用的是卡通风格的图片,并在进程中设置游戏的地图,不同的关卡有不同的地图。游戏中还会显示当前玩家的信息,实现更加友好的游戏界面。图5.6 游戏界面图5.7 游戏胜利界面图5.8 游戏不同关卡有不同界面(共6个关卡)游戏中还可以设置游戏的背景音乐,不想听音乐的或者怕影响到别人的可以将游戏中的音乐关闭掉,音乐开关处于游戏界面的右下方,使用鼠标点击就可以对音乐进行控制。如下图所示:图5.9 游戏音乐关闭时显示的图标类型第二节 服务器模块测试在运行服务器时,服务器会自动根据配置文件里面的选项绑定IP端口和打开数据库等操作,配置文件中必须填写好正确的数据,否则服务器将不能正常运行,服务器的测试是对新注册的用户是否添加成功、用户信息是否更新成功、聊天信息是否发送成功、用户登陆是否成功以及获取用户排名等功能测试。下面是服务器的测试模块如下:测试模块:服务器功能测试测试类别:功能测试测试时间:2015年4月15日表5.1 服务器单元测试编号测试说明期望的结果实际的结果成功/失败1根据电脑的IP和端口对服务器进行设置服务器能够成功进行绑定服务器能够成功绑定成功2根据数据库的账号和密码、数据库名进行配置服务器能够成功打开数据库服务器成功对数据库进行操作成功3新用户注册功能服务器接收到客户端的注册信息,并填入数据库数据库中查找到了新注册的用户成功4用户的数据更新请求服务器接收到客户端的更新数据请求信息,服务器更新数据库的数据数据库中的用户数据被更新成功5客户的聊天信息转发服务器接收到用户的聊天信息并转发给在线用户、其他在线用户可以接收到信息启动其他游戏界面,可以接收都其他游戏玩家的数据成功6用户登陆模块认证服务器接收到用户的登陆信息,并向数据库发出认证请求服务接收到客户的登陆数据,并能向服务器进行认证成功7接受新的游戏客户端连接新的客户端启动时接受连接并创建处理线程成功接受新客户端的连接成功第三节 游戏大厅测试游戏大厅是玩家和游戏服务器进行数据交流,并且可以调用游戏进程作为游戏进程的服务器,与游戏进程进行通信,接收游戏进程发送过来的数据并发送给服务器。测试模块如下:测试模块:游戏大厅测试类别:功能测试测试时间:2015年4月15日表5.2 游戏大厅单元测试编号测试说明期望的结果实际的结果成功/失败1注册模块填写注册信息发往服务器,服务器返回注册后的账号注册成功,服务器返回账号信息成功2登陆模块登陆信息发给服务器,能够成功进入游戏界面服务器验证成功并进入游戏大厅界面成功3选择关卡模块可以选择玩家已经通过的游戏关卡并进入游戏选择已经玩过的关卡,并成功进入游戏成功4刷新游戏排名模块向
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年智能手表买卖合同
- 2025租赁合同需付款后方能生效
- 面对挑战的勇气话题作文(13篇)
- 广告创意效果评估体系指标量化工具
- 自律遵守行业规则承诺书6篇
- 企业预算编制与执行指南
- 员工招聘面试评估表模板专业版
- 2025设备采购与安装工程合同示范文本
- 时尚品牌商品承诺书3篇
- 电子产品可靠功能确保承诺函6篇范文
- 2025年中广核在线笔试题及答案
- 村级用车管理办法
- 中国石油集团招聘考试题含答案
- 贸易跟单员的试题
- 医疗美容行业服务质量与消费者心理调研报告
- 兹母情深教学课件
- 浙江省杭州地区(含周边)重点中学2024-2025学年高一上学期期中考试政治试题(含答案)
- 电力企业应急处置教育培训课件
- 浙江警校心理测试题及答案详解
- 胎盘亚全能干细胞研究与应用
- 机械销售人员管理制度
评论
0/150
提交评论