基于VC++的8数码游戏设计与开发.docx
- 文档编号:2419427
- 上传时间:2022-10-29
- 格式:DOCX
- 页数:32
- 大小:442.75KB
基于VC++的8数码游戏设计与开发.docx
《基于VC++的8数码游戏设计与开发.docx》由会员分享,可在线阅读,更多相关《基于VC++的8数码游戏设计与开发.docx(32页珍藏版)》请在冰豆网上搜索。
基于VC++的8数码游戏设计与开发
基于VC++的8数码游戏开发
TheDevelopmentof 8DigitalGameBasedonVC++
基于VC++的8数码游戏设计与开发
摘要
八数码游戏是在3×3方格盘上,放有八个数码,剩下一个位置为空,每一空格其上下左右的数码可移至空格。
问题给定初始位置和目标位置,要求通过一系列的数码移动,将初始状态转化为目标状态。
作为本游戏的开发工具,VisualC++成为首选。
它具有可视化的编程界面、详细的提示、以及完善的帮助文档,使得我在软件开发过程中少走了很多弯路,提高了我的开发效率。
其中的MFC是由微软公司编写的一套专门用于Windows编程的C++基础类库,它封装了WindowsAPI的绝大多数功能,为用户开发Windows应用程序建立了一个非常灵活的应用程序框架。
本论文主要工作是该游戏的主要的功能模块的设计和实现:
判断游戏是否有解,空白模块移动,自动演示模块,最优解搜索功能的实现,及鼠标交互操作的功能。
其中最优解搜索功能主要是使用了A*算法来实现最短路径搜索。
【关键词】数码游戏VC++MFCA*算法最短路径搜索
TheDesignandDevelopmentof 8DigitalGame
BasedonVC++
Abstract
Digitalgamesareeight3×3gridontheplate,placedeightdigital,leavingapositionisempty,itstopandbottomofeachboxcanbemovedaroundthedigitalspace.Problemgiventheinitialpositionandtargetlocation,requiringaseriesofdigitalmobile,theinitialstateintoagoalstate.
Asthegamedevelopmenttools,VisualC++preferred.Ithasavisualprogramminginterface,thedetailedtips,andcompletehelpdocumentation,mademelessinthesoftwaredevelopmentprocesstakealotofdetours,improvetheefficiencyofmydevelopment.MFCisoneofasetofwrittenspecificallyforMicrosoftWindowsProgrammingC++basedclasslibrarythatencapsulatesthevastmajorityofWindowsAPIfunctionsforuserstodevelopWindowsapplicationscreatedaveryflexibleapplicationframework.
Thisthesisworkisthegame'smainfunctionmodulesofthedesignandimplementation:
todeterminewhetherthesolvabilityofthegame,movetheblankmodule,automaticpresentationmodule,thesearchfunctiontoachievetheoptimalsolution,andmouseinteractionfunction.SearchtheoptimalsolutionwhichismainlyusedtoachieveA*shortestpathalgorithm.
【Keywords】DigitalGamesMFCA*algorithmShortestPath
第1章绪论
随着世界经济的长足发展和计算机技术的日益成熟,计算机被应用到人类活动的各个领域,各种应用软件也相继问世,这其中有相当一部分是游戏软件。
使用游戏软件自然是为了满足人们对娱乐性的要求,而有些软件大都采用3D设计对系统配置的要求较高。
在众多游戏软件中,也不乏一些小游戏的身影,它们对系统的配置要求较低。
能够满足人们对娱乐性的需求,是人们在完成工作娱乐时候的最好选择。
现在越来越多的人投入到这种小游戏的开发当中,它已经成为一类必不可少的游戏软件。
在各种操作系统中都附带了一些小的游戏,而这些游戏也成为电脑用户软件中不可或缺的一部分。
如数码游戏、扫雷等。
1.1课题背景及意义
1、背景说明
8数码游戏操作能培养手眼协调能力─游戏需要耐心的操作,以及手眼协调能力,只要一不协调就不能将数据块放在正确的位置。
学习解决问题的方法及策略─玩8数码游戏能学习推理思考能力,因为尝试不同的选择,到决定正确的一块放下去,也就是经过假设、判断到选择的过程,能让玩家学习运用逻辑来解决问题的方法。
本程序使用的是微软最新开发的软件:
VisualC++,VC++比C更简洁,为可视化界面操作,利用类实现各种不同的功能。
2、课题意义
在人工智能领域中,八数码问题一直都是一个游戏难题。
介绍了八数码问题,然后在启发式搜索算法上对A*算法定义进行了解释,并在其旨在提高搜索效率的方面作了比较详尽的介绍,详细描述了基于图搜索算法的解决此类问题的一种启发式搜索算法A*算法。
再依据这种算法用可视化编程语言VC++6.0来实现八数码问题的求解过程,取得了预期的搜索解,提高了搜索效率。
编译本程序的目的一是对自己所学知识的巩固,二是希望可以给玩家带来全新的感受。
1.2八数码游戏的研究现状
在信息社会里,人们越来越依赖于搜索技术获取有用的信息,搜索是人工智能中的一个基本问题,是推理不可分割的一部分,它直接关系到智能系统的性能和运行效率。
在人工智能领域,所提供的每种问题求解方法,都需要某种对解答的搜索,从提出问题(即初始状态)到问题的解决(即最终状态),有个求解的过程,也就是搜索过程。
用于搜索的方法[13]主要有两大类:
一类是盲目搜索,另一类是启发式搜索。
盲目搜索是指在不具有对待定问题的任何有关信息的条件下,按固定的步骤进行的搜索,如深度优先搜索和广度优先搜索;启发式搜索是指在搜索中加入了与问题有关的启发性信息,这些信息可以指导搜索朝着最有希望的方向前进,加速问题的求解过程,并找到最优解,如A*算法。
八数码游戏的研究现状主要是如何选择更更快速、更高效地找到问题的解答。
深度优先搜索是按照一定的顺序先搜索完一个分支,再搜索另一个分支,以至找到目标为止。
由于一个有解的问题可能含有无穷分支,该搜索如果误入无穷分枝(即深度无限),则不可能找到目标节点。
所以,深度优先搜索策略是不完备的。
另外,应用此策略得到的解不一定是最佳解。
广度优先搜索是从初始状态一层一层向下找,直到找到目标为止。
当我们发现目标节点时,可以同时找到从初始状态到达目标状态的一条最短路径。
因此,这种策略是完备的。
以上两种搜索有一个很大的缺陷,就是它们都是在一个给定的状态空间中穷举,极容易遇到以下问题:
搜索中易出现循环,即访问某一个状态后又来访问该状态;搜索路径不佳便无法得到较好的中间状态集(即中间状态集的元素数量过大);搜索过程中访问了过多的无用状态,这些状态对最后的结果无帮助。
通过比较显示出启发式搜索的优越性:
一方面,当发现目标节点时,可以同时找到从初始状态到达目标状态的一条最短路径;另一方面,由于搜索不是盲目的,因此不需要扩展每一层的所有节点,只需要扩展最有希望到达目标的节点即可。
但是,对于这种搜索方式,使用正确的评估函数是相当重要的,评估函数选择的正确与否与搜索的效率直接相关。
所以,在八数码游戏中,我选择了启发式搜索,即A*算法来实现最优解的搜索功能。
1.3本论文的研究内容
本文深入分析了课题的背景及意义、八数码游戏的现状和发展趋势、对游戏的需求分析(讲述游戏的功能和对操作进行分析)、游戏特色进行了分析说明。
在前人的研究基础上结合算法处理对8数码游戏进行设计。
本游戏在最优解搜索部分通过在对各种算法的可行性和效率进行了比较,最终选择了A*算法来实现该模块的功能。
简单介绍了该游戏开发工具VisualC++和MFC,选择这两种开发工具简化了游戏的界面的设计与实现。
通过系统的分析和策划,实现了游戏的主要功能。
本论文主要工作内容是该游戏的主要的功能模块的设计和实现,如:
判断游戏是否有解,空白模块移动,自动演示模块,最优解搜索功能的实现,及鼠标交互操作的功能。
其中最优解搜索功能主要是使用了A*算法来实现最短路径搜索。
在完成该游戏之后,还进行了部分的游戏数据测试,来判断该游戏的功能是否正确的实现。
1.4论文结构
第一章:
主要介绍了课题的研究课题研究背景和意义、八数码游戏的发展现状、以及论文的研究内容,并介绍了本游戏的主要工作。
第二章:
主要是对游戏主要开发工具VisualC++、MFC的概述、使用的主要技术。
第三章:
主要介绍了游戏的系统分析,包括:
需求分析、功能分析、可行性分析等。
第四章:
主要是对游戏进行设计,包括框架搭建、算法设计及分析。
第五章:
主要是进行游戏的实现,包括游戏的界面、核心功能、用户交互操作的实现。
第六章:
主要介绍了游戏的部分数据测试,以检测游戏的主要功能是否能够准确执行。
第七章:
对自己所做的工作进行总结,同时对数码游戏做了展望。
第2章游戏开发工具与关键技术介绍
本章通过介绍VisualC++和MFC的主要功能和关键技术介绍,并体现了这两种工具在该游戏的开发过程中的优势。
2.1VisualC++概述
VisualC++[3]为用户提供了一个可视化、通用的应用程序集成开发环境——DeveloperStudio(也俗称VisualStudio)。
DeveloperStudio包含了一个文本编辑器、资源编辑器、工程编译工具、一个增量连接器、源代码浏览器、集成调试工具以及一套联机文档(MSDN)。
通过DeveloperStudio,开发人员可以完成项目工程的创建、程序的编辑、修改、运行和调试等各种操作。
DeveloperStudio采用标准的多窗口用户界面,提供了大量实用工具以支持可视化编程的特性,包括项目工作区、AppWizard(应用程序向导)、ClassWizard(类向导)、WizardBar(向导工具条)、ComponentGallery(组件画廊)等。
1、项目工作区
在DeveloperStudio中,项目工作区用于组织项目、元素以及项目信息在屏幕上的显示方式。
在一个项目工作区中,可以处理一个工程和它所包含的文件、一个工程的子工程、多个相互独立的工程、多个相互依赖的工程。
项目工作区底部有一组项目视图切换选项卡(包括3种视图),用于从不同的角度查看项目中包含的工程和联机文档。
在项目视图中,每个视图都有一个相应的文件夹,包含了关于该项目的各种元素。
3种视图的含义如下所述。
FileView(文件视图):
显示所创建的工程,展开文件夹可以查看工程中所包含的文件。
ClassView(类视图):
显示项目中定义的C++类,可以查看工程中定义的所有类,展开类还可以查看类的数据成员、成员函数、全局变量、函数和类型定义。
RourceView(资源视图):
显示项目中所包含的资源文件,展开文件夹可显示所有的资源类型。
2、AppWi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 VC 数码 游戏 设计 开发