蜘蛛纸牌游戏设计 计算机科学与技术毕业论文.docx

上传人:b****5 文档编号:5146157 上传时间:2022-12-13 格式:DOCX 页数:38 大小:836.68KB
下载 相关 举报
蜘蛛纸牌游戏设计 计算机科学与技术毕业论文.docx_第1页
第1页 / 共38页
蜘蛛纸牌游戏设计 计算机科学与技术毕业论文.docx_第2页
第2页 / 共38页
蜘蛛纸牌游戏设计 计算机科学与技术毕业论文.docx_第3页
第3页 / 共38页
蜘蛛纸牌游戏设计 计算机科学与技术毕业论文.docx_第4页
第4页 / 共38页
蜘蛛纸牌游戏设计 计算机科学与技术毕业论文.docx_第5页
第5页 / 共38页
点击查看更多>>
下载资源
资源描述

蜘蛛纸牌游戏设计 计算机科学与技术毕业论文.docx

《蜘蛛纸牌游戏设计 计算机科学与技术毕业论文.docx》由会员分享,可在线阅读,更多相关《蜘蛛纸牌游戏设计 计算机科学与技术毕业论文.docx(38页珍藏版)》请在冰豆网上搜索。

蜘蛛纸牌游戏设计 计算机科学与技术毕业论文.docx

蜘蛛纸牌游戏设计计算机科学与技术毕业论文

摘要

现在社会在进步,人民生活水平也随着提高,人们可以利用多余的时间去体验游戏,从中感受快乐。

目前为止,游戏有很多类型。

例如,动作、冒险、模拟、角色扮演、休闲等类游戏都在迅速发展。

其中,很多人最熟悉的应该就是蜘蛛纸牌游戏了吧。

蜘蛛纸牌游戏是一款休闲益智类游戏,非常受大家的欢迎,随着科学技术的发展科技水平的进步,游戏实现的功能也越来越多,游戏界面也变得越来越好看,玩家的体验感受也越来越好,让游戏的开发对于人们的生活娱乐更加有意义。

因此,也有越来越多的人亲睐于这款游戏。

这款蜘蛛纸牌游戏我是用Java语言来实现的,其中主要实现了纸牌的移动,发放等。

其设计的灵感主要来自于window7操作系统中的蜘蛛纸牌游戏。

关键词休闲游戏;Java语言;功能实现

Abstract

Nowthatsocietyisprogressingandpeople'slivingstandardsareimproving,peoplecanusetheextratimetoexperiencegamesandfeelhappy.Sofar,therearemanytypesofgames.Forexample,action,adventure,simulation,role-playing,leisureandothergamesarealldevelopingrapidly.Amongthem,thespidercardgameshouldbethemostfamiliartomanypeople.SpiderSolitaireisacasualpuzzlegamethatisverypopularwitheveryone.Withthedevelopmentofscienceandtechnology,thelevelofscienceandtechnologyhasimproved,thegamehasmoreandmorefunctions,andthegameinterfacehasbecomemoreandmorebeautifulTheexperienceexperienceisgettingbetterandbetter,makinggamedevelopmentmoremeaningfulforpeople'slifeandentertainment.Therefore,moreandmorepeoplelovethisgame.

IimplementedthisspidercardgameinJavalanguage,whichmainlyrealizedthemovementanddistributionofcards.Theinspirationforitsdesigncomesmainlyfromthespidercardgameinthewindow7operatingsystem

Keywordstherecreationalgame;javalanguage;functionrealization

第1章绪论

1.1休闲娱乐游戏[1]

所谓的休闲游戏就是在没有劳动和没有工作的时候玩的游戏,它可以使人的身心得到调节与放松并获得快乐。

在业余的生活中适当的玩游戏可以有效地促进能量的储蓄和释放,可以使智力得到发展,可以锻炼心理素质。

休闲游戏的种类很多,但是最为人们所熟知的应该就是Windows系统中的蜘蛛纸牌游戏了。

它非常的简单上手也很快,不需要长时间进行,随时都可以停止游戏,而且有较高的娱乐性。

