当前位置:文档之家› 基于Qt的连连看游戏的设计

基于Qt的连连看游戏的设计

基于Qt的连连看游戏的设计
基于Qt的连连看游戏的设计

摘要

在现今电子信息高速发展的时代,电子游戏已然成为大众最受欢迎的娱乐消遣方式,经典的连连看是个老少皆宜的小游戏,它实现由各式各样的成对图片组成,然后存储在一个二维的数组中,计算机随机产生各种不同类型的图片,根据计算机时钟控制它在一定的时间内随机产生,用户可根据鼠标和回车键点击图片、若两次点击的图片一样,则消掉图片。本文用QT来设计与实现简单的连连看游戏的基本功能,玩家可以在游戏区域中通过键盘控制来选取相同的两个物件,采用特定的消除规则对它们进行消除的操作,当游戏区域中的所有方块对都被消除后玩家即可胜利。文章对该游戏的算法以及游戏图案的绘制进行详细的介绍。实现起来较简单,同时也比较实用。

关键词:Qt;游戏设计;算法;数组;信号与槽

ABSTRACT

In the current era of rapid development of electronic information, electronic game has become the most popular entertainment popular pastime, classic Russian square is a enjoyed by young and old little game, it achieved by four square of color piece, and then stored in a two dimensional array, computer random generation seven different types of square, according to the computer clock control it in certain time keep produced, the user can according to the keyboard four the direction key control block turns, moves left, move to the right, move down operation and the program according to the seven square are stacked into a different model. And Laura square is based on square in Russia, give the Russian square new challenge pattern, its inspiration from the network another kind of popular video games-tomb raider. Players to the identity of the adventurers into the game, players need only to a certain score, can challenge higher difficulty levels of the game, of course, if you are good, you will have the chance to open the mysterious hide organs, the more full of imagination and stimulation of play will wait for you take your challenge.

Key words:Qt; Game design; Algorithm; Array;Signals and slots.

目录

摘要.................................................... I ABSTRACT ................................................ II 第一章绪论 (3)

1.1 游戏背景 (3)

1.2 游戏概述 (3)

第二章方案论证 (5)

2.1 选择开发语言 (5)

第三章需求分析 (13)

3.1软硬件需求 (13)

3.2游戏功能需求 (13)

第四章游戏总体设计 (15)

4.1 总体设计 (15)

4.2 游戏开始模块设计 (15)

4.3 游戏设置模块设计 (16)

4.4 游戏核心模块的设计 (16)

第五章具体实现 (18)

5.1模型层设计 (18)

5.2 视图层设计 (18)

5.3 其它相关技术的实现 (19)

第六章游戏测试 (20)

6.1 按键事件的功能测试 (20)

6.2 图片消失测试 (20)

6.3 声音和显示测试 (20)

6.4 测试结果分析 (21)

总结 (21)

致谢 (23)

参考文献 (24)

附录源代码 (25)

第一章绪论

1.1 游戏背景

说到连连看,就不得不从经典小游戏说起,连连看是一款古老的风靡全球的经典游戏,它最早出现在PC机上,我国的用户都是通过红白机了解、喜欢上它的,相信有很多人到现在还是对它念念不忘的。无可争议,《连连看》是有史以来最伟大的游戏之一。在曾经发布过的所有游戏中,《连连看》还被认为是仅有的一个能够真正吸引广泛人群的作品,曾今造成的轰动与经济价值可以说是游戏史上的一件大事,它看似简单却变化无穷,令人着迷,相信大多数玩家都还记得为它痴迷得茶饭不思的那个连连看时代。但是随着网络信息的高速发展,连连看也要跟随时代的发展,以满足大众的需要。到如今,网络上已经出现了各种不同版本的连连看,它赋予玩家冒险家的角色,不断挑战你的想象,其全新的设计,创新的玩法,为经典的连连看蒙上了一层更加神秘的色彩。

1.2 游戏概述

1.2.1 游戏简介

游戏“连连看”顾名思义就是找出相关联的东西,这个连连看在网上基本是用在小游戏中,就是找出相同的两样东西,在一定的规则之内可以做为相关联处理。“连连看”的发展经历了从桌面游戏、在线游戏、社交游戏三个过程。

游戏“连连看”是源自台湾的桌面小游戏,自从流入大陆以来风靡一时,也吸引众多程序员开发出多种版本的“连连看”。这其中,顾方编写的“阿达连连看”以其精良的制作广受好评,这也成为顾方“阿达系列软件”的核心产品。并于2004年,取得了国家版权局的计算机软件著作权登记证书。

随着Flash应用的流行,网上出现了多种在线Flash版本“连连看”。如“水晶连连看”,“果蔬连连看”等,流行的“水晶连连看”以华丽界面吸引了一大批的女性玩家。

2008年,随着社交网络的普及和开放平台的兴起,“连连看”被引入了

社交网络。“连连看”与个人空间相结合,被快速的传播,成为一款热门的社交游戏,其中以开发者Jonevey在Manyou开放平台上推出的“宠物连连看”最为流行。

1.2.2 游戏功能

本次设计连连看主要是在原连连看对战的基础上设计挑战模式,具体的功能如下所述:

(1)游戏运行界面简单美观,操作简单,运行稳定;

(2)能够根据不同的等级模式播放不同的游戏背景音乐,包括操作方向键、消行时的声音,音量由玩家操作控制;

(3)设计不同的游戏难度,当玩家达到一定的积分,可以进入相关难度的等级;

玩家可直接操作界面上的相关按钮来控制游戏的开始、暂停、设置、退出等功能。

第二章方案论证

2.1 选择开发语言

根据自己以前所学的关于C语言、C++、Java、以及Qt的相关知识,并通过网上查找相关资料,了解到C、C++、VB、Delphi、C#、Java等均可以现劳拉方块游戏的设计。下面简单介绍下VB、C++、Java、Qt各自的特点:2.1.1 VB的特点

全称Visual Basic,它是以Basic语言作为其基本语言的一种可视化编程工具。在中国乃至全世界都能看到它的身影,它曾是在中国最为流行的编程工具,到现在还占据着非常重要的地位,对于它的好坏大家都有一定的了解,VB作为一种较早出现的开发程序以其容易学习,开发效率较高,具有完善的帮助系统等优点曾影响了好几代编程人员,但是由于VB不具备跨平台这个特性,从而也决定了VB在未来的软件开发中将会逐渐地退出其历史舞台;它对组件技术的支持是基于COM和ActiveX,对于组件技术不断完善发展的今天,它也显出了它的落后性;同时VB在进行系统底层开发的时候也是相对复杂的,调用API函数需声明,调用不方便,不能进行DDK编程,不可能深入Ring0编程,不能嵌套汇编;而且面向对象的特性差;网络功能和数据库功能也没有非常突出的表现,综上所述,VB作为一种可视化的开发工具由于其本身的局限性,导致了它在未来软件开发中逐步被其他工具所代替。

2.1.2 C++的特点

C/C++的哲学就不一样了,同一份程序代码,只要在该平台重新Compile 成该平台的执行档,就能在该平台执行,若文字模式下的程序,的确可以跨平台,程序完全不需修改,但GUI盛行以后,由于各GUI的Library都不一样且没有标准,所以GUI程序并没办法跨平台Compile,因为各平台都有专属的Library。但是C/C++优势就是执行速度快,若能解决GUI Library的问题,则跨平台即可解决。

除了GUI Library需要统一外,还得看该Library设计的好不好才行,Linux GUI我没写过就不说了,若在Windows平台,Borland的C++ Builder

使用Delphi的VCL Library,Microsoft的Visual C++可以用MFC和.NET Framework,首先来看Borland的C++ Builder,它使用标准的ANSI C++语言开发,利用VCL写出来的程序也算蛮漂亮的,执行速度很快,比较麻烦的是C++Builder当初为了缩短上市时间,并没有设计自己的Library,而是藉用Delphi的Library,导致C++ Builder在Compile时,是先用Delphi的Compiler将VCL compile成object file后,再用C++ Builder将你写的C++程序compile成object file,最后再用Linker将所有的object file link起来,由于这都是IDE在做,对程序设计师似乎影响不大,但VCL由于是Delphi 的Library,所以若想深入研究VCL的source code时,则必须学Delphi的Pascal才行,否则看不懂VCL source code,这也是很多人对C++ Builder 却步的原因。

