基于安卓的斗地主游戏课程设计文档格式.docx

上传人:b****5 文档编号:19677384 上传时间:2023-01-08 格式:DOCX 页数:21 大小:2MB
下载 相关 举报
基于安卓的斗地主游戏课程设计文档格式.docx_第1页
第1页 / 共21页
基于安卓的斗地主游戏课程设计文档格式.docx_第2页
第2页 / 共21页
基于安卓的斗地主游戏课程设计文档格式.docx_第3页
第3页 / 共21页
基于安卓的斗地主游戏课程设计文档格式.docx_第4页
第4页 / 共21页
基于安卓的斗地主游戏课程设计文档格式.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

基于安卓的斗地主游戏课程设计文档格式.docx

《基于安卓的斗地主游戏课程设计文档格式.docx》由会员分享,可在线阅读,更多相关《基于安卓的斗地主游戏课程设计文档格式.docx(21页珍藏版)》请在冰豆网上搜索。

基于安卓的斗地主游戏课程设计文档格式.docx

在程序里可以用到的绘图功能分为2D与3D两个方面。

在2D方面,Android提供了一套特有的类库(SGL;

而在3D方面则是使用OpenGLES1.0(openGLforEmbeddedsystems)规范的类库。

它们是一种非常快的图形引擎,并且支持硬件加速。

(4)SQLite数据库

SQLite提供结构化的数据存取。

SQLite是一款轻型的数据库,它的设计目标是嵌入式的,目前已经在很多嵌入式产品使用了它,它占用的资源非常低。

它能够支持Windows/Linux/Unix等主流的操作系统,同时能够跟很多程序语言相结合,比如php,Java等,还有ODBC接口,同样比起Mysql,PostgreSQL来讲,它的处理速度比它们都快。

它无需安装和管理配置,它是一个储存在单一磁盘文件中的完整数据库,体积小,虽只有250KB但支持数据库大小至2TB。

它虽然很小巧,但是支持的SQL语句毫不逊色于其它开源数据库。

同时它还支持事务功能和并发处理等等。

SQLite也是一套开放性的关联式资料库,其特点在于轻量性方面的设计结构,更适合在手机上使用。

(5)多媒体的支持能力

主要用于播放媒体文件。

这同时包括对音频(如播放MP3或其他音乐文件等)和视频(如播放从网上下载的视频)的支持,并支持“播放URI地址”(Note:

URI即是统一资源识别地址)模式,即在网络上直接播放的流媒体。

另外支持各种通用的静态图像格式,例如:

JPG、PNG、GIF等格式。

1.3斗地主游戏简介

(1)斗地主游戏的起源

斗地主起源于湖北,据传是一位叫吴修全的年轻人,根据当地流行的扑克玩法“跑的快”改编的。

斗地主玩法简单,娱乐性强,老少皆宜,如今已风靡整个中国,并流行于互联网上。

四人斗地主的规则是由中国象棋棋王胡荣华总结和定型的,92181棋牌更是多次用这套规则举行网络斗地主比赛,上海也曾经用这套规则举办过多次电视转播的群众比赛。

斗地主对抗性和配合性都很强。

该游戏由三个人玩(四人也能玩),用一副牌共54张牌。

每局牌有一个玩家是“地主”,地主为一方,其余两家农民为另一方,双方对战,地主的目标是(以合法的出牌方式)先出完手里所有的牌,而农民的目标是在地主出完牌以前,先出完手里所有的牌。

先出完牌的人所代表的一方获胜。

斗地主属于基础类扑克游戏的范畴。

斗地主后期又增加了网络斗地主,纳入了比赛制,已竞技为中心。

如:

淘汰赛制、循环赛制、双败淘汰赛制、积分晋级赛制、分组出线赛制、打立出局赛制、瑞士移位赛制、复活赛制等。

(2)斗地主规则

游戏被运行时,首先生成三方玩家,然后游戏开始发牌,并规定该局首先叫牌者,使之进入叫牌状态。

最终叫到地主的客户端必须首先出牌。

玩家的任何动作必须调用规则控制接口。

当接口返回动作合法的结果时,玩家才能做出所请示的动作(实际上只是显示动作的结果,因为接口已经处理了该动作,在发送许可的同时发送了处理结果)。

否则,接口返回拒绝消息,玩家则显示有关错误信息。

电脑玩家根据牌局生成出牌方案,然后返回数据,并执行相应的显示与相关的游戏设置。

发牌:

一副牌54张,一人17张,留3张做底牌,在确定地主之前玩家不能看底牌。

叫牌:

玩家有且只有一次“抢地主”的机会。

玩家选择“抢地主”后,如果没有其他玩家继续“抢地主”则地主权利属于该名“抢地主”的玩家。

上牌:

有人出牌后,其他玩家按逆时针顺序依次跟牌。

轮到玩家跟牌时,可选择不跟,或者用比所出的牌大的牌套管住,称为上牌。

过牌:

对前面人出的牌不跟,称为过牌。

一轮结束:

一轮牌中当某玩家出牌后,其余两位玩家不再跟牌时,此轮结束。

下一轮牌由该玩家先发牌。

一局结束:

当一玩家手中的牌全部打光时,一局牌结束,开始定胜负。

判断胜负:

如果地主第一个出完牌,地主赢;

否则,地主输。

二、开发工具与环境

2.1JAVA集成开发环境eclipse

Eclipse是一个开放源代码的、基于Java的可扩展开发平台。

就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。

幸运的是,Eclipse附带了一个标准的插件集,包括Java开发工具(JavaDevelopmentKit,JDK)。

虽然大多数用户很乐于将Eclipse当作Java集成开发环境(IDE)来使用,但Eclipse的目标却不仅限于此。

Eclipse还包括插件开发环境(Plug-inDevelopmentEnvironment,PDE),这个组件主要针对希望扩展Eclipse的软件开发人员,因为它允许他们构建与Eclipse环境无缝集成的工具。

由于Eclipse中的每样东西都是插件,对于给Eclipse提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。

这种平等和一致性并不仅限于Java开发工具。

尽管Eclipse是使用Java语言开发的,但它的用途并不限于Java语言;

Eclipse框架还可用来作为与软件开发无关的其他应用程序类型的基础。

2.2eclipse下安卓环境的搭建

Android是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称。

目前已经有2亿激活的android设备,而且每天正以55万部新设备的速度激增,并在在全世界137个国家和地区获得使用。

该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。

可以把它简单理解成Linux上套了一个JAVA的壳。

为了使得Android应用的创建,运行和调试更加方便快捷,本文即将使用EclipseIDE作为Android应用的开发的环境。

1.安装Java开发包与Eclipse集成开发环境

JDK(JavaDevelopmentKit,Java开发包)是一个写Java的applet和应用程序的程序开发环境。

确认已经安装了JAVAJDK,他是整个Java的核心,包括了Java运行环境,Java工具和Java基础的类库,本文要求JDK的版本在5.0以上。

Eclipse是一个开放源代码的、基于JAVA的可扩展开发平台。

就其本身来说,它只是一个框架和服务,用于通过插件组件构建开发环境。

将Eclipse由压缩包中解压到相关目录即可使用。

2.安装Android开发工具(ADT)

Android的开发团队专门针对Eclipse集成环境定制了一个插件:

ADT(AndroidDevelopmentTools)。

在Eclipse编译IDE环境中,安装ADT,为Android开发提供开发工具的升级或者变更,简单理解为在Eclipse下开发工具的升级下载工具。

启动Eclipse,选择Help>

InstallNewSoftware,在出现的对话框里,点击Add按钮,在对话框name一栏输入”ADT”,然后点击Archive,浏览和选择已经下载的ADT插件压缩文件。

点击OK,返回可用软件的视图,你会看到这个插件,然后选择DeveloperTools,点击Next,最后重启Eclipse。

当进入Eclipse后,工具栏出现图标,即知ADT插件已经安装成功。

3.安装Android软件开发工具包(SDK)

SDK(SoftwareDevelopmentKit)一般是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。

在Android中,它为开发者提供了运行android程序的库文件和运行android程序的所需要的环境,及其开发所要用到的工具。

因此可以将androidsdk简单理解为开发工具包集合,是整体开发中所用到的工具包,如果你不用Eclipse作为你的开发工具,你就不需要下载ADT,只下载SDK即可开发。

SDK开发的API代码与其对应的安卓版本。

下载完AndroidSDK后,把.zip文件解压到你电脑上合适位置。

启动Eclipse,选择window-preference,在打开的视图,选择android一项,即弹出SDKLocation选项,在这里填入androidsdk解压包的位置,选择相应的android开发版本,点击apply即可。

2.3Android权限的获取

Android安全中的一个重要的设计点是在默认情况下应用程序没有权限执行对其它应用程序、操作系统或用户的有害操作。

这些操作包括读/写用户的隐私数据(例如联系方式或(e-mail),执行网络访问,保持设备Activity,等等。

应用程序的进程是一个安全的黑盒子,它不能干扰其它应用程序,除非给它声明权限,现对权限的命名和获取问题做下说明[6]。

(1)权限命名

一个基本的Android应用程序没有与其相关联的权限,意味着它不能做任何影响用户体验或设备中数据的有害操作。

在应用程序需要时,可在AndroidManifest.xml文件中列举一个或更多的<

uses.permission>

标签来声明此权限。

(2)在AndroidManifest.xml文件中支持权限

通过AndroidManifest.xml文件可以设置高级权限,用来限制访问组件或应用程序。

所以如果要访问某组件,需要在这个文件里声明一个权限,现对跟本系统有关的组件权限做以下说明。

①Activity权限(使用<

activity>

标签)限制能够启动与Activity权限相关联的组件或应用程序。

此权限在Context.startActivity()和Activity.startActivityForResult期间要经过检查;

如果调用者没有请求权限,那么会为调用抛出一个安全异常。

②BroadcastReceiver权限(使用<

receiver>

标签)限制能够为相关联的接收器发送广播的组件或应用程序。

在Context.sendBroadcast()期间,此权限将被检查,同时系统设法将广播递送至相关接收器。

因此,权限失败将会导致抛回给调用者一个异常。

2.4Android用户界面构建

Android生成用户界面有三种方式:

xml配置生成、通过用户自己的界面接口生成和直接用代码生成。

对于一个Activity应用来说,android.app.Activity类是一个最基本的功能单元。

一个Activity实例可以做很多的事情,但是它本身无法显示在屏幕上,而是借助于Viewgroup和View,这两个是Android平台上最基本的两个用户界面表达单元。

下面介绍下主要的布局对象:

线性布局(LinearLayout):

以单一方向对其中的显示对象进行排列显示。

如以垂直排列显示,则布局管理器中将只有一列;

如以水平排列显示,则布局管理器中将只有一行。

同时,还可以对个别的显示对象设置显示比例[2]。

表格布局(TableLayout):

以拥有任意行列的表格对显示对象进行布局,每个显示对象被分配到各自的单元格之中,但单元格的边框线不可见。

绝对布局(AbsoluteLayout):

允许以坐标的方式,指定显示对象的具体位置,左上角的坐标为(0,0),向下及向右,坐标值变大。

这种布局管理器由于对象的位置固定了,所以在不同的设备上,有可能会出现不一样的显示效果。

相对布局(RelativeLayout):

允许通过指定显示对象相对于其它显示对象或父级对象的相对位置来布局。

一个按钮可以放于另一个按钮的右边,或者可以放在布局管理器的中央。

对于Android应用中的一个屏幕,它的屏幕元素是按层次结构来描述的。

要将一个屏幕元素层次树绑定在一个屏幕上显示,Activity会调用它的setContentView()方法并且传入这个层次树的根节点引用。

三、系统需求分析

3.1需求分析

需求分析阶段的工作,可以分为四个方面:

问题识别,分析与综合,制订规格说明,评审。

(1)问题识别:

就是从系统角度来理解软件,确定对所开发系统的综合要求,并提出这些需求的实现条件,以及需求应该达到的标准.这些需求包括:

功能需求(做什么),性能需求(要达到什么指标),环境需求(如机型,操作系统等),可靠性需求(不发生故障的概率),安全保密需求,用户界面需求,资源使用需求(软件运行是所需的内存,CPU等),软件成本消耗与开发进度需求,预先估计以后系统可能达到的目标。

(2)分析与综合:

逐步细化所有的软件功能,找出系统各元素间的联系,接口特性和设计上的限制,分析他们是否满足需求,剔除不合理部分,增加需要部分。

最后,综合成系统的解决方案,给出要开发的系统的详细逻辑模型(做什么的模型)。

(3)制订规格说明书:

即编制文档,描述需求的文档称为软件需求规格说明书。

注意需求分析阶段的成果是需求规格说明书,向下一阶段提交。

(4)评审:

对功能的正确性,完整性和清晰性,以及其它需求给予评价。

评审通过才可进行下一阶段的工作,否则重新进行需求分析。

3.2可行性分析

可行性研究是为了弄清楚系统开发的项目是不是可以实现和值得进行研究的过程,实际上是一次大大简化系统分析和系统设计的过程,所以,进行可执行性的分析是非常必要的,也是很重要的,经过最初的设计目标和进行的实时调查得出以下三点的可行性分析:

(1)技术可行性:

Eclipse+AndroidADT的技术已经较为成熟,通过SUN公司(现被ORCEL公司收购)推出的跨平台、动态的JAVA语言进行开发。

(2)运行可行性:

该系统需要Android虚拟机环境,Eclipse中安装ADT,DDMS等GoogleAndroid相关插件。

其运行环境已经相当稳定,它功能丰富,包括了完备的Android程序的编码、调试、测试和发布功能,其中支持所有Android应用开发相关技术,包括SQLite,Skia,3D制作,AndroidXML,能够很好的发布Android的应用程序APK包。

(3)法律可行性:

因为是自主开发设计,所以不会构成侵权,在法律上是可行的。

通过以上的可行性分析,将采用Eclipse+AndroidADT+DDMS技术,运用JAVA语言进行系统的开发。

3.3系统定义

本游戏是斗地主游戏(Android版),是根据湖北地区民间的盛行的扑克牌游戏斗地主,融合最新的移动平台Android的特点和管理需要,推出的体现当前行业最具有代表意义的解决方案。

作为面向广大用户网络游戏,主要用于提供斗地主的游戏平台,提供发牌、叫牌、出牌、胜负判定等主要功能。

用户动作信息录入功能--输入。

系统信息显示功能--输出。

我的整个游戏开发流程如图:

图3.1Android斗地主游戏开发流程

四、系统总体设计

4.1创建Android应用实例

要创建一个Android应用实例,按如下步骤操作:

1.新建项目:

打开Eclipse,选择File>

New>

Project>

AndroidProject;

2.依次输入工程的项目名称,所要使用的android平台,点击finish即可完成工程的创建。

随后编辑我们所要编写的java文件;

3.随后运行android项目,选择菜单:

Run->

Run,在对话框中选择AndroidApplication,点击OK即可。

4.2模块设计

(1)游戏规则的实现

通过封装相应的类来实现规则。

类card:

卡片类(牌),数据成员为花色(color),牌面(value),数目(num),存在标志(exist)。

枚举colors:

包括方块,梅花,红心,黑桃,小鬼,大鬼总共六种花色。

结构体comb:

内含头头是单,双,三顺,炸弹,火箭等所有牌型的标记位。

类player:

玩家类,数据成员:

玩家靓号(m_strplayerID),个性签名(m_strName),登陆密码(m_strPassword)等。

类playingCards:

游戏规则类,数据成员:

玩家数目(numPlayers),有牌数目(numCards),每个玩家有牌数目(cardsEach)等。

成员函数:

游戏初始化initgame(),洗牌suffle(),发牌sendCards()叫地主candlander(intseat,intpoint),出牌outcards(player&

ThisPlayer)等等。

Card是游戏的对象,一般而言,特定的游戏都有特定的游戏对象。

Colors,comb都是根据需要,对card的补充。

Colors是各个牌的花色共有6种,后两种是小鬼(Bjoke)大鬼(Rjoke),不用于其他牌。

Comb是combo的意思,指牌的类型。

在斗地主中,牌型有单牌,顺子,对子,3带**,4带**,炸弹,火箭等。

Player是玩家在服务器中的一个映射,玩家的任何动作都由它代为完成,然后将结果返回给服务器的相关内存。

playingCards充分利用以上几个类的对象,一副牌的规则进行了模拟实现,做到了一样。

并且加上了方法。

封装起来,外界通过类的对象,只要调用它的方法,就可以实施对玩家出牌的合法性判断,并做相关结果的存储工作。

(2)游戏平台的实现:

对话框CdisplayflashDlg:

客户端游戏界面,内含与flashUI通信的接口。

数据成员:

积分m_nintegral,剩牌数目m_nsparecards座位号m_norder_seats,放弃动作m_nPass,手上的牌m_strpcards选择的牌m_strselectcards,合法牌m_stroutcards等等。

接收数据OnReceive(),关闭OnClose()等。

在客户端,只通过接收机制判断命令是否针对自己,若是,则执行之,显示服务器处理结果。

否则,不执行,只获取当前玩家状态。

该接收机制就是OnReceive方法。

它通过switch()-case机制区分不同的消息;

通过msg.InfoAbout和m_norder_seats来判断消息中的指令是否针对自己发出的。

4.3总体设计

(1)本次课程设计基于Android应用平台进行设计的,其目的是设计出一个三人斗地主程序;

设计过程中可以把程序分为3部分。

第一部分是界面;

第二部分是游戏内核,用来计算是否可以出牌,由谁出牌,比较所出牌的大小,游戏是否结束等;

第三部分是网络部分。

图4.1斗地主游戏综合设计图

(2)其系统流程图如下图所示:

图4.2系统流程图

五、系统详细设计

详细设计是整个设计过程中,最重要的步骤之一。

本系统的功能主要分成两大模块:

服务器端和客户端。

每个模块有可以分成几个子模块。

下面分几个部分对各个模块进行详细设计:

数据接收功能,显示信息功能,数据捕获功能,合法性判断功能,游戏退出功能。

5.1洗牌及发牌模块设计

(1)游戏开始对洗牌和发牌部分进行操作。

部分代码如下:

publicvoidwashCards(){//洗牌

//打乱顺序

for(inti=0;

i<

100;

i++){

Randomrandom=newRandom();

inta=random.nextInt(54);

intb=random.nextInt(54);

Cardk=card[a];

card[a]=card[b];

card[b]=k;

}

}

publicvoidhandCards(){//开始发牌

intt=0;

3;

playerList[i]=newVector<

Card>

();

54;

i++)

{

if(i>

50)//地主牌

{//放置地主牌

card[i].setLocation(screen_width/2-(3*i-155)*cardWidth/2,0);

dizhuList.add(card[i]);

update();

continue;

}

switch((t++)%3){

case0:

//左边玩家card[i].setLocation(cardWidth/2,cardHeight/2+i*cardHeight/21);

playerList[0].add(card[i]);

break;

case1:

//我

card[i].setLocation(screen_width/2-(9-i/3)*cardWidth*2/3,screen_height-cardHeight);

card[i].rear=false;

//翻开

playerList[1].add(card[i]);

bre

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

当前位置:首页 > 党团工作 > 党团建设

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

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