1.2游戏的背景

蜘蛛纸牌游戏是一款粉丝众多的休闲娱乐小游戏,OberonGames对该游戏进行开发,并由微软公司在2010年发行。

而且在WindowsME以及更高级的版本中该游戏都是系统自带的游戏。

随着科学技术的不断发展游戏的功能开始变得越来越强大,界面变得越来越美观,用户体验也变的更加美好,是大家在休闲时玩的最佳益智小游戏。

游戏的主要目的是能够通过移动次数最少的情况下,将玩牌区的扑克牌全部进行移走,这样就获得了胜利。

1.3国内外研究现状[2]

在当前科技和大数据的发展之下,休闲娱乐市场也进入了白热化的竞争程度,尤其是以棋牌为代表的小游戏,当前市场前景非常巨大,让众多的游戏开发公司加入进来,业态竞争相当激烈。

在市场竞争非常激烈的情况下,各个公司为了在市场中脱颖而出,他们对于游戏内容不断丰富,对于界面不断进行优化,在很大程度上推动了产业的快速发展,也让产品更加的丰富起来。

之后众多的棋牌了小游戏便层出不穷,使得本就激烈的竞争更加惨烈。

很多公司都在不断推陈出新,而且游戏数量也在不断增加,同时也在不断丰富游戏内容,实现的功能也越来越多。

游戏平台抗压能力和稳定性等也都显著增强;由于各大公司的努力游戏可玩性也在不断增加等等。

蜘蛛纸牌游戏是典型的两副牌游戏。

所有传统的休闲游戏中玩家最为熟知的应该就是WindowsME以及更高级的版本中系统自带的游戏。

当前市面来看,很多蜘蛛纸牌游戏都是WindowsME以及更高级的版本中自带的游戏版本进行开发的,比如手机端的游戏就是典型的代表。

1.4工作内容

主要工作包括了资料的收集与准备,参考资料的提炼与汇总,查看书籍以及掌握必要的开发工具,安装编辑软件Eclipse,了解开发程序的工具。

首先,确定游戏程序实施的具体方案。

其次设计程序的具体流程图,然后编写程序,修改并完善程序。

最后系统调试、测试,优化处理,产生产品。

本论文设计对游戏功能进行了基本实现:

包括游戏开局、游戏发牌、级别选择、可执行的相关操作以及界面的操作等等。

程序是采用Java语言来编写的

1.5开发语言的简介[3]

詹姆斯·戈士林博士研发设计出了JAVA语言,其还对基于该语言技术的原始编译设备和虚拟设备进行了研发设计。

Java语言是一种面向对象的程序设计语言,在1995年由SunMicrosystems公司推出。

与C、C++语言对比来看,Java的风格非常相似,其对于面向对象技术的C++语言予以了继承,同时也对C++语言中造成错误的指针、重载运算符以及多重继承等问题进行了舍弃,同时对垃圾回收功能进行了增加,这样就能让不需要引用对象消除内存空间的占用,让操作员不必对内存管理进行考虑。

和传统的编译执行语言与解释执行语言对比来看,Java不同点较多。

JAVA能够将源代码进行编译,比如可以编译成二进制代码,其后按照平台的不同一虚拟机进行解释,比如可以解释为执行字节码,实现跨平台作用,也就是“一次编译、随处执行”。

但是其编译执行耗费的时间较多,并且在很大程度上也会影响JAVA程序的处理效率。

1.6开发语言特点[4]

JAVA语言特点较多,其非常简单、采取分布式和解释性方式,能够实现面向对象,同时具备性价比高、线程多等诸多优点,下面结合JAVA特点进行详细说明。

1.Java语言较为简单。

与C++语言规则对比来看,其规则具有一致性。

从特定层面来看,对于研发设计人员来讲,可以在C程序设计中能够较为熟练的应用JAVA语言的语法规则。

而且在C和C++语言转变来看,JAVA语言得到了转换,推动C++语言得到简化和提升。

举例来看,通过JAVA使用接口能够实现多重继承,而且也能对指针进行取消,并让程序得到简化。