再来看Microsoft的Visual C++,MFC用的是完整的ANSI C++语言,所以语言部分不是问题,但若你看过用MFC写的程序,你一定会惊讶为什么这么复杂,程序代码非常冗长不好看,且MFC是有名的难学,若Visual C++搭配.NET Framrwork,则无法使用ANSI C++,得用其.NET平台版本的C++/CLI,相信这点很多人就有意见了,不过.NET Framework由于设计的不错,所以写出来的程序相当精简漂亮,感觉和C++ Builder差不多,不过无论是C++ Builder或Visual C++开发的GUI,所开发出来的程序都无法跨平台,当然也无法跨平台Compile。

2.1.3 Java的特点

Java具有安全性、可移植性、多线程机制以及跨平台的良好特性,但是由于本人对Java语言不是很熟悉,所以此方案也予以否决。

2.1.4 Qt的特点

Qt拥有一个单一的Library,让你开发各种不同平台的程序,目前支持Windows、Linux、Mac、UNIX、Embedded Linux,讲白话点,就是它提供了一个L ibrary让你开发GUI程序,写好之后,只要在各平台重新Compile 后,就可以在各平台执行,而且使用完整的ANSI C++语言,且不限Compiler,

只要是C++的Compiler都可以,重要的是,该Library相当漂亮,写出来的程序很像C++ Builder或.NET Framework的那样精简,不会向MFC那样复杂。目前Qt已经到第四个版本,GUI部分算支持的相当完整,且支持数据库、XML、Multi- Thread、Socket等方面的programming。若以后台角度来说,无论后端是什么数据库,只要透过相同的Interface,不同数据库的Class来实做这个Interface,前端GUI的程序写法完全不用改变,同理,面对不同的OS,理论上只要透过相同的I nterface,不同OS的Class各自实做这个Interface,前端GUI的程序也完全不用改变,最后只要靠Compiler将程序compile成各平台的原生程序即可,这样即可保证其执行速度,不用再靠Virtual Machine。但很可惜这个理想,这么多年来都没人可以做出来,或许是我孤陋寡闻吧。Qt 无疑是GUI终极解决方案,有强力的ANSI C/C++语言背书,又有单一的GUI Library,且精简漂亮,又能Compile成各平台的原生执行档,几乎是最完美的解决方案了。

2.1.5 方案的选择

经过以上比较好,考虑到Qt的众多良好特性,尤其是其跨平台性,加上自己最近正在学习Qt,为了能够更进一步掌握Qt编程,因此决定使用Qt开发连连看游戏。

2.2 Qt关键技术的介绍

2.2.1 Qt特点的具体介绍

1. 可移植性

Qt是一个跨平台GUI工具箱,不仅适用于Unix,它同样适用于MSWindows。如果开发平台是MS Windows,可能选择的GUI工具箱为MicrosoftFoundation Classes(MFC),这样就会失去众多的Unix用户。相反,如果开发平台是Unix,可能选择其它工具箱,如Motif等,同样会失去众多的Windows用户。如果选择的GUI工具箱为Qt,则只要在不同的平台上简单的编译源代码,就可以使原程序在不同的平台上运行,从而解决丢失用

户的问题。

Qt把在处理不同窗口系统时的潜在问题隐藏了起来。为使Qt使用方便,Qt包含了一系列类,这些类使开发人员避免了在文件处理、时间处理等方面存在的依赖操作系统方面的细节。

2. 国际化

所谓国际化,通俗的讲,就是指在某国开发的软件可以方便的被其它国家的人使用。Qt为本地化应用提供完全的支持,所有用户界面文本都可以基于消息翻译表被翻译成各国语言。另外,Qt完全支持双字节16 bit国际字符标准。利用Qt开发跨平台的国际化软件是一个方便、增量的过程。在开发过程中,利用Qt的linguist界面工具就能方便的将开发的软件翻译成各国语言,从而实现软件的国际化。

3. 面向对象

Qt是一个C++工具箱,它由几百个C++类构成。在程序设计中可以使用这些类,如果Qt没有提供真正适合需求的组件,则可以方便的修改现有的组件或者重新编写组件。Qt具有模块设计和注重软件构件或元素的可重用性的特点。一个组件不需要知道它的内容,而通过Qt特有的signal和slot机制与外界通信、交流。

使用Qt进行应用程序的开发,可以充分利用其面向对象和模块化的特征,从繁琐的编程中解脱出来,专注于应用程序本身的实现。

4. 可用户化的外观

Qt支持主题,所以基于Qt的应用软件能在Motif外观、Windows外观,以及另一些用户化的外观之间互换,甚至改变运行时间。这些应用程序不管是在X Windows下还是在Microsoft Windows下都可以独立操作、运行。

5. 独有的Signal Slot机制

Signal Slot机制是Qt最重要的特征。在MS Windows中,程序通过消息机制和事件循环来实现图形对象行为的触发和处理;在Qt中,程序在一个类中定义多个Signal和Slot,Signal就相当于“事件”,而Slot就相当于响应事件的“方法”。为了实现“事件驱动”,需要将一个类的Signal和另一个类的Slot连接起来(使用connect)。采用这种机制是一种安全可靠的方法,它允

许回调。并支持对象之间在彼此不知道对方信息的情况下进行合作,这使Qt非常适合于真正的构件编程。

6. 开发程序的方便性

Qt提供了一个可视化的开发工具Qt Designer,使用该工具就像在Windows中使用Visual C++那样可以直接向项目中添加各种组件,而不需要一步一步地编写代码,这个特点是其它非可视化编程工具望尘莫及的。Qt Designer中包含全面的联机帮助文档,包括超文本方式的Qt Manual,man 帮助手册页和补充指南。这些帮助不论是对于初学者还是专业人士,都是非常方便的。

7. 强大的功能

Qt的强大功能主要体现在以下几方面:拥有一套完整的组件,用户可以直接基于这些现成的组件开发出优秀的界面;拥有丰富的API函数,大概有250多个C++类;具有优越的绘画功能和2D/3D图形润色功能,Qt的绘画工具类Qpainter, 可以在任意一个绘画设备上润色图形,对于更高级的2D/3D图形可以结合使用OpenGL和Qt的组件,使用OpenGL就像用任意一个Qt组件一样方便,而且效果比纯粹使用OpenGL作2D/3D图形更好;支持XML。

2.2.2 Qt的类库

Qt类库大致可以分为三个部分:控件,框架和工具。

1. 控件

控件部分包括环境控件,主窗口控件,标准对话框, 基本的GUI控件,扩展GUI控件,GUI组织控件,以及帮助系统控件。

环境控件为应用程序提供全局服务的类,包括系统设定、国际化等。例如QTranslator, Qapplication。主窗口类为应用程序提供界面框架,可以在上面添加菜单、工具条等,为应用程序提供集装箱的功能,如QMainWindow。标准对话框类是为打开/关闭文件,选择颜色等预先设计的标准对话框,如QColorDialog, QFileDialog。基本控件包括所有的GUI控件,如按钮、组合框等,如QPushButton。扩展的控件包括树状视图、进度条等, 如QListView。

GUI组织类负责对各种控件进行组织以构成复杂的对话框, 如QGroupBox。帮助系统控件是为应用程序提供在线帮助的类,QStatusBar,QToolTip。

2. 框架

框架部分包括的是一些抽象的类,通常不可见,如对象模型、抽象控件、绘图、拖放、控件外观。对象模型是框架的基础,如QObject。可见的控件一般从抽象控件派生,如QButton。绘图类控制绘图, 如QBrush。拖放类控制拖放操作,如QDragObject。控件外观类控制控件的外观如颜色、字体等。例如QColor。

3. 工具

工具部分包括时间日期和链表树等数据结构,它们和GUI无关。普通工具包括链表、堆栈、队列、树等常见数据结构,如QArray。图形处理工具控制图像的编码/解码算法。如QImageIO。I/O控制工具处理I/O的一些类,如QFile。时间和日期工具类处理时间和日期,如Qdate, QTime。另外还有其他杂类如Qsignal, QIconSet等。

