摘 要 本论文研究生论文摘要的是以Qt4.6为开...

基于QT的扫雷游戏设计与实现_C++_毕业设计论文网
未找到您最近浏览过的网页
历史浏览记录
热门搜索词: |
全部设计论文分类
本站所有出售的 资料均严格保密无重复,出售过后会做详细的记录避免重复,
QQ临时会话 可能会导致消息无法正常接收,咨询前请务必先加***为好友.QQ:
本站提供的资料 都是已经做好的,现成的作品都是审核过的,保证质量和规范.
基于QT的扫雷游戏设计与实现
以下是大纲或介绍,如需要完整的资料请购买. 限&密&惠
提示:本资料已审核过,内容原创保密,格式标准,质量保证.
1.无需注册,购买下载后即可获取该完整资料.
2.购买后本站提供下载链接或联系***发送资料.
基于QT的扫雷游戏设计与实现(任务书,外文翻译,毕业论文10000字,程序代码)
本论文研究的是以QT为开发环境,设计并开发一款扫雷游戏,其功能类似于Windows操作系统自带的扫雷游戏。实现的功能有界面的规划,游戏难度的调整,计时器,鼠标事件以及游戏完成的判定。
论文首先介绍了制作游戏的整体思路及整个游戏设计的流程规划,然后介绍了雷区的布置及地雷随机产生的实现方法;重点介绍了在游戏过程中各事件的处理,其中又以鼠标事件和清除未靠近地雷区方块这两方面最为最要,鼠标事件是利用鼠标所发出的信息了解使用者的意图,进而做出相对应的动作,而清除未靠近地雷区方块由于引进了&扩散&这个概念而使其简单化。
本次设计只是完成了扫雷游戏的基本功能,在细节方面仍然有待完善。
关键词:扫雷; QT; 事件; 扩散
Design And Implementation Of Minesweeping Game Based On The QT Platform
What my thesis research for is basic on the develop environment of &QT, design and develop a mine game,its function is similar to the mine games of the Windows Operating System .
The thesis has introduced the layout of mined areas and the method of how to create the mines at random. It use vairies of components in QT and the combination of some the thesis lays emphasis on introducing the processing of each event in the game. Among these events ,the mouse event and the event of clearance of the area which isn&t close to the mine field are much more important.The theory of mouse event is that the intention of user is learned by the information sent out by the mouse and then the program runs according to the information .The other event is simplified by the introduction of the concept of spread.
This design has been completed the basic function of mine game. The details still need to be improved.
Key words: Mine game; &QT; Affairs;Spread
相信大多数使用Windows操作系统的使用者,对这款游戏都不陌生。这款游戏不止操作简单,规则也不难,再加上游戏速度的控制机制得宜,让整个游戏在操作过程中充满了快乐与紧张的气氛。除了游乐当中能带给使用者快乐之外,游戏的设计内容无形中也不断训练使用者的逻辑思考能力,对于依靠高度脑力工作的现代人,都可以通过这个游戏,不时的检验一下自己,所以我们不难发现,在各种可携带的电子产品上都有这款游戏的踪影。
在设计之前,我们先来了解这款游戏的规则。
在不掀开任何藏有地雷的方块情况下,以最快的速度找出所有的地雷。如果在掀开方块的过程中,不小心翻开(踩到)藏有地雷的方块,则宣告失败(游戏结束),惟有将所有不含地雷的方块掀开,游戏才算成功。
游戏的操作方面主要以鼠标为主,当鼠标指针对准未翻开的方块按下左键时即表示翻开方块,当鼠标指针对准未翻开的方块按下右键时即表示标记或取消标记地雷,反复按下右键则方块会以标记,取消标记两者之间不断循环。游戏者可以通过地雷区内的数字提示了解以数字为中心的其周边八个方格内所含的地雷数,假若翻开的方块显示数字&3&,则表示以其为中心的周边方块内藏有3个地雷。
当按下的方块不是地雷,且周边八个方块也都没有地雷时,方块会以被翻开方块的八个方向将空白方块翻开。
3.2 流程规划
流程规划大致上可以分为三个部分,分别为:游戏开始阶段、游戏进行阶段和游戏结束阶段。
游戏开始时,会以游戏者最后一次设定的地雷区大小为范围画出地雷区,同时会产生地雷并且开始计时。游戏进行阶段主要就是如何判断按下的方块是非地雷时的处理,这也是整个游戏的技术核心,我们可以通过扩散的观念来检查周边的方块是否含有地雷及是否继续往外翻开,以及鼠标右键的标记功能的实现。游戏结束阶段,判定游戏是否结束有两种情况,第一种是没有踩到雷,成功完成游戏,会弹出提示框提示赢得游戏,如果创造了新的纪录,则会弹出提示框提示输入姓名。第二种是踩到雷,也就是游戏失败,同样会弹出提示框来提示输掉游戏。
〖资料来源:毕业设计(论文)网 〗
Abstract ii
第1章 绪论 1
1.1研究背景 1
1.2 开发的目的及意义 1
1.3开发工具的选择 1
第2章 QT架构与平台搭建 2
2.1 QT介绍 2
2.1.1 QT语言的特性 2
2.1.2 QT的优势 2
2.1.3 QT/Embedded介绍 3
2.2 QT的架构 4
2.3 QT的组成 4
2.4 QT开发平台的搭建 6
2.5 QT SDK及QT Creator工具的*** 6
第3章 游戏的总体分析与设计 8
3.1 设计构想 8
3.2 流程规划 8
3.3 画面规划 10
第4章 游戏的详细设计 11
4.1 游戏的开始 11
4.2 雷区分布 12
4.3 游戏中主要模块的介绍与使用 14
4.3.1鼠标事件 14
4.3.2地雷及雷区表面探测情况 15
4.3.3清除未靠近地雷的方块 16
4.3.4游戏难度的选择 17
4.4 游戏的判断 19
4.4.1游戏成功完成 19
4.4.2 游戏进行失败 21
4.5 重新进行游戏 22
4.6 关于游戏 23
4.7 英雄榜 24
4.8 游戏测试及结果 25
参考文献 27
外文原文 29
外文翻译 42
相关内容:
本站提供的资料属原创,内容严格把关,均审核通过的,保证质量和规范.
提供下载链接或发送至您的邮箱,资料可重复发送,确保您收到为止.
收到资料后若有任何疑难问题,均可通过本站***提供帮助解决.
我们确保发送的资料完整无损,如核实为不合格资料,可以申请退换.
本站所列毕业设计(论文)资料均属于原创者所有,初衷是为大家在毕业设计(论文)过程中参考和学习交流之用,请勿做其他非法用途,转载必究,如有侵犯您的权利或有损您的利益,请联系本站,经查实我们会立即进行修正或删除相关内容!
Copyright &
苏ICP备号 |dxwangtcg 的BLOG
用户名:dxwangtcg
文章数:367
评论数:188
访问量:1147331
注册日期:
阅读量:5863
阅读量:12276
阅读量:425005
阅读量:1113347
51CTO推荐博文
google的数据后端处理大家可能听说过,所使用的并行机制是map-reduce, 也就是用map去收集整理一个数据集,之后用reduce对数据集进行处理,得出想要的结果。原理很简单,但是就是这个简单的原理构成了google搜索的强大的基石,另外google的map-reduece是分布式的,呵呵
这段时间研究qt4.6,它对于并行处理这一块做了非常不错的封装,使用很简单,不用考虑线程同步处理等问题,下面就用这个最著名的统计单词个数的例子说明,代码真实太简单了
#include &QList&
#include &QMap&
#include &QTextStream&
#include &QString&
#include &QStringList&
#include &QDir&
#include &QTime&
#include &QApplication&
#include &QDebug&
#include &qtconcurrentmap.h&
#ifndef QT_NO_CONCURRENT
using namespace QtC
Utility function that recursivily searches for files.
QStringList findFiles(const QString &startDir, QStringList filters)
QDir dir(startDir);
foreach (QString file, dir.entryList(filters, QDir::Files))
names += startDir + &/& +
foreach (QString subdir, dir.entryList(QDir::AllDirs | QDir::NoDotAndDotDot))
names += findFiles(startDir + &/& + subdir, filters);
typedef QMap&QString, int& WordC
Single threaded word counter function.
WordCount singleThreadedWordCount(QStringList files)
WordCount wordC
foreach (QString file, files) {
QFile f(file);
f.open(QIODevice::ReadOnly);
QTextStream textStream(&f);
while (textStream.atEnd() == false)
foreach(QString word, textStream.readLine().split(& &))
wordCount[word] += 1;
return wordC
// countWords counts the words in a single file. This function is
// called in parallel by several threads and must be thread
WordCount countWords(const QString &file)
QFile f(file);
f.open(QIODevice::ReadOnly);
QTextStream textStream(&f);
WordCount wordC
while (textStream.atEnd() == false)
foreach (QString word, textStream.readLine().split(& &))
wordCount[word] += 1;
return wordC
// reduce adds the results from map to the final
// result. This functor will only be called by one thread
// at a time.
void reduce(WordCount &result, const WordCount &w)
QMapIterator&QString, int& i(w);
while (i.hasNext()) {
result[i.key()] += i.value();
int main(int argc, char** argv)
QApplication app(argc, argv);
qDebug() && &finding files...&;
// 首先得到要统计目录下的所有文件
QStringList files = findFiles(&../../&, QStringList() && &*.cpp& && &*.h&);
qDebug() && files.count() && &files&;
qDebug() && &warmup&;
time.start();
WordCount total = singleThreadedWordCount(files);
qDebug() && &warmup done&;
int singleThreadTime = 0;
time.start();
// 单线程统计,好与mapreduce这种机制实现的作对比
WordCount total = singleThreadedWordCount(files);
singleThreadTime = time.elapsed();
// 打印出所耗费时间
qDebug() && &single thread& && singleThreadT
int mapReduceTime = 0;
time.start();
// mapreduce方式进行统计
WordCount total = mappedReduced(files, countWords, reduce);
mapReduceTime = time.elapsed();
qDebug() && &MapReduce& && mapReduceT
// 输出mapreduce方式比单线程处理方式要快的倍数
qDebug() && &MapReduce speedup x& && ((double)singleThreadTime - (double)mapReduceTime) / (double)mapReduceTime + 1;
int main()
qDebug() && &Qt Concurrent is not yet supported on this platform&;
通过这个测试用例,在统计文件很少的情况下,或者单核cpu的情况下,基本性能相同,但是如果统计文件一多,那么速度提升是很大的,自己的双核机器上统计300多个文件的加速比是1.3613,还是很不错的。
了这篇文章
类别:┆阅读(0)┆评论(0)

参考资料

 

随机推荐