通过JAVA语言能够实现程序简化,并且能够让设计资源实现有效管理。

当前对于JAVA学习者来讲,能够通过源代码进行分析,可以促进研发人员的编程能力提升,由于JAVA在类库丰富程度上得到提升,同时在API文档提供和三方开发商提供了较大的支持,另外,基于很多JAVA开发项目的源代码分析项目,可以让开发人员提升编程能力。

基于JAVA的开源项目可以通过JDK作为开源代码。

2.平台无关性。

针对平台无关来看,主要是JAVA可以在差异化的平台进行操作。

对于JAVA来讲,其运用了虚拟设备的原理,可以通过虚拟设备运行,打通了平台不同的接口。

从数据类型来看,JAVA数据类型和机器本身关联不大,而基于硬件与操作系统的JAVA虚拟机可以实现二进制代码的解释执行功能,并能够为JAVA通过不同平台运行提供接口支持。

能够在全球内实现JAVA编程共享。

3.安全性。

通过C++语言学习,能够让用户对JAVA原理进行深入理解,而且从编程来看,C++编程语言和JAVA非常类似。

在运行JAVA程序时,需要由操作系统分配内存资源,而对C++指针对存储器操作上可以进行舍弃,能够让病毒难以通过指针对系统造成损害。

JAVA可以让程序强化安全管控,有助于程序阻止程序非正常进入。

4.面向对象。

Java在对象分类上支持较大,通过继承父类方式进行处理。

从类继承关系来看,在JAVA中关系相对单一,而且某个子类仅有单一父类进行对应。

在JAVA提供众多的Object类中,可以将其继承关系表述成倒立着的树,树根就是Object类,而且其功能十分强大,能够应用到Object类和派生类别。

5.分布式。

基于TCP/IP网络平台的扩展,JAVA可以帮助程序设计人员应用网络文件如本机文件一样方便,主要是库函数进行HTTP和FTP协议传送与信息接收。

6.健壮性。

Java的强类型特征比较突出,能够通过运行与编译检查,防止错误数据类型产生。

而且JAVA本身设计了垃圾集收功能,能够阻止内存分配问题。

还对真数组进行实现,可以对覆盖数据问题进行组织,这都有利于提升JAVA应用的周期。

而且JAVA语言还对异常问题建立了处理机制。

7.解释性。

Java能通过程序编译将自节代码转换成中间代码。

与机器码非常接近,字节码可以在JAVA虚拟设备上任何系统中被解释操作。

对比于C,C++等语言,通过CPU芯片编译形成机器代码,而机器代码运行与指定的中央处理器关联较大,其并不是基于CPU芯片而单独进行编译。

8.动态。

众所周知,C++缺少档期类库,在程序升级之后,要想让程序基于新类库的功能使用,必须要对程序进行修改,要进行另外编译。

但是JAVA程序组成单元就是以类基础,可以通过类别进行编写,也能引入到类库之中,但其运行通过动态装载进行,这就让JAVA难以在分部环境中进行维护和分类处理。

9.可移植性。

Java程序与体系结构不相关的特征,能够让JAVA程序可以快捷的移入到网络差异化的微机之中。

与之相对应的是,JAVA的类库中也配备了与不同平台的接口,能够对类库进行移植。

10.多线程。

对于多线程来讲,主要是通过应用程序在同一时段内进行多个任务的处理,并且与同步机制相对应,就能够保证线程可以对数据进行共享。

基于编程的运用,能够通过多个线程处理实现更佳的交互能力与时效性。

11.高性能。

与交互应用程序对比看,JAVA的运行速度要比交互程序块,主要是由于JAVA编译后通过解释器运行字节码,同时在程序执行中可以通过字节码转译成平台的而机器命令,进而提升运行速度。

1.7开发工具Eclipse[5]

Eclipse作为基于JAVA整合类型与开放源码可以实现集成开发功能。

从其自身来看,Eclipse作为框架和服务模式,能够通过插件组成进行环境开发。

基于多个插件的支持,能够让其功能相对稳定,而且IDE软件相对固定难以有一定的灵活度。