2.2.3 Qt对象通讯机制

对象间通讯是面向对象程序设计的一个极其重要的内容,类似于Microsoft MFC的消息映射和事件循环,Qt的对象间通讯采用的是信号—槽(signal—slot)机制,信号就好像是事件,而槽则是响应事件的方法。如果需要实现对象间的通讯,只需要把一个对象的信号和另外一个对象的槽使用连接(connect)起来。

信号—槽机制说明:

Qt下对象间的通讯用信号—槽机制来实现。信号—槽机制是Qt的一个中心特征并且也是它与其它图形工具包的最不相同的部分。图2-1直观地表示了这种机制是如何工作的。

图2-1 信号与槽的连接原理图

在图形用户界面编程中,经常希望一个窗口部件的一个变化被通知给另一个窗口部件。更一般地,希望任何一类对象可以和其它对象进行通讯。例如,如果正在解析一个XML文件,当遇到一个新的标签时,也许要通知列表视图正在用来表达XML文件的结构。较老的工具包是使用一种被称作回调的通讯方式来实现同一目的。回调是指一个函数的指针,所以如果希望一个处理函数通知一些事件,可以把另一个函数(回调)的指针传递给处理函数,处理函数在适当的时候调用回调函数。回调有两个主要缺点:首先他们不是类型安全的,从来都不能确定处理函数使用了正确的参数来调用回调;其次回调和处理函数是非常强有力地联系在一起的,因为处理函数必须知道要调用哪个回调。

在Qt中有一种可以替代回调的技术:使用信号和槽。当一个特定事件发生的时候,一个信号被发射。Qt的窗口部件有很多预定义的信号,但是总是可以通过继承来加入自己定义的信号。槽就是一个可以被调用处理特定信号的函数。Qt的窗口部件有很多预定义的槽,通常也可以加入自己的槽,这样就可以处理感兴趣的信号了。

信号—槽机制是类型安全的:一个信号的签名必须与它的接收槽的签名相匹配。实际上一个槽的签名可以比它接收的信号的签名少,因为它可以忽略额外的签名。因为签名是一致的,编译器就可以帮助检测类型是否匹配。信号和槽是宽松地联系在一起的:一个发射信号的类不用知道哪个槽要接收这个信号。Qt的信号和槽的机制可以保证如果把一个信号和一个槽连接起来,槽会在正确的时间使用信号的参数而被调用。信号和槽可以使用任何数量、任何类型的参数。它们是完全类型安全的,不会再有回调核心转储。

从QObject类或者它的一个子类(比如QWidget类)继承的所有类都可以包含信号槽。当对象的状态发生改变的时候,信号被发送给其它对象,从而实现了该对象与其它对象的通信。对象在发射信号时,无须知道有没有槽接收它所发射的信号,而槽是正常的成员函数,一个槽不知道它是否被任何信号连接,这就是信息封装,这种封装确保了对象可以用作一个软件组件。此外,使用对象时也无须知道这种通讯机制的实现细节。在信号—槽机制实现的过程中,可以把许多信号和单一槽相连,也可以把一个信号和许多槽相连。把一个信号和另一个信号直接相连也是可以的。(这时,只要第一个信号被发射时,第二个信号立刻就被发射)。总体来看,信号和槽构成了一个强有力的组件编程机制。

第三章需求分析

3.1软硬件需求

本次的开发环境所采用的操作系统为Linux操作系统的Ubuntu10.10版本,编程环境是基于QT 4.7的Qt creator版本,由于本游戏对硬件的要求不是很严格,所以硬件需求不做讨论。

3.2游戏功能需求

本次设计是在传统的连连看上设计实现对战的连连看,玩家通过达到一定的积分来获得继续闯关的机会,还有机会开启神秘的应藏关,以此来增加游戏的可玩性。

游戏的基本规则:程序随机产生任意成对的图片,当定点击开始游戏时,电脑根据时间参数随机生成固定的成对图片,游戏再次开始,玩家可通过鼠标上的左键,自由的点两张图片。如果点击两次时,两张图片相同,且满足程序的算法则这两张图片可消去。消去图片后,游戏可给玩家加分,若在规定的时间内,玩家没有消掉所有的图片则游戏失败。由于是闯关模式,达到一定分数的玩家可以继续挑战新的游戏,游戏的难度会相应增加,并且还增加了新玩法。具体的游戏功能如下:

游戏界面需求:设计良好的游戏界面可以让玩家充分感受到游戏带来的娱乐性,游戏的背景取自网上中的图片,体现了游戏的挑战性。

鼠标处理事件需求:通过点击主窗体中相应的按钮,可以实现游戏的开始、暂停、结束,通过点击选项设置中相应的按钮,可设置声音的大小及方向键↓的功能。显示需求:当两次点击的图片相同且满足算法可以消去,当达到一定分数的时候,游戏会进入下一关,并有障碍了。

游戏闯关设计需求:随着游戏的难度不同,玩法会发生改变,需要在游戏中设置障碍,蒙手游戏。如果玩家能到达并完成最后一关,则玩家挑战成功,游戏

结束。

图3.1 游戏开始界面

第四章游戏总体设计

4.1 总体设计

整体设计思想:进入游戏后,有三个按钮可供玩家选择:开始游戏,游戏设置,退出游戏,在进入相应子菜单后也可返回到主菜单,每个菜单的具体设计将在后面介绍,以下是总体的游戏流程图。

图4-1 游戏总体流程图设计

4.2 游戏开始模块设计

此模块为本次设计的核心模块,玩家在主菜单设置好游戏选项后点击开始按钮后开始游戏,并进入游戏窗口,游戏窗口大体是这样设计的:首先最上面一栏

显示当前处于第几关,游戏区域分为两部分,主游戏区显示当前游戏画面,其宽设置为10个单位的小方块图片的边长,高为20,游戏区域右边的上面部分设置了3个功能按钮:重新开始游戏、暂停、返回主菜单按钮;游戏区域右边的下面部分则显示主菜单界面,该界面在游戏开始后处于隐藏状态,当玩家点击“返回主菜单”按钮后,主菜单会重新显示出来,同时游戏界面处于隐藏状态。在开始游戏后,当玩家获得一定积分后,会进入下一关,如果失败,则必须重新开始。玩家在顺利完成第五关后,这时,玩家就能进入神秘的隐藏关,一次来增加游戏难度(相信那将会很有趣)。

4.3 游戏设置模块设计

游戏设置模块提供了3个设置选项:是否显示游戏网格、音量设置以及音效设置,这些设置的灵活性可以方便不同水平用户的自由选择,以便一步步晋级。而音效效果则可以增加用户玩游戏的乐趣。设置好游戏选项后,即可返回主菜单开始游戏,在游戏的过程中也可以随时暂停返回主菜单,再进行重新设置游戏选项,这样更加方便用户的使用。

4.4 游戏核心模块的设计

连连看所要求的是:

1:两个目标是相同的

2:两个目标之间连接线的折点不超过两个。(连接线由x轴和y轴的平行线组成)那么分析一下连接的情况可以看到,一般分三种情况

1:直线相连 2:一个折点 3:两个折点:

可以发现,如果有折点,每个折点必定有且至少有一个坐标(x或者y)是和其中一个目标点是相同的,也就是说,折点必定在两个目标点所在的x方向或y方向的直线上。

所以设计思路就是:

假设目标点p1 , p2 ,如果有两个折点分别为z1 , z2 那么,所要进行的是

1:如果验证p1 , p2 直线连线,则连接成立

2:搜索以p1,p2的x,y方向四条直线(可能某两条直线会重合)上的有限点,每次取两点作为z1,z2 ,验证p1到z1/z1到z2/z2到p2 是否都能直线相连,是则连接成立。

连连看消去算法实现

在检验两张图片能否消掉的时候,我们要让两张图片同时满足两个条件才行,就是两者配对并且连线成功。

分3种情况:(从下面的这三种情况,我们可以知道,需要三个检测,这三个检测分别检测一条直路经。这样就会有三条路经。若这三条路经上都是空按钮,那么就刚好是三种直线(两个转弯点)把两个按钮连接起来了)

1.相邻

