毕业论文-基于android的手机斗地主游戏的设计与实现内容摘要:
否则,判断,信息是否是发给发出前面动作的本人。 是,则将合法牌显示在 UI 上,并更新手上的牌。 否则, 只显示别人打出来的牌,及其所剩牌数目。 然后, 当前面动作者是接收方的直接上家(或逻辑上家)时,接收方获得出牌权。 否则,没有出牌权。 详细规则请参看附录 1 客店端对出牌的显示控制。 显示信息功能 存储玩家手上的牌。 然后实现排序的问题和合法牌打出以及非法牌回收的问题。 排序效果如图 : 图 玩家收到的牌 及其三种排序 (按花色 ,大小 ,牌型 ) 排序算法如下 : 先将用户手上的牌 card20 copy 到 cardHit 中去 . 毕业设计 13 然后 ,按其数据成员 color(桃 心 梅 方 ),value(大 小 ),num(多 少 )设置为不同级别的关键字 . (1)按花色排序 : 主关键字 color,次关键字 value (2)按大小排序 : 主关键字 value,次关键字 color (3)按牌型排序 : 主关键字 num,次关键字 value,color 前两种排序只是处理调用 sortOnValue()与 sortOnColor()的先后关系 .而按 b排序稍复杂一点 ,先按大小排序 ,再从 右 边开始查找 .先找只有 2个牌相同的 ,找到就往最左边放 .然后依同理查找只有 3 个牌相同的和只有 4 个牌相同的 ,再就是查找火箭 .最后剩下 单牌就留在最后边 . 玩家通过点击 flash UI 上面的牌, flash UI 把各个被选中的牌的 position 传递至这个参数,并被存储起来。 当玩家用鼠标点击某个牌时 ,该牌会弹出来 ,高出其他兄弟牌半截 ,此时 ,它在牌组 cardHit 中的位置 position 已经被取出并存入 中 ,等待发送至服务器端 .当用户选完想出的牌 ,点击手形图标后 ,就同时 触发方法 void (), 就 随之 被发送到服务器端了。 服务器的处理方式请参看 合法性判断功能 玩家出如果经服务器判断合法,将被接受并存储在这个参数里。 客户端将合法的牌全部显示在界面中央 ,并在动作者的手上将相应的牌清除掉 (使相应牌的 exist=1)。 如下图: 我们可以看到,动作者手上的梅花 3 补打出去了,由于这是地主的第一次出牌,服务器判定其合法,客户端收到判断结果后,将牌打出去在界面的中央位置显示,而在自己手上,清除掉 该 “梅花 3”。 毕业设计 14 图 选中 一张牌并正常打出去 如果不合法 ,系统将不打出去 ,并给出错误提示 .并且,将不合法的牌还原到动作者手中,让动作者重新选择:出牌 OR PASS。 原理其实与上面的大同小异,就不必赘述了。 如图 : 非法出牌报错 毕业设计 15 游戏退出功能 CdisplayDlg::OnExit()退出游戏 调用系统方法关闭窗口 、 关闭对话框。 毕业设计 16 第 6 章 系统测试与维护 在软件程序编码完成之后 , 在软件投入使用之前要进行软件测试。 何谓软件测试 ,简言之 : 软件测试是为了发现错误而执行程 序的过程。 也就是根据软件开发各阶段的规格说明何程序的内部结构而精心设计测试用例 , 用这些用例去运行程序以发现程序错 误 的过程。 系统测试在一个系统的周期中占有越来越重要的位置了。 在系统正式投入运行的转换工作之前,还需对系统进行一系列的调试即测试。 系统调试的任务是根据系统说明书和系统实施方案,对程序设计的结果进行全面的检查,找出并纠正其中的错误,使可能发生的问题和错误,尽量消灭在系统正式运行之前。 6. 1 系统测试的原则 应当尽早和不断的进行软件测试 . 测试用例应由测试输入数据和预期输出结果两部分组成 .(注意 :测试用例包含输入和输出两部分 ). 测试用例应包括合理的输入条件和不合理的输入条件 .前者即使程序正常运行的条件 ,后者即可能引起程序非法操作的条件 . 程序员应避免检查自己的程序 .因为父母总是疼爱自己的孩子 .程序员总是在潜意识不愿意否定自己的劳动成果 . 注意测试中的群集现象 .测试后程序中残存的错误数目与该程序中已发现的错误数目成正比 .所以 ,不要在某个程序段中找到几个错误就误认为该程序段就没有错误而不再测试 ,相反该程序段更要集中精力测试。 测试应该制订计划 ,严格按计划进行测试 ,避免测试的随意性 . 应对每一个测试结 果做全面检查 . 有时出错的征兆已经在测试结果中出现了 ,但由于没有对测试结果进行仔细检查 ,而使这个错误成了漏网之鱼 . 应妥善保存测试计划 ,用例 ,错误记录和分析报告 . 6. 2 测试过程及方法 软件的测试过程有四个步骤 :单元测试 ,集成测试 ,确认测试和系统测试 . 单元测试即对每一个单元模块进行测试 .然后把测试过的模块组装起来进行集成测试 ,主要是对软件体系结构的构造进行测试 .接着进行确认测试 ,检查软件毕业设计 17 是否满足了各种需求 ,以及配置是否合理安全 .最后是系统测试 ,即把经确认测试后的软件放到实际运行环境中 ,与系统的其他构 件一起进行测试 . 单元测试时 ,有时需要为测试的模块编写辅助模块 :驱动模块和桩模块 .前者是用来调用被测模块。 后者用来代替被测模块调用的子模块。 集成测试 ,又叫组装测试 ,分为两种 :一次性组装和增殖式组装 .一次性组装方式即把经单元测试后的模块一次性的组装成系统进行测试 .增殖式组装方式即在模块组装的过程中 ,边组装边测试 ,每增加一个或几个模块就测试一次 ,最后组装成最后的系统 ,它又分为 :自顶向下的增殖 ,自底向上的增殖 ,混合增殖等几种方式 . 确认测试过程要做的工作包括 :有效性测试 ,软件配置复审 ,验收测试和安装测试 .在验收 测试中常用的有 α 测试和 β 测试 .α 测试时 ,开发者坐在用户旁边 ,随时记录用户发现的问题 .β 测试则开发者不在测试现场 ,故是在开发者无法控制的环境下进行的测试 ,通常是由软件开发者向用户散发 β 版软件 ,然后收集用户的意见 . 测试的方法大体可以分为两种 :黑盒测试和白盒测试 . 黑盒测试即把测试的对象看成一个黑盒子 ,不考虑程序内部的逻辑结构和内部特性 ,主要在软件的接口处进行测试 ,主要测试软件的功能 .黑盒测试的方法包括 :等价类划分法 ,边界值分析 ,错误推测法 ,因果图 ,功能图等 . 白盒测试把测试对象看成是一个打开的盒子 ,程序内部的 逻辑结构和其他信息对测试人员都是公开的 .白盒测试的方法有 :逻辑覆盖 (语句覆盖 ,判定覆盖 ,判定 条件覆盖 ,条件组合覆盖 ,路径覆盖 ),基本路径测试等 . 6. 3 测试环境 测试的硬件环境为:主机为英特尔赛扬 M 处理器 360 ,硬盘为 40G,内存容量 256M。 测试的软件环境是: 用户界面用 Android 模拟器 进行测试 , 逻辑控制用 单元测试工具 JUnit 进行测试。 最后,在 Android 模拟器上进行集成测试。 毕业设计 18 6. 4 测试中的 BUG 及问题总结 测试的过程中,我首先进行了代码走查。 对自己编写过的代码进 行了全面的检查,发现不仅有很多设计不合理的地方,还有很多潜在的错误。 比如,在定义类的对象的类型时,为了方便,都定义为 Public,这对这些都对系统以后的运行造成错误和危险。 对于及时发现的问题,我都进行了改正。 接着是白盒测试,我对各个模块又小到大,有单个到集成进行了测试,发现在模块间的衔接上总会出现些小问题。 但经耐心检查定位,一个个找到了错误的原因,排除了错误。 最后进行的是黑盒测试,由于之前的调试修改为这次测试做了铺垫,在黑盒测试中,并没有发现很大的问题。 最后,对照需求规格说明书,对软件的功能实现是否符合 要求进行了检查,均已达到要求。 在进行了修改与整理后,最后的验收测试进行的很顺利,程序验收合格。 6. 5 软件的维护 软件维护的原因可分为 4 类 :改正性维护 ,适应性维护 ,完善性维护和预防性维护 . 改正性维护 :在软件投入运行后 ,可能会暴露一部分在测试阶段没有发现的错误 ,为改正这些错误而对软件进行的修改就是改正性维护。 适应性维护 :由于软件运行的外部环境 (软件 ,硬件 )和数据环境等的变化而修改软件使之适应这些变化 ,就是适应性维护 .例如 :原先在 DOS 下开发的软件,现在要使之适用于 windows 而进行的修改。 完 善性维护:用户的需求是经常变化的,在软件使用过程中,用户会对软件提出新的功能和性能要求,为了满足这些新的要求而对软件进行修改,使之功能和性能得到完善. 预防性维护:就是采用先进的软件工程方法对需要维护的软件或某部分软件重新进行设计,编码和测试,以提高软件的可维护性和可靠性等,为以后进一步改进软件打下基础.例如:有个软件原先是用结构化的思想编写的,现在为了提高软件的质量而用面向对象的方法重新设计和编写软件。 毕业设计 19 软件的可维护性就是指软件维护的难易程度.要做到软件的可维护性要注意以下几点:建立明确的软件质量目标和优 先级;使用提高软件质量的技术和工具,如:面向对象技术,软件体系结构思想等;进行明确的质量保证审查;选择可维护的程序设计语言;做好程序的文档等等. 毕业设计 20 附录 A 部分 源程序清单 1 客户端程序清单 图 A1 客户端程序清单 部分代码: // Cs serialization void Cs::Serialize(CArchiveamp。 ar) { ncolor=。 if (()) { armessagencolorm_nBroadcastArrivedbeginfirstInfoAboutm_strplayerIDm_strNamem_strPasswordm_strSucessm_norder_seatsm_nintegralm_nsparecardsm_nescapem_nIsReadym_ncandpointm_n毕业设计 21 Pointm_nPassm_strpcardsm_strposm_strselectcardsm_stroutcardsm_nclose_lippedm_nfirstcandm_nmytimem_nvictorym_nlandownerpass_timesm_nlegalInfom_strfrontmul_point。 // TODO: add storing code here } else { armessagencolorm_nBroadcastArrivedbeginfirstInfoAboutm_strplayerIDm_strNamem_strPasswordm_strSucessm_norder_seatsm_nintegralm_nsparecardsm_nescapem_nIsReadym_ncandpointm_nPointm_nPassm_strpcardsm_strposm_strselectcardsm_stroutcardsm_nclose_lippedm_nfirstcandm_nmytimem_nvictorym_nlandownerpass_timesm_nlegalInfom_strfrontmul_point。 // TODO: add loading code here } } 图 A2 displayflashDlg 成员 毕业设计 22 void CdisplayflashDlg::Connect() { // TODO: Add your control notification handler code here m_pSocket2=new CClientUseSocket2(this)。 if(!ConnectServer(m_pSocket2)) { m_pSocket2=NULL。 delete m_pSocket2。 } Sleep(1000)。 SendGetCardMessage()。 } void CdisplayflashDlg::OnReceive(CClientUseSocket2 *pClientSocket) { static Cs msg。 pClientSocketReceiveMassage(amp。 msg)。 if(m_norder_seats==)//如果消息是发给 ‘我’的 { switch() //0:登录 1:退出 2:开 牌 3:叫牌 4:出牌 5:pass 6:计 分 { //不同的 case 做不同的动作 ,详细请看磁盘 } }//if 毕业设计 23 }// OnReceive 2 服务器端程序清单 图 A3 服务器程序清单 Cs 是与客户端完全一致的 .这里就不再赘述 . // : implementation of the playingCards class. //这是个大模块 ,只出示部分代码 ////////////////////////////////////////////////////////////////////// 毕业设计 24 图 A4 playingcards 成员清单 include include include include //*****洗牌 void playingCards::suffle() { card tmp。 for (int i=0。 i54。 i++) {// 交换 两张牌 int x = ra。毕业论文-基于android的手机斗地主游戏的设计与实现
相关推荐
由下而上,其核心为嵌入式 ,向上搭配 Google为 Android开发的类库及 Android运行时,再配合应用程序架构,来开发各种不同的应用程序。 的功能特征 (l)应用程序架构 :在应用程序架构内已经具备多种不同的基础组件,在开发应用程序时,就可以直接调用这些组件来使用,可以节省开发应用程序的心力及时间。 (2)Dalvik虚拟机器 :在 Android平台上所使用 Java虚拟机,不是
C/S 模 式结构图 本软件系统采用 B/SC/S 模式,系统框架如图 所示。 湖南科技大学本科生毕业设计(论文) 7 管 理 员 身 份 认 证管 理 员 身 份 认 证浏 览 器客 户 端客 户 端地 图 软 件G o o g l e服 务 器数 据 库数 据 库服 务 器数 据 库管 理 软 件 请 求 请 求更 新管 理 员 同 步 图 系统框架图 B/SC/S 模式特点 B/SC/S
1 II 轴 1410 III 轴 电动机的校核 ( 1)转矩校核 加载在钻刀转轴上的负载为钻刀旋转刀架的重力,其中刀架厚度为 15mm: G1= g = 310 [4+ 4 ( ) + 4 ( )]10=150N 刀盘的重量,其中转盘厚度为 30mm: G2= g +7024=310 4 =4560N 则可得作用在轴 3 上的转矩 T/3 = Gd3=(4560+150) N
学校中进行的有组织地学习知 识,既包括学科知识,又包括活动课程知识。 虽然各个学科有各自的主要教育目标,但道德教育必然会不可避免地隐含其中 —— 普通课程的学习可以在生理上和心理上给学生造成影响,从而影响其对道德的情感体验。 如对汉语的学习,使个体常常会沉醉于其优美的文字,产生对祖国独特文化的热爱,这种热爱极有可能在社会行为中转化为维护社会公德的言行,体现了一个人的道德。
子廉政意识。 强化领导干部监督。 突出政府领导班子成员和部门 “ 一把手 ” 这个关键少数,加强监督管理,使领导干部在重大事项、重要时期、关键环节上掌好权、用好权,并管好配偶子女和身边工作人员。 加强廉政风险防控。 围绕重点行业和领域,推进风险防控工作,将廉政风险防控向基层、项目和资金领域延伸取得新进展,权力运行和管控进一步规范。 严厉查处违纪案件。 严肃查办利用职权插手和干预城乡规划
必须满足的条件 最大集电极电流 LCCCM 12 0 .7 5A2 1 6VI R 反向击穿电压 B R (C B O ) C C 12 VUV 最大管耗 T M o 5 WPP 3. 由 2CCom L8VP R,可求得 CC L o m8 8 8 9 24 VV R P 【 510】 OTL 互补对称式 功率放大 电路如图 所示,试分析与计算 1.