基于Eclipse集成开发的平台,其主要用于开发JAVA语言,而且通过不同插件安装实现计算机语言的多重支持。

对于Eclipse而言,其还涵盖了基于Eclipse扩展的相关插件以及开发环境,由于相关组件可以通过Eclipse实现无缝集成。

对于Eclipse来讲,每一样都可以作为插件使用,在插件提供中可以通过用户提供集成和统一的开发环境,这样研发人员都具备同样的开拓场所。

JAVA开发工具本身并不受平等性和一致性的限制,另外在开发中对于C、C++、PHP等语言进行支持。

基于JAVA语言设计开发的Eclipse,其用途不单单局限在JAVA语言中。

1.8本游戏开发的意义

作为新兴行业之一的游戏产业,其发展空间广阔,而且游戏产业也备受公众热议和争论。

以电子、计算机、软件和网络技术为一体的游戏产业,属于新兴娱乐产业范畴。

游戏可以给人们带来无尽的乐趣,由于我个人也比较喜欢玩游戏,所以对游戏还是有一定的接触,虽然很多时候都是玩的网络游戏,但是由于课题的需要,就研究了偶尔也在玩的蜘蛛纸牌游戏,这款游戏有利益锻炼智力。

以前一直很崇拜能开发出游戏的人,所以也想了解游戏是怎么开发出来的,就自己做了一些相关的研究,然后模仿Windows7中的蜘蛛纸牌游戏用Java语言实现它的基本功能。

做本游戏的目的就是为了对Java有一个更好的了解。

第2章需求分析设计

2.1程序设计的任务概述[6]

由于我的能力有限,这款游戏的功能不会很强大,但游戏的主要功能以及游戏的界面还是实现了。

游戏的目的通过移动次数最少的情况下,将玩牌区的扑克牌进行移走,这样就获得了胜利。

玩家通过玩游戏可以使工作学习之后疲惫身心有一个轻松愉快的放松方式。

目前来看蜘蛛纸牌这款游戏已经很平常了,开发这个游戏主要是以锻炼为主。

2.2系统特点

蜘蛛纸牌这种游戏主要采用了两副104张纸牌进行游戏。

其中分别由一种、两种或者四种不同的花色组成。

根据不

同的难度等级,花色的组成也不同。

游戏想要取得胜利,就必须得把纸牌从玩牌区移走到界面左下角,从纸牌的排列顺序来看,采取的的是K到A排列的顺序。

在纸牌游戏级别当中,比如在高级与中级级别中,要求相同的纸牌花色,同时也要求按照降序的方式对纸牌进行排列,在纸牌排好之后,玩牌区才能将这一列的纸牌进行移除,并将其移动到页面的左下。

在纸牌不能移动时,可以通过对纸牌游戏区域右侧的发牌叠部分进行点击,这样窗口将会开启新的发牌,发牌的节奏是按照一列发一张进行。

但是假如按照顺序排列的一串纸牌如果花色也完全一致的话,那么就能将它们一起移动到其他列中,不限制一次仅移动一张。

2.3功能需求

从蜘蛛纸牌游戏涵盖的功能来看,主要涵盖以下:

1.游戏页面涵盖以下的功能组件:

游戏开始、发牌重启、设置级别:

初级、中级、高级分别对应单一、两个及四个花色。

同时显示相关操作,游戏推出、暂停以及帮助等等。

2.游戏窗体设计通过功能按键实现,对于游戏规则与游戏声明予以显示。

3.载入游戏纸牌的图片。

4.根据程序算法设计研发的纸牌游戏操作方法。

.

2.4界面的设计

1.通过游戏主页面对游戏背景色、框架以及不同发牌及玩牌区域和相应纸牌回收区域予以设置。

页面按钮如下:

开局按键、重新发牌按键、可行操作显示按键、初级按键、中级按键、高级按键等以及退出按键。

主界面显示纸牌各个区域。

2.通过鼠标的点击、拖拽、释放等操作实现不同的纸牌处理方式。