2. 若不相邻的先在第一个按钮的同行找一个空按钮。1).找到后看第二个按

钮横向到这个空按钮所在的列是否有按钮。2).没有的话再看第一个按钮到与它同行的那个空按钮之间是否有按钮。3).没有的话,再从与第一个按钮同行的那个空按钮竖向到与第二个按钮的同行看是否有按钮。没有的话路经就通了,可以消了.

3.若2失败后,再在第一个按钮的同列找一个空按钮。1).找到后看第二个

按钮竖向到这个空按钮所在的行是否有按钮2).没有的话,再看第一个按钮到与它同列的那个空按钮之间是否有按钮。3).没有的话,再从与第一个按钮同列的那个空按钮横向到与第二个按钮同列看是否有按钮。没有的话路经就通了,可以消了。

若以上三步都失败,说明这两个按钮不可以消去。

第五章具体实现

5.1模型层设计

5.1.1 图形的产生

通过图形工厂类ShapeFactory的getShape(ShapeListener listener)方法随机产生方块的某种状态,这里运用了工厂设计模式。

5.1.2 图形的变形

图形的变形是通过函数char* MyItem::itemChange(unsigned char *currentItem)来实现的,该函数首先是在内存中开辟一个新的4*4数组,用来保存变化后的方块,通过两个for循环,依次将数组中个元素的横坐标与列坐标交换位置,即可使原来的方块逆时针旋转90度,达到旋转方块的目的。

5.1.3 判段消掉图片

如果两在张图片满足一个拐点,没有拐点。两个拐点则该两张图片就可以消掉,同时需要用一个全局变量fullRowNum来保存此次一共消除了多少张,以便算分,没有拐点10分,一个拐点20分,二个拐点的是30分。具体是通过函数void GameArea::clearRow()来实现的。

5.2 视图层设计

5.2.1 图片的显示

方块的显示是通过调用GameArea类中的draw_currentMap()方法实现的,首先判断存储方块的数组的值,凡是值为1的成员则给该数组控制的对应游戏区域的坐标通过调用painter.drawPixmap()绘制图片,具体的坐标和范围以及图片来源都是有painter.drawPixmap()中的参数给定的。在调用painter.drawPixmap()函数之前,还可以设置图片颜色,具体是通过painter.setPen()h和painter.setBrush()来实现的这样就能显示方块,而且可以

连连看游戏毕业设计

连连看游戏毕业设计 【篇一:连连看游戏的设计与实现本科生毕业论文】 毕业论文(设计) 论文(设计)题目 院系名称 专业(班级) 姓名(学号) 指导教师 系负责人 完成时间连连看游戏的设计与实现 毕业设计(论文)原创性声明和使用授权说明 原创性声明 本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下 进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方 外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过 贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。 作者签名:日期: 指导教师签名:日期:

使用授权说明 本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定, 即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学 校有权保存 毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以 采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为 目的前提下, 学校可以公布论文的部分或全部内容。 作者签名:日期: 学位论文原创性声明 本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究 所取得的研究成果。除了文中特别加以标注引用的内容外,本论文 不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的 研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本 人完全意识到本声明的法律后果由本人承担。 作者签名:日期:年月日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同 意学校保留并向国家有关部门或机构送交论文的复印件和电子版, 允许论文被查阅和借阅。本人授权大学可以将本学位论文的全部或 部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等 复制手段保存和汇编本学位论文。 涉密论文按学校规定处理。 作者签名:日期:年月日

连连看游戏设计

中南林业科技大学 《数据结构课程设计》报告必做题:连连看游戏 选做题: 姓名: 学号: 专业班级:软件工程1班 学院:计算机与信息工程学院 指导老师:

签名: 2017年1 月10 日 目录 一、连连看问题.............................. 错误!未定义书签。 1.1需求分析.................................... 错误!未定义书签。 ............................................. 错误!未定义书签。 ............................................. 错误!未定义书签。 1.2系统设计.................................... 错误!未定义书签。 1.2.1 程序流程图 ............................. 错误!未定义书签。 1.2.2 程序组成 ............................... 错误!未定义书签。 1.3调试测试.................................... 错误!未定义书签。 1.3.1测试用例................................ 错误!未定义书签。 1.3.2测试结果................................ 错误!未定义书签。 1.3.3存在问题................................ 错误!未定义书签。 1.3.4改进设想................................ 错误!未定义书签。

新版扫雷游戏设计与实现 正文

1 引言 扫雷最原始的版本可以追溯到1973年一款名为“方块”的游戏。不久之后,“方块”被改写成了游戏“Rlogic”。在“Rlogic”里,玩家的任务是作为美国海军陆战队队员,为指挥中心探出一条没有地雷的安全路线,如果路全被地雷堵死就算输。两年后,汤姆·安德森在“Rlogic”的基础上又编写出了游戏“地雷”,由此奠定了现代扫雷游戏的雏形。1981年,微软公司的罗伯特·杜尔和卡特·约翰逊两位工程师在Windows 3.1系统上加载了该游戏,扫雷游戏才正式在全世界推广开来。 1.1 开发背景 在计算机逐步渗入社会生活各个层面的今天,计算机已经成为了人们日常生活中的一部分,越来越多的人使用计算机办公、娱乐等等。 扫雷游戏是Windows操作系统自带的一款小游戏,在过去的几年里,Windows操作系统历经数次换代更新,变得越来越庞大、复杂,功能也越来越强大,但是这款小游戏依然保持原来的容貌,可见这款小游戏受到越来越多人的喜爱。本次的毕业设计我将利用Visual C++作为开发工具,开发一款类似的“扫雷游戏”。 1.2开发的目的以及意义 经过四年的大学学习,我对理论知识已经有了一定的了解与认知,本次的毕业设计便是将书本上所学的理论知识与实际相结合,同时也是对所学知识的一种检查,希望通过本次的毕业设计使自己在程序的开发和设计上有新的认识并能有所提高。本次毕业设计既锻炼了我们的实际动手能力,又在老师的指导下进行了一次模拟实际产品的开发,对于我们以后工作能力的培养具有重要意义。 2 需求分析 2.1 功能概述 扫雷游戏的游戏界面如图1所示。在这个界面中,由众多面积均等的小方块所组成的区域称之为雷区,雷区的大小由用户设置的游戏等级决定。

连连看游戏--详细设计说明书

基于FLEX开发的连连看游戏详细设计说明书 [V1.1.0] 学院名称:湖南软件职业学院 专业名称:软件技术专业 组员:虢威、孙庆龙、段志辉、罗奇 指导老师:危孟君

1引言 (3) 1.1编写目的 (3) 1.2背景 (3) 1.3定义 (3) 1.4参考资料 (3) 2程序系统的结构 (3) 3程序(标识符)设计说明 (4) 3.1程序描述 (4) 3.2功能 (4) 3.3性能 (5) 3.3.1精度 (5) 3.3.2时间特性要求 (5) 3.3.3灵活性 (5) 3.4算法 (5) 3.4.1地图的生成 (5) 3.4.1寻路算法 (7) 3.5流程逻辑 (12) 3.6接口 (13) 3.7注释设计 (14) 3.9限制条件 (14) 3.10尚未解决的问题 (14)

详细设计说明书 1引言 1.1编写目的 详细设计说明书对连连看游戏的总体设计和各个模块的功能、性能、输入输出、算法、接口、程序逻辑、存储分配及其它给出了详细的设计方案,为软件开发制定详细的计划,同时也提交系统分析员,由其提出意见。这是程序员开发及未来测试烦人重要文档资料。 1.2背景 a.开发软件名称:基于FLEX开发的连连看 b.项目开发小组成员:虢威、孙庆龙、段志辉、罗奇 c.用户:所有喜欢玩这个游戏的玩家 d.项目开发环境:Windows XP + Flash Builder4 + ActionScript 3.0。 1.3定义 连连看项目详细设计方案。 1.4参考资料 (1)《软件工程案列开发与实践》,刘竹林等,清华大学出版社 (2)《IT项目管理》,曾鸿、毛志雄等,中国铁道出版社 (3)《ActionScript 3.0编程精髓》,Colinn Moock(美),机械工业出版社 (4)《Flex 3 Cookbook》,(美)诺布尔(美)安德森,电子工业出版社 2程序系统的结构 本次所设计连连看游戏的程序主结构如图2-1所示。

