




已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
枣 庄 学 院信息科学与工程学院课程设计任务书 题目: 基于MOTOROLA手机的五子棋游戏开发 学 号: 姓 名: 专 业: 计算机科学与技术 课 程: J2ME移动开发技术 指导教师: 职称: 完成时间: 2011年 12月-2012年 1月枣庄学院信息科学与工程学院制课程设计任务书及成绩评定课程设计的任务和具体要求在学习了J2ME移动开发技术后设计与实现基于MOTOROLA手机的五子棋游戏开发。本课程的目的是培养学生J2ME技术的应用能力,通过设计开发一个五子棋游戏,将原理与应用相结合。锻炼学生实际问题的分析,设计与编程能力。 指导教师签字: 、 日期: 指导教师评语成绩: 指导教师签字: 日期: 课程设计所需软件、硬件等计算机windows系统Eclipse开发环境课程设计进度计划起至日期工作内容备注2011.11.2-2011.11.252011.11.26-2011.12.152011.12.16-2011.12.202011.12.21-2011.12.30需求分析框架设计代码实现写课程设计书参考文献、资料索引序号文献、资料名称编著者出版单位1.(美)莫尼逊 著,李强 译J2ME手机游戏编程入门人民邮电出版社,2005年07月2(美)James Keogh 著,潘颖,王磊 译J2ME开发大全清华大学出版社,2004年2月3林胜利,刘华军 编著精通J2ME无线编程中国铁道出版社,2004年11月4李振鹏,龚剑 编著Java开发利器:J2ME 手机游戏开发技术详解清华大学出版社,2006年10月5李晓洁,王晓龙,马瑞著手机游戏开发全书:J2ME完整实例精解清华大学出版社,2007年12月目录第一章 背景与意义11.1 手机业的情况11.2 JAVA手机的优点11.3 Java手机发展现状2第二章J2ME综述52.1 J2ME简介52.2 J2ME的相关特性52.2.1 Configuration简介52.2.2 Profile简介6第三章 需求分析73.1 基本需求分析73.2 游戏玩法及规则7第四章 游戏设计分析84.1软件总体框架图84.1.1 驱动循环及类图84.2单机挑战版114.2.1单机挑战版的程序分析与具体实现114.2.2单机挑战版的核心类及逻辑实现124.3双人对战版224.3.1双人对战版的程序分析与具体实现224.3.2双人对战版的核心类及逻辑实现234.4蓝牙终极版244.4.1双人对战版的程序分析与具体实现244.4.2双人对战版的核心类及逻辑实现254.5游戏主类介绍及实现264.5.1主类的程序分析264.5.2主类的程序实现26第五章 总结与展望31参考资料32第一章 背景与意义1.1 手机业的情况2007年全球共销售了大约11.5亿部手机,手机市场主要靠非洲和亚洲手机销量上升拉动,欧洲的手机销量保持稳定。2007年中国的手机年销售量达到1.9亿部,手机的普及率是39%,拥有5.25亿用户。中国在手机生产制造领域的优势不断加强,手机在中国自身的信息技术市场扮演的角色也越来越重要。 经过五年的规模化发展,中国手机市场已进入成熟期, 2007年销量将达1.5亿部,同比增长23.1%;销售额将达1661亿元,受低端手机份额扩大的影响,销售额同比下降0.3%。2007年,诺基亚生产了4亿3710万手机,三星生产了1亿6120万部手机,摩托罗拉生产了1亿5900万,紧挨着的是索尼爱立信,生产了1亿340万部手机,而且LG生产了8050万。其他公司生产了1亿8430万部手机,所有的公司将总共出售12亿4千万部手机。 2007年,各大手机厂商采用不同策略推动市场发展,导致品牌竞争激烈。诺基亚推动娱乐市场战略并涉足互联网服务领域;索尼爱立信弥补智能手机软肋;三星放下架子攻低端;摩托罗拉发展受阻,其他国外品牌如LG、飞利浦等表现不佳。多普达锋芒毕露,其他国产品牌在生死线上挣扎。手机市场再现黑马,苹果高调入市,魅族、纽曼先后进入手机市场。 预计到2011年,全球市场售出的手机中有四分之一的产品将是超低价手机。未来五年,印度将是超低价手机的最大市场,其超低价手机年销量将从2006年的900万部增加到2011年的1.16亿部。1.2 JAVA手机的优点Java手机软件平台采用的基本Java平台是CLDC (Connected Limited Device Configuration)和MIDP (Mobile Information Device Profile),是J2ME (Java 2 Micro Edition)的一部分,在中国一般称为“无线Java”技术。此前,有人把它叫做“K-Java”;其实,K-Java的叫法只是Sun公司在开发KVM Java虚拟机时的项目代号,在该技术被正式命名为KVM后,就不再用K-Java了。 KJava即J2ME(Java 2 Micro Edition),是Sun公司专门用于嵌入式设备的Java软件。以KJava编程语言为手机开发应用程序,可以为手机用户提供游戏、个人信息处理、电子地图、股票等服务程序。J2ME(Java 2 Micro Edition)是致力于消费产品和嵌入式设备的最佳解决方案。J2ME在设计其规格的时候,遵循着“对于各种不同的装置而造出一个单一的开发系统是没有意义的事”这个基本原则。于是J2ME先将所有的嵌入式装置大体上区分为两种:一种是运算功能有限、电力供应也有限的嵌入式装置(比方说PDA、手机);另外一种是运算能力相对较佳、并且在电力供应上相对比较充足的嵌入式装置(比方说冷气机、电冰箱)。因为这两种区分,所以Java引入了一个叫做Configuration的概念,然后把上述运算功能有限、电力有限的嵌入式装置定义在Connected Limited Device Configuration(CLDC)规格之中;而另外一种装置则规范为Connected Device Configuration(CDC)规格。也就是说,J2ME先把所有的嵌入式装置利用Configuration的概念区隔成两种抽象的型态。 Java技术的开放性、安全性和庞大的社会已有资源,以及其跨平台性,即“编写一次,到处运行”的特点,使Java技术成为智能手机软件平台的事实标准。采用Java技术后,编写应用程序和提供服务的人就不必关心接受其服务的手机采用的是什么操作系统和芯片,只要按照Java的要求去写程序就好了;同样,生产手机的厂商也不必顾虑将来谁来提供增值服务。可以看出,采用Java技术,可以建立完整、高效的无线数据增值服务产业链,从而为用户提供灵活、个性化、内容方式多样的服务。1.3 Java手机发展现状 到今年6月,全世界已经有大约1亿部Java手机在使用,除中国大陆外共有53个移动运行商正式推出了基于Java技术的无线数据增值服务。中国移动通信集团已经建立了无线Java增值服务体系,并推出了“百宝箱”等服务品牌,包括游戏百宝箱、娱乐百宝箱、商务百宝箱、生活百宝箱等,已经于2003年7月10日开始正式商用。手机游戏开发一般都是开放式的开发平台,例如流行的开发平台,如J2ME。开发人员能够从网络方便的得到相应的开发资料,不论你的资金实力如何,只要你有兴趣,就能够迈入这个新兴的行业。而相关的厂商,例如通信设备厂家对于手机游戏开发秉承一种开发的态度,鼓励开发者在手机设备上开发游戏,通常都在网络中提供了自己手机的技术资料。下文对目前市面上流行的手机游戏平台做一个简单的介绍。嵌入/内置式游戏 早期的手机功能简单、屏幕也仅仅是单色,手机厂商能做的,就是在手机内置一些简单的游戏。这些游戏都是厂商以自己的专属平台所开发的,这些发售时就内置的游戏在手机预存了多少就是多少,用户无法自己新增或删除。In-Fusio ExEn娱乐平台 即使是手机屏幕变成了彩色,内置游戏如何好玩,但总而也有玩腻的时候。因此用户们也希望能够玩新的游戏或者象下载图片、铃声那样通过无线网络下载新的游戏。法国In-Fusio公司看中了这个市场,在2001年推出了ExEn(Execution Engine)游戏平台。通过把专属的ExEn芯片加入手机内,赋予手机彩色画面与流畅的执行速度,让手机也有掌上游戏机那样的效果。J2ME平台 J2ME(Java 2 Micro Edition)平台是目前最火暴的手机游戏平台,尽管它还可以下载和安装一些小的应用程序。J2ME简单的可以理解为Java的移动版本,其MIDP(Mobile Information Device Profile,移动信息装置简表)架构就是专门为手机与PDA而设计。 目前MIDP有1.0和2.0之分,后者在兼容性以及游戏的多媒体表现力如音效和振动方面有更好的效果,此外通过测试软件显示,支持MIDP2.0的JAVA游戏在图形运行能力对比1.0版本也有更优秀的表现。 由于J2ME的技术先进,而且又能跨平台运行,因此受到了众多手机厂家的支持,甚至成为现在用户购买手机的一项比较重要的技术指标。所以到目前为止,手机的游戏应用平台中,以支持J2ME的最多,而且J2ME软件开发商也有越来越多的趋势,J2ME已成为2002年下半年之后的行动游戏平台主流。Synergenix Mophun平台 Mophun是瑞典Synergenix公司于2002年开发出的全新移动游戏娱乐平台。Mophun的发音类似More Fun,主要就是针对游戏平台而设计的游戏语言,采用C程序代码来开发游戏,运行起来最稳定,速度上也比Java VM快许多倍(厂商宣称快100倍),可发挥出手机硬件的极限。同时,mophun 游戏平台能在极其有限的硬件资源上运作,其最低硬件需求是以12MHz运行的8位处理器,因而适用于现有的2G手机。 由于Mophun的API功能齐全,加上是采用本地代码,运行速度快的优势显而易见,这点对于支持Mophun和Java双游戏平台的索爱手机尤其明显。通常情况下排除其他因素,索爱手机在运行Mophun游戏时速度远远超过手机的Java游戏运行时的速度。另外,Mophun游戏在一次下载后就不须再付费(这点跟ExEn的理念一样),同时 Mophun还具备安全机制(防盗版),主游戏程序无法从手机中拷出,只提供游戏存盘转存到电脑中。 Mophun 游戏平台因为具备在极其有限的硬件资源上运行高效性能,可说是目前手机最佳的游戏平台之一。BREW游戏平台 BREW是无线二进制运行环境(Binary Runtime Environment for Wireless)的缩写。是高通公司2001年推出的基于CDMA网络的一个增值业务开发运行的基本平台。相对Java,BREW是一个更底层的技术。严格的说游戏仅仅是BREW的一部分内容而已。 BREW提供的功能环境就好像PC机上的操作系统一样,可以通过服务提供商下载指定类型的应用程序或游戏来使用。对于支持BREW的手机终端,在手机出厂时已经预安装了两个应用。分别为应用管理器(Application Manager)和移动商店(MobileShop)。未来手机游戏趋势 未来的手机游戏平台因为ATI和nVIDIA两大PC显示芯片厂商专业级水准的加入而更为热闹。在ATI推出手机和PDA手机3D多媒体芯片(包含专用的媒体处理器Media Processor及3D加速器3D Accelerator)后,老对头NVIDA也毫不示弱,公布了他们的3D多媒体芯片,并且应用于三菱和神达MiTAC的智能手机上。这些芯片在植入手机后能够有效的提升图形显示性能,使手机在进行多媒体演示和游戏时更够有出色显示效果。 不过这些厂家提供的都是硬件芯片,要完全发挥其在3D图形的表现能力还需要相应支持的API才能相辅相成,而目前主要的API包括2003年7月发表的OpenGL ES(OpenGL for Embedded Systems),就是OpenGL的嵌入式版本,是为嵌入系统而开发的小型标准三维(3D)图形应用编程接口(API),并受到那些意图将3D游戏引入移动设备的游戏开发商、手机厂商、游戏引擎供应商和3D图形芯片公司的热烈追捧。目前已知NVIDIA AR10与ATI Imageon 23xx 3D芯片,已符合OpenGL ES 1.0的标准。而最新Symbian OS 8.0版本也将支援OpenGL ES API。相信不久后,手机上也能玩像是CS、DOOM、Quake的FPS游戏了。第二章J2ME综述2.1 J2ME简介 J2ME即JAVA 2 Micro Edition,它是Java 2的组成部分,与J2SE、J2EE并称。J2ME是一种高度优化的Java运行环境,应用于大量的消费类电子设备,如Cellular Phones(蜂窝电话)、Screen Phones(可视电话)、Digital Set-top Boxes(数字机顶盒)、Car Navigation Systems(汽车导向系统)等,同时也广泛被移动通信设备所采用,如移动电话、双向寻呼机、智能卡、个人电脑记事本(Personal Organizer)和掌上电脑(Palmtop)等。J2ME技术将Java语言的与平台无关的特性移植到小型电子设备上,允许移动无线设备之间共享应用程序。J2ME 使用配置和简表定制 Java 运行时环境 (JRE)。作为一个完整的 JRE,J2ME 由配置和简表组成,配置决定了使用的 JVM,而简表通过添加特定于域的类来定义应用程序。与以前 Sun 公司推出的J2EE (Java 2 Enterprise Edition,Java 2企业版)、J2SE (Java 2 Standard Edition,Java 2标准版)规范相比,J2ME 不是一个单独的技术规范,而是一系列技术规范总称。这些规范定义了 Java 技术在资源限制的设备中的表现形式。J2ME 主要适用于小型嵌入式设备,这些设备与PC或是服务器设备相比没有统一的硬件标准、外观与操作方式,其功用也是千差万别。但是J2ME 在适用于这些设备的同时也保留了 Java 的传统特性,即任何时间和任何地点的代码具有可移植性、部署灵活性、安全的网络传输性,以及代码稳定性。正是因为如此,开发人员才可以借助J2ME 力量让编写的程序能够运行在其他型号或厂商的设备上。2.2 J2ME的相关特性2.2.1 Configuration简介J2ME 在设计其规格的时候,遵循着对于各种不同的装置而造出一个单一的开发系统是没有意义的事这个基本原则。于是 J2ME 先将所有的嵌入式装置大体上区分为两种 :一种是运算功能有限、电力供应也有限的嵌入式装置(比方说PDA 、手机);另外一种则是运算能力相对较佳、并请在电力供应上相对比较充足的嵌入式装置 (比方说冷气机、电冰箱、电视机上盒 (set-top box)。因为这两种型态的嵌入式装置,所以Java 引入了一个叫做Configuration 的概念,然后把上述运算功能有限、电力有限的嵌入式装置定义在Connected Limited Device Configuration(CLDC)规格之中;而另外一种装置则规范为 Connected Device Configuration(CDC)规格。也就是说, J2ME 先把所有的嵌入式装置利用Configuration 的概念区隔成两种抽象的型态。其实在这里大家可以把Configuration 当作是J2ME 对於两种类型嵌入式装置的规格,而这些规格之中定义了这些装置至少要符合的运算能力、供电能力、记忆体大小等规范,同时也定了一组在这些装置上执行的 Java 程序所能使用的类别函式库、这些规范之中所定义的类别函式库为 Java 标准核心类别函式库的子集合以及与该型态装置特性相符的扩充类别函式库。比方就CLDC 的规范来说,可以支援的核心类别函式库为java.lang.* 、java.io.*、java.util.*,而支援的扩充类别函式库为java.microedition.io.*。区分出两种主要的Configuration 之後,J2ME 接著在定义出Profile的概念。Profile 是架构在Configuration 之上的规格。之所以有Profile的概念,是为了要更明确地区分出各种嵌入式装置上Java 程序该如何开发以及它们应该具有哪些功能。因此Profile 之中定义了与特定嵌入式装置非常相关的扩充类别函式库,而 Java 程序在各种嵌入式装置上的使用者介面该如何呈现就是定义在Profile 里头。Profile 之中所定义的扩充类别函式库是根据底层Configuration 内所定义的核心类别函式库所建立。2.2.2 Profile简介Profile是建立在某个configuration之上的特定API集合。一个configuration只定义虚拟机和基本的API集合,不定义建立应用程序的细节。因此Profiles往往包括应用程序生命周期的API,用户界面API以及存储API。一个Profile既可直接建立在Configuration上,也可建立在另一个Profile之上。为了在不改动Profile的前提下增加设备的功能,在Profile之外又提出了可选包,可将它们看成Profile的扩展,每个可选包对某个或某些profiles增加特定的功能。当对某个profile需要增加一个新的API时首先将它定义为可选包。如果随着时间的推移该可选包被广泛采用,它则可能成为某个或某些profiles的一部分。某些厂家特定的API与可选包起相似功能。J2ME的这种结构很好的适应了嵌入设备的巨大多样性。从低到高,您可根据设备的情况可采用不同的configuration,在同一configuration中您又可根据设备的用途选用不同的Profile,在您的设备中您还可采用多个Profile,如果您还嫌功能不够,尚有可选包可用。J2ME中第一个正式发布的Profile是MIDP,而且随后比较长的时间内未有其它Profile发布,以至有人把MIDP等同于J2ME了,有人把WTK等同于J2ME SDK(由于J2ME包含的范围很广,所以不太可能有厂商推出能支持各种Profile的开发工具)。MIDP只是J2ME中的一员,我们来看看到写本文为止有哪些Profile。由于每个Profile是建立在特定的Configuration之上的,所以我们在Profile后注明其基于的Configuration。目前已有的基于CLDC的Profile有MIDP,基于CDC的Profile有FP、PBP。第三章 需求分析3.1 基本需求分析手机屏幕尺寸分为物理尺寸和显示分辨率两个概念。物理尺寸是指屏幕的实际大小。大的屏幕同时,要配备高分辨率,也就是在这个尺寸下可以显示多少个像素,显示的像素越多,可以表现的余地自然越大。现在手机行业发展迅速,不同大小屏幕的手机迅速发展,鉴于不同手机屏幕尺寸不同,我们在设计游戏的时候有一下一些要求: 一 软件的界面简洁明了,操作简单容易。受手机屏幕大小和显示的影响,我们设计的软件界面必须是简洁的;手机键盘的不方便,游戏需要设计得易操作。二 软件具有人工智能算法原理要简单,并且运行快速。游戏是需要快速反应的。手机处理器的频率直接要求我们需要使用简单实用的智能算法。三 游戏要设置几个难度,便于不同玩家选择.玩家的游戏水平不一样,我们设置不同难度供各个水平的玩家选择。四 游戏棋盘的大小要灵活,根据不同手机屏幕可以调节。3.2 游戏玩法及规则 现代五子棋专用棋盘为十五路(15X15),共225个交叉点。棋盘正中一点为天元。 对局开始时,先由执黑棋一方将一枚棋子落在天元点上,然后由执白棋一方在黑棋周围的交叉点上落子。但是,为了尊重对方和礼貌起见,持白棋的一方通常将盘面的第二着棋布在自己河界的一侧,即直止或斜止。此后黑白双方轮流落子,直到某一方首先在棋盘的横线、纵线或斜线上形成连续五子或五子以上仅对白棋而言,则该方就算获胜 。连珠五子棋的一个特点是先行的一方优势很大,因此在职业比赛中对黑方做了种种限制,以利公平竞争。五子棋的比赛规则如下: 1 黑先、白后,从天元开始相互顺序落子; 2 最先在棋盘横向、纵向或斜向形成连续的同色五个棋子的一方为胜; 3 黑棋禁手判负、白棋无禁手。黑棋禁手有“三、三”、“四、四”和“长连”, 包括“四、三、三”和“四、四、三”。黑棋只能以“四、三”取胜; 4 如分不出胜负,则到为平局; 5 五连与禁手同时形成,判胜; 6 黑方禁手形成时,白方应立即指出。若白方未发现或发现后不立即指出,反而继续落子,则禁手失效,不再判黑方负。 在本游戏中,没有采用职业比赛的规则,直接采用明间规则,一人一手棋,先成5为胜。另外,我们把游戏棋盘设置为可以调节大小,设置游戏难度以便适用不同手机。第四章 游戏设计分析4.1软件总体框架图 4.1.1 驱动循环及类图 开始玩家落子判断落子合法性判断游戏是否结束计算机落子判断游戏是否结束等待用户输入结束 图1 驱动循环图棋类游戏通常具备两个重要特性,首先是对战双方轮流落子,其次是落子间隔通常是不确定的,尤其是对战后期,可能每一步都需要经过深思熟虑,无论是人方还是计算机方,都无法对间隔时间有事先的预期。基于以上两个特性,本游戏摒弃了大多游戏采用的线程或者定时器驱动游戏的方法,而采用了事件驱动方法,即玩家的键盘或触摸笔出发游戏的下一步动作。事件驱动大大减少了不必要的工作量。软件的类结构:CanvasMIDletGobang1CanvasGobangCanvasMyCanvasGobangChessesConnectionControlGameWorldServerChessClient图2 软件类结构整个游戏由11个类组成。这个游戏共有三个版本:单机挑战版,双人对战版,蓝牙终极版。单机挑战版由Gobang1Canvas类和Chesses类组成,Gobang1Canvas类负责游戏界面的绘制,游戏落棋的控制,游戏规则的控制,游戏算法的控制,游戏胜负的控制。Chesses类是棋子类,提供棋子,每当下一个棋子的话,就生成一个棋子对象。双人对战版由GobangCanvas类和Chesses类组成。GobangCanvas类负责游戏界面的绘制,游戏落棋的控制,游戏规则的控制,游戏算法的控制,游戏胜负的控制。Chesses类是棋子类,提供棋子,每当下一个棋子的话,就生成一个棋子对象。蓝牙终极版是由Chess类、Client类、Connection类、Control类、GameWorld类和Server类组成,Chess类提供蓝牙版的棋子,每当下一个棋子的时候,生成一个棋子对象。Client类和Server类是建立蓝牙协议的客户端和服务端,当服务端启动后,不断地监听来自客户端的请求,如果监听到,则连接协议,准备进行通信,客户端则在启动后向服务器端发送连接请求,如果被服务端监听到,则配合服务器端连接。Connection类是负责连接客户端和服务器端的。Control类负责判断是启动服务器端还是客户端,对应游戏中的正方和反方。GameWorld类是负责绘制棋盘,游戏规则的控制,以及游戏胜负的控制,游戏进行的控制。4.2单机挑战版4.2.1单机挑战版的程序分析与具体实现进入游戏前的选择画面。游戏前我们要选择游戏的版本,这里有三个版本,单机挑战版,双人对战版,蓝牙终极版,可以操作手机的上下左右键进行选择。 图3 开机选择版本 单机挑战版有三个等级的游戏,分别是初级、中级、高级。由于时间的原因,目前只完成了初级的开发,中级和高级留作日后进一步开发。图4 进行等级的选择进入游戏,开始单机挑战版的游戏。 图5 开始游戏4.2.2单机挑战版的核心类及逻辑实现 Gobang1Canvas类是主要的实现类。以下是在游戏中需要用到的变量设置:int empty;/游戏界面到屏幕边缘的留空 int canvasW,canvasH;/画布的长和宽 int chessLength;/棋子的直径 int chessMapLength,chessMapGrid,chessGridLength; /棋盘的边长,棋盘一边格子数,每格宽度 int chessMapX,chessMapY;/棋盘左上角x,y坐标 int selectedX,selectedY;/选择框在棋盘格局上的x,y位置 boolean isPlayer1;/是否是玩家1 Chesses chesses;/棋子数组 boolean newGame;/是否是新的游戏 boolean isWin=false;/是否已经胜利? int chessesPoint;/存放要走的棋子的位置 static int chessesNum = 3;/判断有几个棋子就开始堵了下面这个构造函数对游戏进行初始化,包括棋盘的大小,界面的绘制,游戏的加载:主要程序如下:public Gobang1Canvas(Gobang gobang) this.gobang=gobang; newGame=true; empty=10; canvasW=getWidth()-empty;canvasH=getHeight()-empty; chessMapGrid=15; chesses=new ChesseschessMapGrid+1chessMapGrid+1; if(canvasWcanvasH) chessMapLength=canvasH-canvasH%chessMapGrid; chessMapX=(canvasW-chessMapLength)/2+empty/2; chessMapY=(canvasH%chessMapGrid)/2+empty/2; else chessMapLength=canvasW-canvasW%chessMapGrid; chessMapX=(canvasW%chessMapGrid)/2+empty/2; chessMapY=(canvasH-chessMapLength)/2+empty/2; chessGridLength=chessMapLength/chessMapGrid; chessLength=chessGridLength-1; selectedX=selectedY=chessMapGrid/2; isPlayer1=true; restartCmd = new Command(重新开始, Command.SCREEN, 0); exitCmd = new Command(退出, Command.EXIT, 0); addCommand(restartCmd); addCommand(exitCmd); setCommandListener(this); 对游戏的胜负进行判断,每当下一个棋子的时候,会激活这个方法,进行判断,在横、纵、正对角线、反对角线上,如果有连续的同色的五棋子,则判断出该色的玩家获胜。private boolean checkWin(int x,int y,int chessesValue) int value = chessesValue; int xx = x;/循环变量的值 int yy = y;/循环变量的值 int tempx=x,tempy=y;/存储当前传入的值,便于以后从这个点开始进行判断 /* * 纵向判断 */ xx=tempx; yy=tempy;/让目前的值与传入的值保持一致 int count = 0;/用来计算当前某一方的棋子是否够五个 while(yy=0 & chessesyyxx!=null & chessesyyxx.getChessesValue()=value) count+; yy-; if(yy0)break; yy=tempy+1; while(yychessMapGrid)break; if(count = 5) return true; /* * 横向判断 */ xx=tempx; yy=tempy;/让目前的值与传入的值保持一致 count = 0;/用来计算当前某一方的棋子是否够五个 while(xx=0 & chessesyyxx!=null & chessesyyxx.getChessesValue()=value) count+; xx-; if(xx0)break; xx=tempx+1; while(xxchessMapGrid)break; if(count = 5) return true; /* * 反向对角线 */ xx=tempx; yy=tempy;/让目前的值与传入的值保持一致 count = 0;/用来计算当前某一方的棋子是否够五个 while(xx=0 & yychessMapGrid & chessesyyxx!=null & chessesyyxx.getChessesValue()=value) count+; xx-; yy+; if(xxchessMapGrid)break; xx=tempx+1; yy=tempy-1; while(yy=0 & xxchessMapGrid & chessesyyxx!=null & chessesyyxx.getChessesValue()=value) count+; xx+; yy-; if(yychessMapGrid)break; if(count = 5) return true; /* * 正向对角线 */ xx=tempx; yy=tempy;/让目前的值与传入的值保持一致 count = 0;/用来计算当前某一方的棋子是否够五个 while(xxchessMapGrid & yychessMapGrid|yychessMapGrid)break; xx=tempx-1; yy=tempy-1; while(yy=0 & xx=0 & chessesyyxx!=null & chessesyyxx.getChessesValue()=value) count+; xx-; yy-; if(xx0|yy=0 & chessesyyxx!=null & chessesyyxx.getChessesValue()=value) count+; yy-; if(yy0)break; pointY1=yy; yy=tempy+1; while(yychessMapGrid)break; pointY2=yy; if(count = chessesNum & chessespointY1xx=null & pointY1=0) temp0=xx; temp1=pointY1; return temp; else if(count = chessesNum & chessespointY2xx=null & pointY2=0 & chessesyyxx!=null & chessesyyxx.getChessesValue()=value) count+; xx-; if(xx0)break; pointX1=xx; xx=tempx+1; while(xxchessMapGrid)break; pointX2=xx; if(count = chessesNum & chessesyypointX1=null & pointX1=0) temp0=pointX1; temp1=yy; return temp; else if(count = chessesNum & chessesyypointX2=null & pointX2=0 & yychessMapGrid & chessesyyxx!=null & chessesyyxx.getChessesValue()=value) count+; xx-; yy+; if(xxchessMapGrid)break; pointX1 = xx; pointY1 = yy; xx=tempx+1; yy=tempy-1; while(yy=0 & xxchessMapGrid & chessesyyxx!=nul
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工业生产设备采购与销售合同条款
- 含罚息私人借款合同6篇
- 工程建设招标投标合同土地工程施工监理服务协议书条件
- 2025年智能自行车租赁骑行卡用户使用合同
- 2026届四川省自贡市名校数学七年级第一学期期末考试试题含解析
- 四川省乐山四中学2026届七年级数学第一学期期末调研模拟试题含解析
- 吉林省长春市榆树市2026届数学七年级第一学期期末统考模拟试题含解析
- 山东省莱芜莱城区五校联考2026届八年级数学第一学期期末达标检测试题含解析
- 河南省沈丘县2026届数学七年级第一学期期末经典试题含解析
- 揭西县拦水坝施工方案
- 《小王子》读书分享成品课件
- 中国消化内镜诊疗镇静麻醉的专家共识
- 医疗废物管理分类及处理
- 劳动教育实践活动设计 课件 主题3、4 劳动最伟大、劳动最美丽
- 陕西省西安市庆安高级中学2023-2024学年高一上学期第一次月考化学试题(解析版)
- 高血压老年人用药安全指导
- 点检定修制的概要
- 大学生涯成长手册
- 商标肖像权使用授权书(通用)
- 第4章-信息可视化设计的应用与展望
- PIPESIM软件教程(软件介绍及模型建立)
评论
0/150
提交评论