3.纸牌按从小到大的顺序排列,且类型相同,就可以移动放置一组或单个直排式。

4.要想实现程序自动回收这组纸牌到收牌的区域,纸牌就必须按照从K到A的顺序排列。

5.在用户以单击方式对纸牌发牌区单击时,假设十列纸牌当中不存在空白列的话,就能将纸牌成功的移动到每列纸牌的下部区域。

不然的话,将会弹出空位不能发牌的提示。

6.当玩家不知道游戏的下一步该怎么走时,可以点击游戏菜单项显示可行操作。

系统就会进行提示。

7.设置游戏的级别,对于玩家来讲,可以通过游戏菜单中的相应级别选项进行游戏等级的设置。

游戏默认的是初级也就是最简单的级别。

假设游戏玩家对这个等级不感兴趣的话,那么可以按照自己的期望选择中级或者高级模式。

2.5游戏设计主流程分析

本游戏的游戏设计的主流程分析如图2-1所示:

图2-1主流程分析图

2.6综合要求

1.硬件配置:

CPU>=Pentiurn41.6G,内存>=512MB,硬盘剩余空间>=2GB。

2.软件环境:

操作系统是MicrosoftWindows7,安装Sun公司的Java运行环境JRE1.8安装Java开发工具包(JDK-8u121)及Eclipse2018-09[7]。

2.7模型[8]

蜘蛛纸牌游戏可以分为4个功能模块,分别是:

Spider.java,SpiderMenuBar.java,PKCard.java,AboutDialog.java。

其中每个部分都实现了一定的功能,每个部分的名字都包含一个类,如Spider.java部分需要实现的功能主要包括了蜘蛛纸牌游戏框架形成,以及游戏方式实现,具体涵盖了随机生成纸牌,摆放的位置等等,Spider的public类别包含在其中。

SpiderMenuBar.java部分主要功能是形成纸牌游戏的菜单任务栏,通过任务栏的不同组件进行处理。

具体涵盖了三大功能模块,具体是图像用户页面创建、实现监听组件接口、可操作性线程的执行与显示,SpiderMenuBar类别涵盖其中。

PKCard.java的主要作用是对纸牌属性进行定义,具体涵盖了位置和名称等等,以方案设计和执行实现纸牌的有序移动,PKCar的public类包含其中。

AboutDialog.java主要应用于蜘蛛纸牌游戏帮助菜单栏,AboutDialog的public类包含其中。

2.8游戏程序需要解决的问题[9]

以EclipseJava2018-09作为开发平台进行Java蜘蛛纸牌游戏的设计开发。

绘图与键盘事件将会以较高的频率在后台等待响应,假设一点微小的差别都会导致错误的发生,更有可能陷入死循环的状态。

鉴于此,要求设计要十分严密,而且要将将要发生的多个事件以及意外状况均要在设计时进行充分考虑。

Java蜘蛛纸牌游戏中采用了外部文件引入的图片贴图,其目的是为了界面的美观和增强适用性。

还有,我们采用了双缓冲机制来作为程序中普遍存在的闪烁现象的相应的解决方案。

对于一款爆棚游戏来看,友好的客户界面是吸引用户的关键,而对于游戏来讲,其开始、结束和信息动态画面都是程序必要的组成。

基于此,更加友好的页面设计、人性化的特征以及动画显示都要融入其中。

第3章程序的总体设计

3.1线程的设计

对于操作系统来讲,很多系统都能够对多项任务积极支持,而且一项任务本身就作为一项程序,程序的运行都是进程的实现,在运行程序时,内部涵盖了顺序执行流,而且每个线程就是对应着不同顺序执行流。

采用两种方式对JAVA进行线程设计,一种方式就是通过Thread类子类进行创建,另一种方式就是通过Runnable接口实现。

上述线程设立方式本职上虽然差不多,但是对于某个类别要承继其他类别的Thread类进而让多个线程实现的话,只能以Runnable接口形式具体实现,而Java对多项继承是不许可的。

3.1.1通过Thread类实现

通过对Thread类的子类进行定义,并对run()方法进行重写分类,此种方式能够代表线程实现的关键人物,而且该种方式就对应着线程执行体。

