首页 VC俄罗斯方块毕业论文--万伟

VC俄罗斯方块毕业论文--万伟

举报
开通vip

VC俄罗斯方块毕业论文--万伟VC俄罗斯方块毕业论文--万伟 学号: 200900006413 先锋软件学院2011届 毕业设计(论文) 题目:俄罗斯方块游戏的设计与实现 作者姓名 万 伟 指导教师 李 俊 所学专业 电脑游戏 班级 0906 所属院系 软 件 分 院 学习年限 2009 年 9 月至 2012 年 6 月 一二 二〇 年 五 月 目 录 内容提要 ................................................................... I 引言 ........

VC俄罗斯方块毕业论文--万伟
VC俄罗斯方块毕业 论文 政研论文下载论文大学下载论文大学下载关于长拳的论文浙大论文封面下载 --万伟 学号: 200900006413 先锋软件学院2011届 毕业 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 (论文) 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 目:俄罗斯方块游戏的设计与实现 作者姓名 万 伟 指导教师 李 俊 所学专业 电脑游戏 班级 0906 所属院系 软 件 分 院 学习年限 2009 年 9 月至 2012 年 6 月 一二 二〇 年 五 月 目 录 内容提要 ................................................................... I 引言 ........................................................................ 1 1. 绪论..................................................................... 1 1.1游戏的历史 ............................................................ 1 1.1.1 从头谈起 .......................................................... 1 1.1.2 图形硬件的革命 .................................................... 2 1.2游戏的意义与内涵 ...................................................... 2 1.3 游戏的组成要素 ...................................................... 2 2. 可行性研究 .............................................................. 3 2.1 设计目的 .............................................................. 3 2.2 可行性研究前提 ........................................................ 4 2.3 可行性分析 ............................................................ 4 2.4 结论 意见 文理分科指导河道管理范围浙江建筑工程概算定额教材专家评审意见党员教师互相批评意见 .............................................................. 4 3. 需求分析 ................................................................ 5 3.1 引言 .................................................................. 5 3.2 游戏需求 .............................................................. 5 4. 设计基本的游戏功能 ...................................................... 5 4.1 方块类定义函数 ........................................................ 6 4.2 程序核心函数 .......................................................... 7 5. 程序主要功能设计及按键事件的控制 ........................................ 7 5.1 建立工程 .............................................................. 7 5.2 添加定时器和开始按钮 ................................................. 8 5.3 添加暂停和重新开始按钮,完成基本的控制功能 ........................... 9 5.4 改变颜色和给方块添加图片 ............................................ 10 5.5 是否显示背景网格和下一个要出现的方块 ................................ 10 5.6 添加方块移动的声音 .................................................. 11 5.7 添加向下按钮步数设置 ................................................ 12 5.8 添加方块 ............................................................. 12 5.9 设置旋转游戏区 ....................................................... 12 6(程序设计思想与流程图 ................................................... 13 6.1 游戏实现的核心方法 .................................................. 13 6.2 游戏是怎么实现显示现在和已有的图形的。 .............................. 13 6.3 游戏是怎么判断方块已经重合的 ........................................ 13 6.4 游戏是怎么进行消行的 ................................................ 14 6.5 对于改变图形后越界或和别的图形重合的处理方法 ........................ 14 6.6按键事件 ............................................................. 15 致谢 ......................................................................... 参考文献 .................................................................... ABSTRACT .................................................................... 3 QT俄罗斯方块游戏的设计与实现 学生姓名:万伟 指导教师:李俊 内容提要 俄罗斯方块是个老幼皆宜的小游戏~它实现由四块正方形的色块组成~然后存储在一个数组的四个元素中~计算机随机产生不同七种类型的方块~根据计算机定时器控制它在一定的时间不停的产生~用户根据键盘的四个方向键控制翻转、向左、向右和向下操作~,用信号和槽函数的关联来实现对按键事件的控制,。然后程序根据这七种方块堆叠成各种不同的模型。Qt是诺基亚开发的一个跨平台的C++图形用户界面应用程序框架。它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。论文描述了游戏的历史~开发此游戏的环境~游戏开发的意义。遵循软件工程的知识~从软件问题定义开始~接着进行可行性研究、需求分析、概要设计、详细设计~整个开发过程贯穿软件工程的知识体系。 此次设计在Linux系统下~以QT+Creator为开发语言~使用C++和QT库来进行游戏的设计与实现。 关键词 数组 定时器 信号 槽函数 QT I 引言 在现今电子信息高速发展的时代,电子游戏已经深入人们的日常生活,成为老少皆宜的娱乐方式。俄罗斯方块是一款风靡全球的电视游戏机和掌上游戏机游戏,它曾经造成的轰动与造成的经济价值可以说是游戏史上的一件大事。这款游戏最初是由苏联的游戏制作人Alex Pajitnov制作的,它看似简单但却变化无穷,令人上瘾。相信大多数用户都还记得为它痴迷得茶不思饭不想的那个俄罗斯方块时代。究其历史,俄罗斯方块最早还是出现在PC机上,而我国的用户都是通过红白机了解、喜欢上它的。现在QQ等游戏平台又将重新掀起这股让人沉迷的俄罗斯方块风潮。对一般用户来说,它的规则简单,容易上手,且游戏过程变化无穷,而在游戏平台上的对战模式更增加了它的娱乐性和挑战性,使用户既能感受到游戏中的乐趣,也给用户提供了一个展现自己高超技艺的场所。 俄罗斯方块游戏可以说是随计算机的发展而发展,并不断推陈出新演变出各种类似游戏, 深受广大玩家喜爱。这个游戏有的简单, 有的复杂, 但其根本原理是一样的都是对运动的方块进行组合, 来训练玩家的反应能力。谈到游戏软件, 大多数人都认为其神妙莫测, 高不可及。而一般游戏软件也确实具有很高的技术难度, 随着开发工具及软件开发方法学的不断发展, 动手开发游戏也不是十分困难的。俄罗斯方块游戏是一种古老而又有趣的游戏, 游戏软件不计其数, 网上就有好多关于实现的复杂算法和设计, 其难度让一般初学者望而却步。本文利用数组作为方块的数据结构,提出一种用C语言和C++来实现的方法, 对初学者可仿此开发类似游戏, 并了解游戏软件的设计与开发过程。 1. 绪论 1.1游戏的历史 游戏开发至今已经有30多年,在这个短暂的时期里,随着硬件水平的提高,游戏开发新技术层出不穷,经典游戏比比皆是。 1.1.1 从头谈起 真正的电子游戏机产生于20世纪70年代。1971年,麻省理工学院的学生Nolan Bushnell设计了世界上的第一个业务用游戏机(俗名街机),叫做《电脑空间》。这台游戏机用一台黑白电视机作为显示屏,用一个控制柄作为操纵器,不过由于市场因素这款游戏以失败告终。但是最后他在电 1 子游戏的发展上取得了非凡的成就。 上面介绍的是专用机游戏的历史,而最早的电脑游戏可以追溯到1972年,一个叫Crowther的工程师用当时最流行的主机――DEC公司的PDP,10编写一段简单的FORTRAN程序。在这个程序里,Crowther设计了一张地图,地图上不规则的分布着陷阱,游戏者必须寻找路径避开陷阱。这个程序被公认为是最早的电脑游戏程序。 1989年,BroderBund公司的设计师乔丹.麦克纳根据阿拉伯民族的古老传说《一千零一夜》在Apple平台上制作了一部动作冒险相结合的电脑游戏――波斯王子。这个游戏获得了第一作,它代表了当时电脑技术的最高水平。 1986年,任天堂公司发售了一款真正的游戏巨作――超级马里奥。 20世纪80年代IBM PC兼容机的出现打破了Apple公司的垄断地位。 到了20世纪90年代,游戏业才真正成熟起来,成为了一种产业。 由于PC机价格非常低而且硬件速度越来越快,游戏逐渐成为人们生活中不可缺少的一部分。游戏产业也逐渐发展成熟。 1.1.2 图形硬件的革命 图形硬件的飞速发展是近些年来的事情,部分原因是来自工业方面的压力,例如在军事和医疗方面对于实时图形的需求很强烈,而交互娱乐产业也极大的推动了图形硬件的发展。技术上的因素同样也推动着图形硬件的发展,许多图形算法可以很容易地表达为并行方式,这样硬件执行的效率变得很高。摩乐定律也起了作用,越来越多的晶体管可以集成到一块单独的芯片上。 在所谓的GPU(图形处理器)概念出现以前,特殊的图形硬件只出现在诸如SGI和E&S系统里面,这些硬件价格太昂贵,不过这些公司提供了第一代基于硬件的顶点变换和纹理映射的解决 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 。 1.2游戏的意义与内涵 游戏这个名称一直就存在于每个人的日常生活中,如猜拳游戏、猜谜游戏、大地游戏、球类游戏等,林林总总,不胜枚举,甚至于有些流行歌曲把人生也比喻为游戏,好比“一场游戏一场梦” 。因此,游戏对于现代人的成长历程,绝对是一个不可或缺的重要角色。 1.3 游戏的组成要素 “游戏”,最简单的定义,就是一种供人们娱乐休闲的快乐元素。从更专业的角度形容, “游戏”2 是具有特定行为模式、规则条件、身心娱乐及输赢的一种行为表现。这种行为表现具备以下4个要素。 行为模式: “游戏”最简单的要素就是游戏有特定的流程模式,这种流程模式贯穿于整个游戏的行为,用户必须依照它的模式流程来执行。倘若一种游戏没有了特定的行为模式,那么就没有执行的行为;在没有执行的行为之后,这个游戏也玩不下去了。举个例子来说,如果猜拳游戏没有了剪刀、石头、布等行为模式,那么这还能叫做“猜拳游戏” 吗?所以不管游戏的流程有多么复杂还是多么简单,一定要有特定的行为模式。 条件规则:当游戏有了一定的行为模式后,接着就必须制定出一系列的条件规则。简单来说,这些游戏的条件规则就是大家必须去遵守的游戏行为守则,只要是大家一致以为的游戏行为,在游戏中,玩家就必须遵守它,如果不遵守这种游戏行为,那么就失去了公平性。如同一种简单的球赛,打球的英文解释可以用PLAY GAME来加以说明,按照英文字面上的解释,它就是执行游戏的行为,而球赛必须有一定的条件规则,并且参与者都要必须去遵守它,不能遵守它就叫作“犯规”。所以不管是什么游戏,它都会具备一组规则条件,在游戏进行的时候才会有足够的公平性。 娱乐身心:一种游戏所带来的娱乐性,关键就在于为玩家所带来的刺激感,这也是游戏的精华所在。简单来说,不管是很多人玩的游戏,还是一个人玩的单机游戏,游戏本身就会存在它的娱乐和刺激性,使得玩家们想要去玩它。 输赢:其实针对游戏而言,输赢是所有游戏的最终目的。一个没有输赢的游戏,也就没有了它存在的意义,如同我们常常接触到的猜拳游戏,说穿了最终目的就是为了分出胜负而己。 一般而言,游戏又可以分为动态和静态两种形态。动态的游戏必须配合肢体动作,如猜拳游戏;而静态游戏则是较偏向思考的行为,如同纸上游戏。然而不管是动态或是静态游戏,只要具备上述4项组成要素,都可以将它称为“游戏”。 2. 可行性研究 2.1 设计目的 综合运用在校期间所学理论知识和技能,设计开发俄罗斯方块,使自己熟悉应用系统的开发过程,培养独立思考能力,检验学习效果和动手能力,提高工程实践能力,为将来实际工作打下坚实的基础。 3 2.2 可行性研究前提 基本需求:系统开发的总体任务是实现游戏的可操作性、美观性、及时性。 开发过程遵循软件工程规范,可采用结构化或面向对象分析设计方法。主要实现windows的GUI程序开发,对游戏中的图形图像进行键盘控制。游戏者可以通过上下左右键来对游戏进行操作。 主要开发目标:采用结构化设计方法,开发出一个可操作性、美观性、及时性的游戏,实现windows的GUI程序开发,并通过此次软件开发过程全面提高自身的综合素质。 条件假定和限制:由于本软件目前是我的初次版本,可能还存在一些问题。如果该软件提高版本,本软件需要根据游戏者的要求进行进一步的修改。 可行性研究所采用的方法和步骤:通过研究分析俄罗斯方块所具备的能力及实现的方法、确定主体结构。利用现阶段我所能达到的能力,以最简洁、最容易的办法,边开发边测试边修改,实现一个初级游戏软件。 评价尺度:由于本软件是一个初级产品,对其要求不是太苛刻,所以能够达到俄罗斯游戏的一般功能即可。 2.3 可行性分析 管理可行性: 该游戏软件为首次开发,目的只为提高工作自身素质和检查自学Java的效果,用 Java3.0软件编写后在Applet管理器中运行简单明了,所有功能均根据基本需求所做。便于管理,所以在这方面是可以实现的。 经济可行性:由于本游戏的主要背景是毕业课程设计,不注重直接的经济效益和其后的发展方向,只在注重自身水平和能力的提高,对自身的经济要求也不高,只要有一台能运行JAVA3.0软件的电脑便可,所以不用考虑到经济问题。 技术可行性:可用与本游戏的编程语言有VB,Java,Delphi等,考虑到用于编写程序的困难度,和对语言的了解程度,选择JAVA作为编程语言。需要对变量定义、变量初始化、界面初始化、游戏初始化、然后进入游戏、处理游戏过程中的各种操作。 社会可行性:本游戏的开发作为毕业课程设计以巩固先前所学的知识,以个人为单位,仅供个人平常娱乐所用,无须考虑有可能造成的社会影响,不用考虑到法律、版权等的社会因素,所以在这方面是完全可行的。 2.4 结论意见 综上所述,本游戏软件的技术成熟、完备。各方面均无重大问题,因此本游戏软件可开始着手编写。 4 3. 需求分析 3.1 引言 对软件需求完全理解对于软件开发工作的成功是至关重要的,需求说明的任务是发现、规范的过程,有益于提高软件开发过程中的能见度,便于对软件开发过程中的控制与管理,便于采用工程方法开发软件,提高软件的质量,便于开发人员、维护人员、管理人员之间的交流、协作,并作为工作成果的原始依据,并且在向潜在用户传递软件功能、性能需求,使其能够判断该软件是否与自己的需求相关。 3.2 游戏需求 随机给出不同的形状(长条形、Z字形、反Z形、田字形、7字形、反7形、T字型)下落填充给定的区域,若填满一条便消掉,记分,当达到一定的分数时,过关,设置三关,每关方块下落的速度不同,若在游戏中各形状填满了给定区域,为输者。游戏功能要求如下: 游戏界面需求:良好的用户界面,有关数显示和分数显示。让方块在一定的区域内运动和变形,该区域用一种颜色表明,既用一种颜色作为背景,最好设为黑色。还需用另一种颜色把黑色围起来,宽度适中,要实现美感。 游戏形状(方块)需求:良好的方块形状设计,绘制七种常见的基本图形(长条形、Z字形、反Z形、田字形、7字形、反7形、T字型),各个方块要能实现它的变形,可设为顺时针或逆时针变形,一般为逆时针。 键盘处理事件:方块下落时,可通过键盘方向键(上、下、左、右键)对该方块进行向上(变形),向下(加速)、向左、向右移动。 显示需求:当不同的方块填满一行时可以消行,剩余方块向下移动并统计分数。当达到一定的分数时过关。设置三关,每关方块下落的速度不同。 4. 设计基本的游戏功能 参考QT库中基本的Tetrix实例,设计自己的方块类程序。 在QT中新建一个工程,向工程中添加新的普通文本文件。将设计好的4个文件添加复制到工程文件夹下并加入到工程中。在主函数中新建一个类的对象,用参数设置好方块的下移速度,就可以成功运行出一个基本的游戏程序。 5 4.1 方块类定义函数 方块和地图数据信息是游戏中最基本的功能模块。这个类提供方块图形 ,图形在4*4区域的位置信息 ,对图形进行旋转变化功能 Myitem.h Myitem.cpp这两个文件是方块类的定义文件,用来提供随机产生的方块。 定义7个四维数组unsigned char item[4*4],数组的第一维表示七种不同形态的方块,第二维代表方块的四种不同翻转状态。数组的第三维和第四维代表某一种形态的方块的某一状态。然后用代码实现下列功能: (1)每次执行首先为随机数产生不同的初值。 (2)随机选取一个图形 随机产生一个数 随机数 反Z形 一字形 Z字形 7字形 反7形 倒T形 田字 型 图4.1 随机产生方块图 (3)当前图形在其4*4网格中的位置信息 (4)改变图形形状 定义一个4x4方阵,共16个小格。用“0”和“1”来表示每个方格是绘制还是空白,由此可以组合出多种图形,如图所示: 6 图4.2 方块图 4.2 程序核心函数 Gamearea.h Gamearea.cpp是游戏区域类的定义文件,实现了游戏的所有功能。其中包括了核心功能控制函数,设置颜色参数,设置声音参数,设置游戏区域旋转函数和其他功能函数等。 具体功能的实现在下一章节中阐述。 5. 程序主要功能设计及按键事件的控制 5.1 建立工程 1(首先建立工程Qt4 Gui Application,这里命名为Tetris,选用QWidget 作为Base class 。 2(然后将myitem.cpp, myitem.h ,gamearea.cpp, gamearea.h 四个文件复制到工程文件 夹下并添加到工程中。 3(在widget.h 中添加#include "gamearea.h"的头文件包含。并在下面的private 中声明一个 游戏类对象GameArea *gameArea; 4(在widget.cpp 的构造函数里添加语句。 Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); this->resize(800,500); 7 this->gameArea = new GameArea(this); } 这里重新设定了主窗口大小,并在主窗口上新建了一个游戏区域对象。 5.2 添加定时器和开始按钮 1(在widget.h 里的private 中添加定时器对象和分数变量的声明。 QTimer *timer; int score; 在public 中添加显示分数函数的声明。 void doScore(int); 添加槽函数的声明。 private slots: void timer_upDate(); 2(在widget.cpp 文件中的构造函数里添加下面的语句: this->timer = new QTimer(this); connect(this->timer,SIGNAL(timeout()),this,SLOT(timer_upDate())); score =0; 定义了定时器并进行了信号和槽函数的关联,初始化分数为0; 3(然后在下面定义两个函数。 void Widget::timer_upDate() //定时器溢出处理 { this->gameArea->moveOneStep(); //先移动一步,这时并没有显示出来 if(this->gameArea->isMoveEnd()) //如果无法移动,到底了或结束了 { if(this->gameArea->isGame_Over()) //如果是结束了 { this->timer->stop(); //停止计时 QMessageBox::warning(this,tr("warning"),tr("Game Over!"),QMessageBox::Yes); //弹出对话框 this->score =0; //清空分数 this->gameArea->init_Game(); //重新开始游戏 this->gameArea->gameStart(); this->timer->start(500); } else //如果是移动到底了 { this->gameArea->nextItem(); //出现下一个图形 int num = this->gameArea->getFullRowNum(); //获得已满的行数 this->doScore(num); //显示分数 this->gameArea->gameStart(); //继续游戏 } 8 } else //如果没有到底 { this->gameArea->do_MoveNext(); //显示方块下移一步后的界面 } } void Widget::doScore(int num) //显示分数 { score += num*100; this->ui->label_2->setText(tr("%1").arg(score)); } 4(在设计器中向主窗口上添加两个标签label 和label_2,其中label 写上“你的分数是:”, label_2 写上“0”;然后再添加一个开始按钮。 5(然后右击“开始游戏”按钮,选择其单击事件的槽函数。更改如下。 void Widget::on_pushButton_clicked() //开始按钮 { this->gameArea->init_Game(); //第一次进入游戏时进行的初始化 this->gameArea->gameStart(); //开始游戏 this->timer->start(500); //开启定时器 this->gameArea->setFocus(); //让游戏区域获得焦点,这样才能响应键盘 } 5.3 添加暂停和重新开始按钮~完成基本的控制功能 1(在主窗口上添加“暂停游戏”和“重新开始”两个按钮。在“暂停游戏”按钮的属中 将checkable 选中。 2(分别进入两个按钮的单击事件槽函数。 void Widget::on_pushButton_2_clicked() //暂停按钮 { if(this->ui->pushButton_2->isChecked()) { this->timer->stop(); this->ui->pushButton_2->setText(tr("取消暂停")); } else { this->timer->start(500); this->ui->pushButton_2->setText(tr("暂停游戏")); this->gameArea->setFocus(); } } void Widget::on_pushButton_3_clicked() //重新开始 { this->timer->stop(); 9 this->on_pushButton_clicked(); } 3(在main.cpp 中添加语句,让程序中可以使用中文。 添加#include 的头文件包含。 在main()函数里添加QTextCodec::setCodecForTr(QTextCodec::codecForLocale());语 句。 5.4 改变颜色和给方块添加图片 1(添加“更改颜色”按钮和“方块贴图”按钮。 2(更改其单击事件槽函数。如下。 void Widget::on_pushButton_4_clicked() //改变颜色 { this->gameArea->setGameAreaColor(QColor(255,255,0,qrand()%255)); //更改游戏区域背景颜色 this->gameArea->setBoxBrushColor(QColor(0,255,0,qrand()%255)); //更改小方块背景颜色 this->gameArea->setBoxPenColor(QColor(0,0,0,qrand()%255)); //更改小方块边框颜色 this->gameArea->draw_gameArea(); //更新游戏区域 this->gameArea->setFocus(); } void Widget::on_pushButton_5_clicked() //方块贴图 { this->gameArea->set_draw_box_picture(true); //确认使用方块背景图片 this->gameArea->setBoxPicture("box.gif"); //添加方块背景图片 this->gameArea->draw_gameArea(); //更新显示区域 this->gameArea->setFocus(); } 3(运行效果如下。 点击“改变背景”按钮后,游戏区域背景,方块的填充颜色和边框颜色都改变了。 5.5 是否显示背景网格和下一个要出现的方块 1(添加“网格显示”按钮和“方块提示”按钮。并将它们属性中的checkable 选中 2(修改它们的单击事件槽函数。 void Widget::on_pushButton_6_clicked() //网格显示 { if(this->ui->pushButton_6->isChecked()) { this->gameArea->setDrawGrid(false); } 10 else { this->gameArea->setDrawGrid(true); } this->gameArea->draw_gameArea(); this->gameArea->setFocus(); } void Widget::on_pushButton_7_clicked() //方块提示 { if(this->ui->pushButton_7->isChecked()) { this->gameArea->setDrawNextItem(false); } else { this->gameArea->setDrawNextItem(true); } this->gameArea->draw_gameArea(); this->gameArea->setFocus(); } 5.6 添加方块移动的声音 1(添加“打开声音”按钮,并将其属性中的checkable 选中。 2(修改其单击事件槽函数。 void Widget::on_pushButton_8_clicked() //声音开关 { if(this->ui->pushButton_8->isChecked()) { this->gameArea->setPlaySound_itemChange("changeItem.wav",true); this->gameArea->setPlaySound_moveDown("moveDown.wav",true); this->gameArea->setPlaySound_moveLeft("moveLeft.wav",true); this->gameArea->setPlaySound_moveRight("moveLeft.wav",true); this->ui->pushButton_8->setText(tr("关闭声音")); } else { this->gameArea->setPlaySound(false); //关闭音乐 this->ui->pushButton_8->setText(tr("打开声音")); } this->gameArea->setFocus(); } 3(我们把需要的声音文件放到工程文件夹下的debug 文件夹下。只能是wav 格式的。 11 5.7 添加向下按钮步数设置 1(添加“是否坠落”按钮,并将其属性中的checkable 选中。 2(更改其单击事件槽函数。 void Widget::on_pushButton_9_clicked() //是否坠落 { if(this->ui->pushButton_9->isChecked()) { this->gameArea->setKey_Down_Move_oneStep(true); //按一下向下方向键,下移一步 } else { this->gameArea->setKey_Down_Move_oneStep(false); //按一下向下方向键,移动到底 } this->gameArea->setFocus(); } 5.8 添加方块 1(添加“添加方块”按钮。 2(修改其单击事件槽函数。 void Widget::on_pushButton_10_clicked() //添加方块 { this->gameArea->init_Game(); //清空游戏区域 this->gameArea->setbox(10,4); this->gameArea->setbox(10,5); this->gameArea->setbox(10,6); //在第10 行第4,5,6 列添加三个方块 this->gameArea->gameStart(); //重新开始游戏 this->gameArea->draw_gameArea(); this->gameArea->setFocus(); } 5.9 设置旋转游戏区 1(添加“旋转游戏”按钮。 2(修改其单击事件槽函数。 void Widget::on_pushButton_11_clicked() //旋转游戏 { this->gameArea->setRotate(true); //开启旋转 this->gameArea->setGameAreaPixOrigin(100,200); 12 //设置游戏区域新的坐标原点 this->gameArea->setGameAreaPix(-100,-200); //设置游戏区域的位置 this->gameArea->setRotateAngle(qrand()%360); //旋转度数 this->gameArea->draw_gameArea(); this->gameArea->setFocus(); } 6(程序设计思想与流程图 图6.1 设计实现流程 6.1 游戏实现的核心方法 利用了数组对整个游戏区域进行存储。 6.2 游戏是怎么实现显示现在和已有的图形的。 利用了两个数组,方块每移动一步,都对整个数组进行一次备份。 6.3 游戏是怎么判断方块已经重合的 先尝试让方块移动一步,判断其是否与其他图形重合,如果不重合就移动。如果重合了,则执行其他操作。代码如下: for(int i=item_endRow;i>=0;i--) //是否跟已有的图形重合 { for(int j=3;j>=0;j--) { 13 if(*(copyMap+(itemRow+i)*map_col+itemCol+j) && *(currentItem+i*4+j)==1) { if(startX==init_startX&&startY<=20) isGameOver = true; //如果图形一出来就和别的图形重合了,那么游戏结束 return true; } } } 6.4 游戏是怎么进行消行的 让已满的行和它上面的所有的行均等于其上面的一行。代码如下: void GameArea::clearRow() //清除已满的行 { int temp1 = 1; for(int i=map_row-1;i>0;i--) //从下向上扫描整张网格 { for(int j=0;j0;row--) //让已满的行及其上面的各行均等于其上一行 for(int col = 0;colitemChange(currentItem); //进行图形变化 if(startX<0) startX = 0; //左超界,则让其靠左 if((startX + 4*step)> gameArea_width) startX = gameArea_width - 4*step; 14 //右超界,则让其右边靠右 if(isMoveEnd()) //如果和别的图形重合,则不让其改变 { currentItem = tempItem; } } 6.6按键事件 判断按键 判断可否变判断可否移判断可否移判断可否移如不是这4个 形,图形变化动。可以则动。可以则动。可以则默按键,则接收 调用函数 移动 移动 认下移一步,其他按键。 否则下到底 图4.2 键盘事件功能图 致谢 大学四年的学习以今天的毕业论文画了一个句号。感谢大学四年,各位老师对我的教诲,感谢山西大学商务学院信息工程学院,感谢大家有缘能在生命中重要的四年,出现在彼此的生活中,感谢上天。 15 很幸运,在我大学的最后一次作业的完成中,能得到柳欣老师的指导与帮助,有了一次宝贵的机会跟柳欣老师接触。柳欣老师严谨治学的态度,在我的心里留下深刻的影响,在以后的日子里,我要学习柳欣老师的求实精神。这里,真诚的向柳欣老师说一句:柳欣老师,感谢您,祝您一切都好。 在此,同时感谢我的父母,对我的支持,没有他们的支持,我走不到今天。感谢与我共同走过大学的朋友们、同学们,每个在我脆弱、困难的时候,扶过我一把的你,我都记得。感谢上天,感谢命运,能有机会在彼此的生命中出现,并共同走过一个春天。感谢所有帮助过我的老师、同学、朋友,感谢你们,希望你们在以后的日子里,开心、快乐,希望你们过得比我好! 参考文献 [1] 谭浩强,张基温,C语言程序设计教程(第3版)[M](高等教育出版社,1991年08月 [2] 陈超,C语言常用函数速查手册[M],化学工业出版社,2010年06月 [3] 韦东山,嵌入式应用开发完全手册[M],人民邮电出版社 [4] 黄丽琴,丁林松,Qt4图形设计与嵌入式开发[M],人民邮电出版社,2009年04月 [5] 成洁,卢紫毅,Linux窗口设计——Qt4精彩实例设计分析[M],清华大学出版社,2008.11 16 [6](加)布兰切特(Blanchette,J),(英)萨默菲尔德(Summerfield,M)著,闫锋欣 译, C++GUI Qt4编程(第二版)[M],2008年08月 [7] 蔡志明,精通Qt4编程(第2版)[M],电子工业出版社,2011年2月 [8] (美)伊斯特(EEzust,A.),(美)伊斯特(Ezust,P.)著,李仁见,战晓明 译,C++ 设计模式——基于Qt4开源跨平台开发框架[M],清华大学,2007年8月 [9] 肖林甫,肖季东,任桥伟,Linux那些事儿之我是USB[M],电子工业出版社,2010年07 月 [10] 郑莉,董江周,C++语言程序设计(第4版)[M],清华大学出版社,2010年07月 ( ,1998-08-16/1998-10-04. QT Tetris Game Design and Implementation Abstract: Safe Tetris is a little young and old games, which implements the four square blocks of color composition, and then stored in an array of four elements, the computer randomly generate different types of box seven, according to the computer timer control It is time to stop at a certain generation, the user 17 based on the four keyboard arrow keys to control the flip, left, right and down operation, (with signals and slots to achieve the function of key events associated with the control). Then the program under which seven boxes stacked into a variety of different models. Nokia, Qt is a cross-platform development of C + + graphical user interface application framework. It provides application developers to build-the-art graphical user interface used for the required functions. Paper describes the history of the game, develop the game environment, the significance of game development. Follow the software engineering knowledge, software problem definition from the start, followed by feasibility studies, needs analysis, outline design, detailed design, the entire development process throughout the software engineering body of knowledge. Keywords: Array Timer Signals Solt functions QT 18 9
本文档为【VC俄罗斯方块毕业论文--万伟】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_633808
暂无简介~
格式:doc
大小:84KB
软件:Word
页数:0
分类:
上传时间:2017-12-10
浏览量:16