JAVA实验报告3-“连连看”游戏程序设计

目录 一、实验目的与要求 (2) 二、实验方案 (2) 三、实验结果和数据处理 (3) 四、结论 (20) 五、问题与讨论 (20)

一、实验目的与要求 (1)实验目的:通过在指定的窗口界面完成“连连看”小游戏程序的编写和调试,加深对面向对象程序设计的理解。 (2)实验要求:按照Java程序设计教程的要求完成第三章中“连连看”游戏程序的编写和调试。 二、实验方案 定义了一个lianliankan类,实现了接口ActionListener: ①main()方法:主函数; ②actionPerformed()方法,用来实现重来一局按钮的响应事件; ③go()方法:初始化界面,排列图形; ④ex()方法:设置“退出游戏”窗体界面; ⑤suiji()方法:产生随机数,来填充游戏界面对应的数组的各个位置; ⑥chonglie()方法:当无符合条件的图形可消去时,需要重新排列图形; ⑦ling()方法:将数组中为零的成员所对应的按钮消去(设为不可见); ⑧wei()方法:判断并记录每次单击按钮的一些信息; ⑨xiao()方法:判断两个按钮在对应数组元素的值相同时能不能消去。

三、实验结果和数据处理 整个游戏最重要的方法,xiao()方法,用来判断两个按钮在对应数组元素的值相同时能不能消去: import javax.swing.*; import java.awt.*; import java.awt.event.*; public class lianliankan implements ActionListener { JFrame mainFrame; //主面板 Container thisContainer; JPanel centerPanel,southPanel,northPanel; //子面板 JButton diamondsButton[][] = new JButton[6][5];//游戏按钮数组 JButton exitButton,resetButton,newlyButton; //退出,重列,重新开始按钮JLabel fractionLable=new JLabel("0"); //分数标签 JButton firstButton,secondButton; //分别记录两次被选中的按钮 int grid[][] = new int[8][7];//储存游戏按钮位置 static boolean pressInformation=false; //判断是否有按钮被选中 int x0=0,y0=0,x=0,y=0,fristMsg=0,secondMsg=0,validateL V; //游戏按钮的位置坐标 int i,j,k,n;//消除方法控制 public void init(){ mainFrame=new JFrame("JKJ连连看"); thisContainer = mainFrame.getContentPane();

游戏开发课程设计报告模版-扫雷游戏报告(定稿)

中原工学院信息商务学院 课程设计报告 2016~2017学年第一学期 课程游戏开发课程设计 课程设计名称扫雷游戏 学生姓名*** 学号***** 专业班级数媒141 指导教师郑全录 2016年12月

目录 第一章设计内容及要求 (1) 1.1 扫雷游戏的基本要求 (1) 1.2 游戏需要实现的主要功能 (1) 第二章需求分析 (2) 2.1扫雷游戏界面设计 (2) 2.2 雷区的设计 (2) 2.3 音效的设计 (3) 2.4 扫雷英雄榜的设计 (3) 第三章总体设计 (5) 3.1 总体功能图 (5) 3.2 总体流程图 (5) 第四章主要功能设计流程 (6) 4.1 雷区设计流程图 (6) 4.2 音效设计流程图 (6) 4.3 英雄榜设计流程图 (7) 第五章主要功能设计流程 (8) 5.1 类之间关系图 (8) 5.2程序运行效果图 (8) 5.2.1 游戏登录界面 (8) 5.2.2游戏菜单界面 (9) 5.2.3游戏运行界面 (10) 5.2.4游戏英雄榜界面 (12) 第六章总结 (13) 参考文献 (14) 附录 (15)

第一章设计内容及要求 1.1扫雷游戏的基本要求 当前各种游戏层出不穷,因为游戏的开发成本非常大,所以游戏的开发具有一定的风险性,但是一些小游戏的开发成本具有成本小,编写简单的优势,所以这些小游戏在游戏开发中也占有一席之地。在这类小游戏中包括益智类游戏,它以画面精美、游戏方法简单等特点得到大家的认可。成为人们在工作之余不可或缺的好伙伴。针对这种情况我选择了扫雷游戏该课题作为我的课程题目。 Windows XP和Windows 7系统提供的扫雷游戏是一个很有趣的游戏。本次课程设计的主要任务是使用JA V A语言编写一个与其类似的扫雷游戏。具体要求如下: 1、扫雷游戏分为初级、中级和高级三个级别,同时扫雷英雄榜存储每个级别的最好成绩,即挖出全部的地雷且用时最少者。单击游戏菜单可以选择“初级”、“中级”和“高级”或“查看英雄版”。 2、选择级别后将出现相应级别的扫雷区域,这时用户使用鼠标左键单击雷区中任何一个方块便启动了计时器。 3、用户要揭开某个方块,可单击它。若所揭方块下有雷,用户便输了这一局,若所揭方块下没有雷,则显示一个数字,该数字代表此方块周围的8个方块中共有多少颗雷。 4、如果用户认为某个方块下埋着雷,单击右键可以在方块上标识一个用户认为是雷的图标,即给出一个扫雷标记。用户每标记出一个扫雷标记(无论用户的标记是否正确),窗口左上角的雷数计数器将会减少一个。 5、扫雷胜利后(用时最少者),程序弹出保存成绩的对话框。 6、用户如果遇到疑问的方块,可以勾选游戏菜单下的标记选项卡(或者用快捷键Alt+G然后点击M)即可标记该可疑方块,此时双击右键并可出现“?”标记。另有颜色选项,当用户选中该项时,游戏将以最低图像像素来显示。 7、如果用户需要使用提示声,可选中声音选项,此时将听到计时的咔嗒声。当用户点中雷时,将有爆炸声产生;胜利时,将有凯旋的旋律播放,此时企鹅出现欢悦表情。 1.2游戏需要实现的主要功能 1、用户可以自定义级别并且可以任意输入雷数; 2、具有计时功能,既显示用户完成所有扫雷任务所需要的时间; 3、自动保存扫雷英雄榜。

LabVIEW连连看课程设计报告

成绩评定表

课程设计任务书

目录 1目的及基本要求 (1) 2 连连看设计原理 (2) 3连连看设计和仿真 (2) 3.1 主程序设计 (2) 3.2 子程序详细设计 (3) 3.3 设计中遇到的问题 (10) 4 结果及性能分析 (11) 4.1 运行结果 (11) 4.2 性能分析 (11) 参考文献 (12)

1目的及基本要求 虚拟仪器技术就是利用高性能的模块化硬件,结合高效灵活的软件来完成各种测试、测量和自动化的应用。灵活高效的软件能帮助您创建完全自定义的用户界面,模块化的硬件能方便地提供全方位的系统集成,标准的软硬件平台能满足对同步和定时应用的需求。这也正是NI近30年来始终引领测试测量行业发展趋势的原因所在。只有同时拥有高效的软件、模块化I/O硬件和用于集成的软硬件平台这三大组成部分,才能充分发挥虚拟仪器技术性能高、扩展性强、开发时间少,以及出色的集成这四大优势。LabVIEW(Laboratory Virtual Instrument Engineering Workbench,实验室虚拟仪器集成环境)是一种图形化的编程语言(又称G语言),它是由美国NI公司推出的虚拟仪器开发平台,也是目前应用最广、发展最快、功能最强的图形化软件集成开发环境。使用这种语言编程时,基本上不用写程序代码,取而代之的是程序框图。 虚拟仪器(VI) 的概念虚拟仪器[1](virtual instrument)是基于计算机的仪器。计算机和仪器的密切结合是目前仪器发展的一个重要方向。粗略地说这种结合有两种方式,一种是将计算机装入仪器,其典型的例子就是所谓智能化的仪器。随着计算机功能的日益强大以及其体积的日趋缩小,这类仪器功能也越来越强大,目前已经出现含嵌入式系统的仪器。另一种方式是将仪器装入计算机。以通用的计算机硬件及操作系统为依托,实现各种仪器功能。虚拟仪器主要是指这种方式。上面的框图反映了常见的虚拟仪器方案。尽可能采用了通用的硬件,各种仪器的差异主要是软件。同时可充分发挥计算机的能力,有强大的数据处理功能,可以创造出功能更强的仪器。 熟悉LabVIEW开发环境,掌握基于LabVIEW的虚拟仪器原理、设计方法和实现技巧,运用专业课程中的基本理论和实践知识,采用LabVIEW开发工具,实现电子时钟的设计和仿真。要求通过本课程设计使学生熟悉LabVIEW开发环境,掌握基于LabVIEW的虚拟仪器设计原理、设计方法和实现技巧,使学生掌握通信系统设计和仿真工具,为毕业设计做准备,为将来的学习及今后从事科学研究、工程技术工作打下较坚实的基础。

连连看游戏设计

连连看游戏设计 Company number:【0089WT-8898YT-W8CCB-BUUT-202108】

中南林业科技大学 《数据结构课程设计》报告必做题:连连看游戏 选做题: 姓名: 学号: 专业班级:软件工程1班 学院:计算机与信息工程学院 指导老师: 签名: 2017年 1 月10 日 目录

一、连连看问题 问题描述 该游戏对一堆图案中相同的图案进行配对,点击开始按钮后,要求在一定的时间内完成对所有的图片配对,玩家每次选择两个图形,如果两图形相同,且这两个图形之间存在少于2个拐角的连通路径,则可以消除这两个图形。成功消除一对图片则计分板会增加10分,对应的时间增加3秒。要求各类类型的图片个数为偶数个,途中若有玩家找不到可以匹配的图片时可以点击提示按钮,由系统提示出一对可以消除的图片,通过玩家的点击可以消除。当所有的图片消除时,系统提示消息为“恭喜你,通关了”,如果没有在规定时间完成所有图片的配对,则系统提示为“游戏结束”。 基本要求 (1)生成游戏初始局面; (2) 每次用户选择两个图形,如果图形能满足一定条件(如果两个图形一样,且这个两个图形直接存在少于 2个弯的拐角),则两个图形都能消掉。给定具有相同图形的任意两个格子,我们需要寻找这两个格子之间在转弯少的情况下,经过格子数目少的路径。如果这个优路径的转弯数目少于 2,则这个两个格子可以消去; (3)判断游戏是否结束。如果所有图形全部消去,游戏结束;

(4) 判断死锁,当游戏玩家不可能消去任意两个图像的时候,游戏进入“死锁”状态。 设计思想 判断两个图形可以消除的条件是:两个图形必须相同,它们之间存在着0个拐角,或1个拐角,亦或是2个拐角可以互相连通消除,否则,消除不了。 广度优先搜索的具体实现:如果两个图形可以通过0个拐角连通,则从第一个选中的图片一次向右,向下,向左,向上搜索可以和当前选中图片消除的另一图片,当搜索到与之相同的图片时,则与之消去;图片布局刷新; 如果两个图片之间存在1个拐角可以消去,则广度搜索从当前图片出发,向左,右上下一次寻找一个路径节点(没有图片的点),使得寻找到的路径节点可以与选中的图片一线连通,并且可以与第二次选中的图片一线连通,则可以判断为可消除图片;图片布局重新刷新; 如果连个图片之间存在两个拐角可以连通,则分为两种情况:一种是两个图片在矩形区域的最外沿,则通过判断是否存在一条线使得在两待消除的图片周围一个单位,若存在则消去。二是两图片在矩形区域内部,则在两待消除的图片水平方向和垂直方向上寻找另外两个中间点能使两中间点之间连通,并且其中一个中间点能和待消图片1一线连通,另一中间点能和待消图片2一线连通,如若找到这样的点,则判断两图片能消去,找不到则不能消去。 需求分析 (1) 初始化游戏界面 该部分主要由执行窗口创建函数及游戏地图加载函数来实现。通过数据的初始化及游戏地图资源的加载为用户呈现一个游戏初始的界面。 (2) 图片的选择

扫雷游戏的设计与开发论文

扫雷游戏的设计与开发目录

1流程规划 2画面规划 3鼠标使用 4地雷及雷区表面探测情况5除去未靠近地雷的方块6游戏的调试 7参考文献

1.流程规划 流程规划大致上可以分为三个部分,分别为:画面初始、游戏者按下第一个方块和为非地雷方块时展开。 流程规划如图1所示: 图1整体流程规划图

2.画面规划 画面规划如图2所示: 图 2说明如下: ①:游戏窗口(Form )。为了避免因改变窗口大小而造成画面呈现不美观,在这里将BorderStyle 属性设定为3(双线固定对话框),即无法以窗口边缘进行窗口大小调整。 ②:地雷数显示区(PictureBox )。 ③:游戏状态(Image )。 ④:游戏时间显示区(PictureBox )。 ⑤:计数及状态区(PictureBox )。 ⑥:地图区图样(Image )。 ⑦:地雷区(PictureBox )。 ⑧:存储图片的组件,包括游戏状态图片、地雷区图片、地雷数及秒数数字图片(Imagelist )。 ⑨ :秒数控制(Timer )。游戏的详细设计 3.游戏初始化 当玩家开始游戏时,游戏画面如图3所示: ③

图3游戏初始画面 我们可以清楚的看到,游戏界面主要分为两个主要部分:1. 计数及状态区;.地雷区。 首先我利用PictureBox 组件,PictureBox 为容器类型的组件,因此可以加入其他组件在其内。在游戏中我利用了PictureBox 组件的两个特性,分别为容器特性及立体框线,具体如下: (1)容器特性:只要容器本身显示的行为改变,在容器内的组件也会跟着改变。当游戏初始时,地雷区的显示组件会循环执行,逐一布置在画面上,但由于执行循环时多个Image 组件要显示图形,造成分时系统执行频率显示上会出现不流畅的情形,若在循环执行前,先将容器本身的Visable 属性设为False ,在循环执行完成后再将Visable 属性设为Ture ,则显示就会变得流畅许多。 (2)立体框线:通过组件本身立体框线的属性设定,可以为游戏画面的显示上营造出层次感。 然后再利用ImageList 组件来存储游戏中将要使用的图片,我们可以将组件布置于窗体后编辑组件属性,如图4所示: 图4 通过InsertPicture 和RemovePicture 按钮即可编辑组件所存放的图片。

JAVA课程设计—连连看

Java 课程设计报告 (一):前言: 随着计算机的快速发展,计算机的应用范围越来越广。其内容范围跨越了教育科研、文化事业、金融、商业、新闻出版、体育等各个领域,也应用到了娱乐方面。让人们在业余时间来放松心情。 (二):内容: 1:实验课题:连连看小游戏的开发设计 2:实验任务:完成游戏的运行 3:功能需求和分析: 本程序将涉及一款单机小型连连看游戏,该程序具备以下的功能:(1)该游戏界面为方格类型,由纵6横7的直线平行垂直交叉组成,分别是6行5列方块拼接,共有30格小方块。方块上随 机分布一些数字,数字的要求是至少两两相同,位置随机打乱。(2)游戏规则是将相同数字的方块连接,但要满足只能至少单边无阻碍呈直线趋势连接,否则视为无效,若连接一对成功就 消失于界面,继续游戏,直到游戏结束。 (3)帮助:游戏过程中,遇到困难难以寻找下一符合要求的一对数字,可按左下按钮重置重新排列方可继续游戏。 (4)退出游戏:可点击左下方“退出游戏”按钮,结束游戏。(5)该游戏纯属个人小型休闲游戏。

(三):代码设计 连连看java源代码 import javax.swing.*; import java.awt.*; import java.awt.event.*; public class lianliankan implements ActionListener { JFrame mainFrame; //主面板 Container thisContainer; JPanel centerPanel,southPanel,northPanel; //子面板 JButton diamondsButton[][] = new JButton[6][5];//游戏按钮数组 JButton exitButton,resetButton,newlyButton; //退出,重列,重新开始按钮 JLabel fractionLable=new JLabel("0"); //分数标签 JButton firstButton,secondButton; //分别记录两次被选中的按钮 int grid[][] = new int[8][7];//储存游戏按钮位置 static boolean pressInformation=false; //判断是否有按钮被选中 int x0=0,y0=0,x=0,y=0,fristMsg=0,secondMsg=0,validateLV; //游戏按钮的位置坐标int i,j,k,n;//消除方法控制 public void init(){ mainFrame=new JFrame("JKJ连连看"); thisContainer = mainFrame.getContentPane(); thisContainer.setLayout(new BorderLayout()); centerPanel=new JPanel(); southPanel=new JPanel(); northPanel=new JPanel(); thisContainer.add(centerPanel,"Center"); thisContainer.add(southPanel,"South"); thisContainer.add(northPanel,"North"); centerPanel.setLayout(new GridLayout(6,5)); for(int cols = 0;cols < 6;cols++){ for(int rows = 0;rows < 5;rows++ ){ diamondsButton[cols][rows]=new JButton(String.valueOf(grid[cols+1][rows+1])); diamondsButton[cols][rows].addActionListener(this); centerPanel.add(diamondsButton[cols][rows]); } } exitButton=new JButton("退出"); exitButton.addActionListener(this); resetButton=new JButton("重列"); resetButton.addActionListener(this); newlyButton=new JButton("再来一局");

基于Android的连连看游戏设计

本科毕业论文(设计) 题目:基于Android的连连看游戏设计 学生:李超学号: 201040620175 学院:物理与电子科学学院专业:电子信息科学与技术入学时间: 2010 年 9 月 13 日 指导教师:王森职称: 完成日期: 2014 年 4 月 18 日

摘要 手机游戏是一款在手机或者平板电脑上运行的游戏软件。随着移动互联网和科技的发展,移动终端设备得到了广泛的应用,在日常生活中,人们越来越离不开它。在此基础上,手机游戏得到了很大的发展。android手机就是在此基础上产生的,它是由Google公司推出的一款基于Linux内核的开源手机操作系统,由于其具有开放性、不受运营商的束缚、丰富的硬件选择、开发商不受任何限制和能无缝结合优秀的Google 应用的特点。再加上手机游戏的娱乐性、随意性,更是有了很大的发展空间。 本文就是在对android 手机游戏的研究基础上,开发了一款特别有趣的游戏---连连看。通过对游戏需求的分析,确定了连连看要实现的功能,通过对游戏界面布局、音效控制、动画设置、数据模型等研究,设计出了一款界面清新,有趣的一款简单的手机游戏,希望能为大家的日常生活带来一点乐趣,是人们生活更加快乐,心情愉悦。通过这次连连看游戏的设计,我对Android产生了更加浓厚的兴趣,并且从中看到了Android游戏的发展前景,相信Android的发展前景会越来越好。 关键字:手机游戏Android 连连看 ABSTRACT Mobile game is game software which is run on a mobile phone or a tablet. With the development of Internet and science and technology, mobile terminal equipment has been widely used and is indispensable in People's Daily life.Based on this , the mobile phone games got great development. Android is produced on the basis of this.It is a a open source operating system produced by Google company ,and which based on the Linux kernel.Due to its openness, free from all bondage of operators, rich hardware selection, developers are not subject to any restrictions and combine with excellent characteristics of Google apps closely. In addition to the entertainment of mobile games , optional, it has a very big development space. This article is based on the study of android mobile games, has developed a very

连连看游戏的设计与实现

苏州高博软件技术职业学院学生毕业设计(论文)报告 系别计算机科学技术 专业计算机应用 班级1310计应YZ 姓名支峰 学号013321018 设计(论文)题目连连看游戏的设计与实现 指导教师贺雪梅 起迄日期2015年10月16日-2016年4月25日

连连看游戏的设计与实现 摘要本文用VisualC++来设计与实现简单的连连看游戏的基本功能,玩家可以在游戏区域中通过键盘控制来选取相同的两个物件,采用特定的消除规则对它们进行消除的操作,当游戏区域中的所有方块对都被消除后玩家即可胜利。本次课程设计对该游戏的算法以及游戏图案的绘制进行详细的介绍。运用连线相消的方法完成了连连看游戏。 关键词:VisualC++6.0;连连看;游戏;3D绘图 1 引言 1.1连连看游戏介绍 游戏“连连看”顾名思义就是找出相关联的东西,它来源于街机游戏《四川麻将》和《中国龙》,是给一堆图案中的相同图案进行配对的简单游戏,在2003年,一个叫做朱俊的网友将这种形式搬到了PC上,立刻成为办公一族的新宠,并迅速传遍了世界各地。饱受工作压力的人们没有太多的时间进行复杂的游戏,而对于这种动动鼠标就能过关的游戏情有独钟。之后村子的连连看风靡版,阿达的连连看奥运版,连连看反恐版,还有敏敏连连看,水晶连连看等遍地开花,造就了一个连连看的新世界。连连看游戏有多种地图样式和道具系统、大大加强了游戏的可玩性,是一款老少皆宜的休闲佳品。 1.2课程设计的目的 网络小游戏制作的目的是满足了人们休闲的需要,在紧张工作之余休闲类的小游戏能够给人带来最大程度的放松,也可以增进人们之间的交流,沟通,通过游戏还可以认识更多的朋友,也可以到达跨省、跨市,甚至跨国间人们互相娱乐的目的。 另外也想通过本次课程设计将三年来所学的专业知识和其他方面的知识融入到实际应用中。

(完整版)Java毕业课程设计连连看游戏(含代码)

Java程序课程设计任务书 一、主要任务与目标 1、了解图形用户界面的概念; 2、了解AWT的基本体系结构,掌握窗口的基本原理; 3、掌握几种布局管理器的使用方法; 4、掌握java的事件处理机制; 5、了解Swing的基本体系结构,掌握Swing组件的使用方法; 6、掌握java小程序的工作原理和使用方法; 7、该游戏还将设置退出,再来一局按钮,并实现相应的功能。 8、设计一个用户注册登录界面 二、主要内容与基本要求 游戏规则是模仿网络上普通的连连看游戏,主要是鼠标两次点击的图片能否消去的问题。当前,前提是点击两张相同的图片,若点击的是同一张图片或者两张不同的图片,则不予处理。在两张想同图片所能连通的所有路径中,如果存在一条转弯点不多于两个的路径,就可以消去;如果没有,则不予处理。 该游戏由30张不同的图片组成,游戏开始将会出现30张随机组合的图片,在规则下点击两张相同的图片后图片将会消失。图片全部消完为游戏成功。游戏还将设置退出,再来一局的按钮,和倒计时的功能,方便用户进行操作。并且有一个用户登录注册界面,玩家必须登录以后才可以进行游戏。

三、计划进度 12月28日~ 12月29日:课程设计选题,查找参考资料 12月30日~ 12月31日:阅读参考书籍,收集资料,完成需求分析1月1日~ 1月3日:系统的代码设计及实现,数据库设计与实现 1月4日~ 1月5日:系统的调试,修改,完善 1月6日~ 1月7日:完成课程设计报告,准备答辩 四、主要参考文献 [1] 刘宝林.Java程序设计与案例习题解答与实验指导[M]. [2] 王鹏何云峰.Swing图形界面开发与案例分析[M]. [3](美)Karl Avedal , Danny Ayers, Timothy Briggs. JSP编程指南[M]. 电子工业出版社,. [4](美)Mark Linsenbardt. JSP在数据库中的应用与开发[M]. 希望电 子出版社,. [5] Dianne Phelan,Building a simple web database application[C].IEEE International Professional Communication Conference, 2004, 79-86. [6](美)Karl Avedal,Danny Ayers,Timothy Briggs.JSP编程指南[M].电子 工业出版社. [7] Dianne Phelan,Building a simple web database application[C].IEEE International Professional Communication Conference, 2005, 79-86. [8] Altendorf. Eric, Hohman. Moses, Zabicki. Roman. Using J2EE on a large, web-based project[J]. IEEE Software. (02):81-89.

QT版连连看制作的实验报告

(此文档为word格式,下载后您可任意编辑修改!) 一.游戏概述 1.1游戏简介 游戏“连连看”顾名思义就是找出相关联的东西,这个连连看在网上基本是用在小游戏中,就是找出相同的两样东西,在一定的规则之内可以做为相关联处理。“连连看”的发展经历了从桌面游戏、在线游戏、社交游戏三个过程。 游戏“连连看”是源自台湾的桌面小游戏,自从流入大陆以来风靡一时,也吸引众多程序员开发出多种版本的“连连看”。这其中,顾方编写的“阿达连连看”以其精良的制作广受好评,这也成为顾方“阿达系列软件”的核心产品。并于2004年,取得了国家版权局的计算机软件著作权登记证书。 随着Flash应用的流行,网上出现了多种在线Flash版本“连连看”。如“水晶连连看”,“果蔬连连看”等,流行的“水晶连连看”以华丽界面吸引了一大批的女性玩家。 2008年,随着社交网络的普及和开放平台的兴起,“连连看”被引入了社交网络。“连连看”与个人空间相结合,被快速的传播,成为一款热门的社交游戏,其中以开发者Jonevey在Manyou开放平台上推出的“宠物连连看”最为流行。 1.2游戏功能 本次设计连连看主要是在原连连看对战的基础上设计挑战模式,具体的功能如下所述: 游戏运行界面简单美观,操作简单,运行稳定;

●能够根据不同的等级模式播放不同的游戏背景音乐,包括操作 方向键、消行时的声音,音量由玩家操作控制; ●设计不同的游戏难度,当玩家达到一定的积分,可以进入相关 难度的等级; 玩家可直接操作界面上的相关按钮来控制游戏的开始、暂停、设置、退出等功能。 二.需求分析 2.1开发的需求 2.1.1 C++ CC++的哲学就不一样了,同一份程序代码,只要在该平台重新Compile成该平台的执行档,就能在该平台执行,若文字模式下的程序,的确可以跨平台,程序完全不需修改,但GUI盛行以后,由于各GUI的Library都不一样且没有标准,所以GUI程序并没办法跨平台Compile,因为各平台都有专属的Library。但是CC++优势就是执行速度快,若能解决GUI Library的问题,则跨平台即可解决。 除了GUI Library需要统一外,还得看该Library设计的好不好才行,Linux GUI我没写过就不说了,若在Windows平台,Borland的C++ Builder使用Delphi的VCL Library,Microsoft的Visual C++可以用MFC和.NET Framework,首先来看Borland的C++ Builder,它使用标准的ANSI C++语言开发,利用VCL写出来的程序也算蛮漂亮的,执行速度很快,比较麻烦的是C++Builder当初为了缩短上市时间,并没有设计自己的Library,而是藉用Delphi的Library,导致C++ Builder在Compile时,是先用Delphi的Compiler将VCL compile成

扫雷游戏的设计与开发1

扫雷游戏的设计与开发 摘要 本论文研究的是以Visual Basic 6.0为开发环境,设计并开发一款扫雷游戏,其功能类似于Windows操作系统自带的扫雷游戏。论文首先介绍了制作游戏的整体思路及整个游戏设计的流程规划,然后介绍了雷区的布置及地雷随机产生的实现方法;重点介绍了在游戏过程中各事件的处理,其中又以鼠标事件和清除未靠近地雷区方块这两方面最为最要,鼠标事件是利用鼠标所发出的信息了解使用者的意图,进而做出相对应的动作,而清除未靠近地雷区方块由于引进了“递归”这个概念而使其简单化。 本次设计只是完成了扫雷游戏的基本功能,在细节方面仍有待以后完善。 关键词:扫雷;Visual Basic 6.0;事件;递归

The Design and Development of Mine Game Abstract What my thesis research for is basic on the develop environment of Visual Basic 6.0 , 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 Visual Basic 6.0 and the combination of some simple calculations; 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 recursion. This design has been completed the basic function of mine game. The details still need to be improved. Key words: Mine game, Visual Basic 6.0, Affairs, Recursion

连连看游戏操作手册

用户操作手册 目录 1.引言 (2) 1.1编写目的 (2) 1.2项目背景 (2) 1.3定义 (2) 1.4参考资料 (2) 2.软件概述 (2) 2.1目标 (2) 2.2功能 (2) 2.3性能 (3) 3.运行环境 (3) 3.1硬件 (3) 3.2支持软件 (3) 4.使用说明 (3) 4.1安装和初始化 (3) 4.2输入 (4) 4.3输出 (4) 4.4出错和恢复 (4) 4.5求助查询 (4) 5.运行说明 (5) 5.1运行表 (5) 5.2运行步骤 (9) 6.程序文件(或命令文件)和数据文件一览表 (14)

1.引言 1.1编写目的 本文档将对连连看游戏的使用,操作以及维护进行描述,使用户(或潜在用户)能够通过本手册了解本软件的用途,并且知道在什么情况下,能够正确的使用它,本文档的使用者是用户。 1.2项目背景 a.项目名称:基于Android平台的连连看游戏 b.项目小组开发人员:姚富贵,张峥华,兰雨峰,兰雪峰,蒙本贵,刘刚,李尚萍 c.用户:将要使用本游戏的用户 d.项目开发环境:WindowsXP+Eclipse+AndroidSDK 1.3定义 连连看游戏用户手册 1.4参考资料 a.《需求规格说明书》 b.《概要设计说明书》 c.《详细设计说明书》 d.《Android应用开发揭秘》杨丰盛*著机械工业出版社 e.《深入浅出Android》 Gasolin著 2.软件概述 2.1目标 本项目力争成为能让玩家喜欢的一个放松休闲的小游戏,在使用过程中流畅没有错误,并具有一定的娱乐性。 2.2功能 本软件为游戏软件,纯做娱乐,该游戏属于敏捷类游戏,考验游戏玩家的反应速度以及

连连看游戏课程设计+源代码

课程设计 课程名称:程序设计课程设计 课题名称:网络连连看游戏 班级:xxx 学号:xxx 姓名:xxx 指导教师: 计算机学院

一、课程设计目的 本课程设计的目的最主要是掌握linux系统下C++编程思想,以及关于QT软件编程,设计出连连看图形界面,实现连连看各项功能,提高编程和解决问题的能力。 二、课程设计内容 设计一个连连看游戏项目,实现如下功能: 1、设计连连看游戏界面,能让用户在该界面上进行相关操作。 2、为游戏添加功能:聊天对话,逻辑层相消,游戏级别,时间限制等。 三、课程设计要求 1、课程设计的程序必须用C++语言完成。 2、课程设计必须在linux系统下进行。 3、要求写出需求分析报告。分析部分包括功能需求和界面需求。 4、本项目要求分团队完成,连连看游戏五人一组共同合作,培养学生团队合作的能力。 四、系统的需求分析和模块设计 1、需求分析 本项目需完成两大模块设计:一为游戏界面设计,二为游戏功能设计。 2、模块分解 系统功能层次模块图:

五、系统的程序设计与实现 程序的运行环境:Linux终端 开发环境:QT、C++ 程序的详细设计:连连看消去算法实现 在检验两个方块能否消掉的时候,我们要让两个方块同时满足两个条件才行,就是两者配对并且连线成功。 分3种情况:(从下面的这三种情况,我们可以知道,需要三个检测,这三个检测分别检测一条直路经。这样就会有三条路经。若这三条路经上都是空按钮,那么就刚好是三种直线(两个转弯点)把两个按钮连接起来了) * 1.相邻 * 2. 若不相邻的先在第一个按钮的同行找一个空按钮。1).找到后看第二个按钮横向到这个空按钮所在的列是否有按钮。2).没有的话再看第一个按钮到与它同行的那个空按钮之间是否有按钮。 3).没有的话,再从与第一个按钮同行的那个空按钮竖向到与第二个按钮的同行看是否有按钮。没 有的话路经就通了,可以消了. * 3.若2失败后,再在第一个按钮的同列找一个空按钮。1).找到后看第二个按钮竖向到这个空按钮所在的行是否有按钮2).没有的话,再看第一个按钮到与它同列的那个空按钮之间是否有按钮。3).没有的话,再从与第一个按钮同列的那个空按钮横向到与第二个按钮同列看是否有按钮。 没有的话路经就通了,可以消了。 * 若以上三步都失败,说明这两个按钮不可以消去。 六、系统的运行结果与分析 程序源代码: Mainwindow.cpp #include

相关主题
文本预览
相关文档 最新文档