此时,在该类实例初始化执行中,target目标对象能为null。

对于JAVA来讲,其能够对单继承予以支持,此种方法对于其他继承类并不支持。

以下就Thread类定义进行介绍,主要是其如何对线程进行管理和帮助。

1.线程入口。

voidrun()方法运用在线程运行中。

2.通过线程启动方式来实现调用运行,通过voidstart()方法将其从出生转入到就绪状态之中。

3.等待一个线程终止是Join()。

4.获得线程优先级是getPriority()。

5.中断线程是voidinterrupt()。

6.判断线程是否任然在运行,处于活动状态是booleanisAlive()。

7.改变线程的名字是voidstName(StringthreadName)。

8.设置线程优先级是setPriority(intp)。

3.1.2实现Runnable接口

Runnable接口类创建方式是线程创建的简单方式,能够按照线程设计的run方法进行重新设计,其后对此类对象进行创建。

在Runnable接口中通过run()的方式进行实现,可以实现基于对象线程创建的方式实现Runnable接口。

执行代码单元通过Runnable抽象反映。

3.2代码功能的设计

本游戏共有Spider.java,SpiderMenuBar.java,PKCard.java,AboutDialog.java,4个模块组成。

其中Spider.java主要形成了蜘蛛游戏纸牌的架构,并且游戏方式进行实现,比如随机生成的纸牌,摆放的位置等等。

SpiderMenuBar.java在游戏纸牌菜单栏中生成作用突出,而且可以实现菜单不同组件的事件处理。

其中涵盖了三大模块,一个是创建图像用户界面;一个是实现组件监听;一个是线程可操作执行。

PKCard.java主要是定义纸牌的属性,包括名称,位置等相关信息。

并且通过相关的方案实现纸牌的移动等。

AboutDialog.java主要是辅助实现纸牌游戏的帮助任务栏。

3.3总体设计流程图

程序的总体设计流程如图2-2所示:

图2-2总体设计流程图

3.4模块一Spider

Spider.java文件作为游戏的主文件,其主要应用了Hashtable类型、Container类型、JFrame类以及PKCard类型等等。

JFrame类及其子类主要对窗体进行构建,而标签创建主要是JLable类的负责范畴。

而短文本类的字符串或者图像等由标签进行应用。

容器对象通过Container类创建,该容器涵盖的组件较多。

其中纸牌对象通过PKCard类创建。

而哈希表通过Hashtable类实现,通过该表能实现相应的键映射。

主要变量有:

publicstaticfinalintEASY=1;代表“简单”等级。

publicstaticfinalintNATURAL=2 代表“普通”等级。

publicstaticfinalintHARD=3 代表“难”等级。

privateintgrade=Spider.EASY设定初始等级为简单等级;

privateContainerpane 变量为Container类创建的面板容器。

privatePKCardcard[]变量为PKCard类创建的纸牌数组[]。

privateJLableclickLable1变量可以通过鼠标单击区域创建右下角发牌区。

privateJLablegroudLable[]变量为JLable类创建的背景框数组。

Hshtable类通过Hshtabletable变量创建哈希对象,可以储存键值数据对。

Privateintc变量表示纸牌数量。

Privateintc变量表示纸牌级别。

Privateinta变量表示纸牌列号。

Privateintfinish变量表示纸牌由小至大成功排列次数。

主要方法有:

PublicvoidsetTittle(Strings)设置一个标题为s的窗体。

PublicvoidsetVisible(booleanb)框体设计可见与否。

可见的状态时,在b为true时。

public void setSize(int width,int heigth)在窗体创建中,可以构建width和heigth为代表的宽度与高度的窗体。

public void setDefaultCloseOperation(int operation)在对窗体右上部分关闭图表进行设置后,程序的具体处理反应。

EXIT_ON_CLOSE通过操作可以实现窗体应用程序结束。

public void setMenuBar(MenuBar mb)将此窗体的菜单栏设置为指定的菜单栏。

public void pane.setBackground(Color c

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 艺术

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1