基于J2ME五子棋游戏的设计与实现.docx
《基于J2ME五子棋游戏的设计与实现.docx》由会员分享,可在线阅读,更多相关《基于J2ME五子棋游戏的设计与实现.docx(27页珍藏版)》请在冰豆网上搜索。
![基于J2ME五子棋游戏的设计与实现.docx](https://file1.bdocx.com/fileroot1/2022-12/31/3ea70db5-909e-45f7-9702-6372892b0c9a/3ea70db5-909e-45f7-9702-6372892b0c9a1.gif)
基于J2ME五子棋游戏的设计与实现
论文题目基于J2ME五子棋游戏的设计与实现
基于J2ME五子棋游戏的设计与实现
摘要
J2ME(Java2MicroEdition)是近年来随着各种不同设备,尤其是移动通信设备的飞速发展而诞生的一项新的开发技术。
它定位在消费性电子产品的应用上,对设备的智能化、多样化,提供了革命性的解决方案,并因其“WriteOnce,runanywhere”的Java特性而提高开发的效率。
随着手机的日益普及、Java功能在移动设备上的实现,Java应用程序产生的手机增值服务逐渐体现出其影响力,对丰富人们的生活内容、提供快捷的资讯起着不可忽视的作用。
特别是手机性能的逐渐增强,手机作为一个游戏平台越来越成熟了。
本论文着眼于J2ME技术的应用,开发一款可用的手机游戏程序——五子棋。
本论文先介绍了游戏的开发背景,然后是对开发工具的相关介绍以及五子棋游戏的基本规则,最终展示了该游戏开发的基本开发过程和设计思路,以及游戏的实现。
关键词:
J2ME;手机游戏;五子棋
Abstract
J2MEisakindoffastdevelopingtechnologyimplementedonvariousdevicesespeciallymobilecommunicationequipments.Itfocusesonapplicationforconsumptiveelectronicproducts,providingrevolutionarysolutiontotheintelligenceanddiversificationoftheequipment.Itimprovestheefficiencyofthedevelopmentprocessthankstoits“WriteOnce,runanywhere”nature.
Whenmobilephoneisgettingevermorepopularnowadays,withtheimplementationofJavatechnologyonmobileequipment,incrementofcapitaloncommunicationserviceexhibitsitsforceonpeople’severydaylife,providingthemeverfastinformationjustinhand.Mobilephonewhosecapabilityisgreaterismoreandmorematureforgame.ThisdissertationfocusesonimplementationofJ2MEtechnologyandhasdevelopedacommercialgamesuiterunonmobilephones—Gobang.
Thispaperfirstdescribesthedevelopmentofthegamebackground,thenintroducesthedevelopmenttoolsandbackgammonrelatedtothebasicrulesofthegame,thefinalshowofthebasicdevelopmentofthegamedevelopmentprocessanddesignideas,aswellastherealizationofthegame.
Keywords:
J2ME;mobilegame;Gobang
1引言
1.1课题研究的背景与意义
当今社会数字信息与技术发展迅速,手机及其他数字设备越来越多地走进了老百姓的工作与生活中。
随着3G时代的到来,基于Java开发的软件在手机上使用非常广泛,手机的增值服务也越来越多,对丰富人们的生活内容、提供快捷的资讯起着不可忽视的作用。
特别是手机性能的逐渐增强,手机作为一个游戏平台也越来越成熟了。
随着手机开发技术的不断升级和终端设备成本的下降,手机在普通人群中得到了极大的普及。
凭借着携带方便、沟通迅捷、功能多样、私密性强等优势,手机已经成为普通民众不可替代的随身工具。
手机游戏是手机的一种高附加值操作软件,游戏编程是手机软件编程的重要组成,同时也持续推动着手机软件技术不断地升级进步。
手机游戏按手机平台分类,主要有J2ME、Brew等,其中J2ME手机开发平台使用最为广泛。
作为SUN公司针对微型嵌入式消费电子产品开发的编程系统,J2ME技术是当前手机开发的主流平台,各大手机生产厂商目前的主流产品绝大多数都使用J2ME技术。
基于J2ME技术开发手机软件可以实现手机功能的多样化与专业化,极大的满足了人们对手机更高的需求[1]。
本设计基于J2ME技术,开发了一款单机版的五子棋游戏软件,可以供人们闲暇时间随时随地娱乐,并且提高棋艺。
同时五子棋游戏程序的设计与开发这个课题,正好提供了一个研究的机会,通过对人工智能中博弈方面的研究,以实现简单的人机对弈设计。
通过对该课题的研究与实践,首先,进一步熟悉面向对象语言,加深对J2ME层次结构的了解;再通过开发软件eclipse搭建开发环境,使用WirelessToolkit(WTK)运行本设计的游戏;最终完成一个具备基本功能的手机游戏,可应用于便捷式设备上。
1.2手机游戏的发展
手机是现在人们生活中必不可少的通讯工具之一,有着极其重要的作用,现在的人们越来越认识到它的重要性。
作为手机中的一部分——手机游戏,也发挥着它特有作用。
可以说,手机游戏发展到今天已经越来越为人们所熟知,也越来越受到人们的喜爱。
但是应该看到,国内手机游戏的发展还是刚刚起步,与欧美日韩等先进国家还有着一定的差距,但是这种差距正在一步一步的缩小。
随着技术对游戏经验的促进,游戏市场持续增长。
商业IT革命为我们节省了时间和金钱,从而提高了我们的工作水平,我们因此花费更多的时间和金钱在游戏上,来改善生活的整体质量。
甚至在当今困难的经济时代,游戏仍保持快速增长,它仍然是盈利行业的组成部分。
Java开发者应该注意到这里蕴藏着的巨大的商机[2]。
在全球数字娱乐的快速发展浪潮中,中国的游戏产业正以其惊人的井喷式发展速度前进,牢牢吸引住了世界目光。
当然,目前中国游戏产业一片大好的形势,可以说是电脑网络游戏一枝独秀的成绩。
似乎在这红红火火形势下“手机游戏马上会火起来”这一想法已经点燃了很多人心里的希望之火[3]。
手机游戏市场的确有很大的市场发展空间,前景看好,但是在中国游戏市场中马上占据主流地位是不大可能的,那应该还需要至少一年的“磨合期”。
中国大众还不大熟悉手机游戏这一新鲜事物,在消费心理和习惯上需要引导和培养,尤其是在电脑网络游戏大行中国的时期。
这也是一个消费对象需要被确定的问题。
什么样的人会为手机游戏而消费呢?
而这直接关系到这一新兴产业的存活。
只有有了消费需求,才能带动整个手机游戏产业链的循环。
在发展不见明朗的萌芽期,手机游戏营运方式、费用结算方式也是需要一段摸索时间的。
内容提供商、电信运营商、手机终端生产商之间利益的协调还需要实践地调整。
而这都是目前中国手机游戏界内无法做到的事情。
但是随着时代的发展,手机游戏制作在中国的市场以及在中国发展的潜力是不可估量的。
1.3论文的主要工作与内容安排
本游戏是一款单机版的五子棋游戏,可以供人们闲暇时间,随时随地地进行娱乐,并提高自己的五子棋水平。
利用开发工具eclipse编辑程序,然后通过WTK软件来运行,从而来实现这款五子棋游戏,并应用于手机中进行游戏。
本游戏可以实现以下几个功能:
1、编写出黑白两种颜色的棋子,任一方率先在棋盘上形成横向、竖向、斜
向的方向上连续同色的五个以上(含五个)的棋子,游戏获胜。
2、本五子棋游戏可以实现人机对弈,针对对方的落子情况,找出相对比较
合理的对策。
3、选择功能有:
选择白子,电脑先下;选择黑子,玩家先下。
4、在进行游戏时,可以选择悔棋。
5、游戏进行中可无条件重新开始游戏。
本论文可分为五个章节,大致内容如下:
第一章引言:
课题研究的背景与意义和论文的主要工作与内容安排。
第二章游戏开发环境介绍:
简述J2ME开发平台和发开工具eclipse、WTK
软件环境设置的介绍。
第三章五子棋游戏介绍:
主要介绍五子棋游戏的历史、背景和游戏的规则。
第四章游戏设计分析设计:
主要介绍游戏的系统解决方法,总体结构设计
以及游戏功能模块。
第五章运行与测试:
主要运行和测试软件‘仿真上的实现。
2游戏开发环境介绍
2.1J2ME简介
J2ME即JAVA2MicroEdition,它是Java2的组成部分,与J2SE、J2EE并称。
J2ME是一种高度优化的Java运行环境,应用于大量的消费类电子设备,如CellularPhones(蜂窝电话)、ScreenPhones(可视电话)、DigitalSet-topBoxes(数字机顶盒)、CarNavigationSystems(汽车导向系统)等,同时也广泛被移动通信设备所采用,如移动电话、双向寻呼机、智能卡、个人电脑记事本(PersonalOrganizer)和掌上电脑(Palmtop)等[4]。
J2ME技术将Java语言的与平台无关的特性移植到小型电子设备上,允许移动无线设备之间共享应用程序。
J2ME使用配置和简表定制Java运行时环境(JRE)。
作为一个完整的JRE,J2ME由配置和简表组成,配置决定了使用的JVM,而简表通过添加特定于域的类来定义应用程序[5]。
与以前Sun公司推出的J2EE(Java2EnterpriseEdition,Java2企业版)、J2SE(Java2StandardEdition,Java2标准版)规范相比,J2ME不是一个单独的技术规范,而是一系列技术规范总称。
这些规范定义了Java技术在资源限制的设备中的表现形式。
J2ME主要适用于小型嵌入式设备,这些设备与PC或是服务器设备相比没有统一的硬件标准、外观与操作方式,其功用也是千差万别[2]。
但是J2ME在适用于这些设备的同时也保留了Java的传统特性,即任何时间和任何地点的代码具有可移植性、部署灵活性、安全的网络传输性,以及代码稳定性。
正是因为如此,开发人员才可以借助J2ME力量让编写的程序能够运行在其他型号或厂商的设备上。
2.2J2ME平台
J2ME平台由多种配置(Configuration)、简表(Profile)、可选包(OptionalPackage)组成。
平台的实现者和应用程序的开发者可以从中选择并组合出一个完整的JAVA运行环境来满足特定范围内的设备需求。
每种组合都应该使这一系列设备的内存、处理器和I/O能力达到最优化。
J2ME专家组之所以采取这种灵活的设计结构主要是为了满足市场上不同种类的嵌入式设备的需求,这些设备在软件和硬件特性上都存在巨大的差异,一种规范很难讲它们统一起来[6]。
J2ME(Java2MicroEdition)平台是目前最火爆的手机游戏平台,尽管它还可以下载和安装一些小的应用程序。
J2ME简单的可以理解为Java的移动版本,其MIDP(MobileInformationDeviceProfile,移动信息装置简表)架构就是专门为手机与PDA而设计。
目前MIDP有1.0和2.0之分,后者在兼容性以及游戏的多媒体表现力如音效和振动方面有更好的效果,此外通过测试软件显示,支持MIDP2.0的JAVA游戏在图形运行能力对比1.0版本也有更优秀的表现。
由于J2ME的技术先进,而且又能跨平台运行,因此受到了众多手机厂家的支持,甚至成为现在用户购买手机的一项比较重要的技术指标。
所以到目前为止,手机的游戏应用平台中,以支持J2ME的最多,而且J2ME软件开发商也有越来越多的趋势,J2ME已成为2002年下半年之后的行动游戏平台主流。
2.3Eclipse简介
Eclipse是一个开放源代码的、基于Java的可扩展开发平台。
就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。
幸运的是,Eclipse附带了一个标准的插件集,包括Java开发工具(JavaDevelopmentTools,JDT)。
Eclipse是一个开放源代码的软件开发项目,专注于为高度集成的工具开发提供一个全功能的、具有商业品质的工业平台。
它主要由Eclipse项目、Eclipse工具项目和Eclipse技术项目三个项目组成,具体包括四个部分组成——EclipsePlatform、JDT、CDT和PDE。
JDT支持Java开发、CDT支持C开发、PDE用来支持插件开发,EclipsePlatform则是一个开放的可扩展IDE,提供了一个通用的开发平台[2]。
它提供建造块和构造并运行集成软件开发工具的基础。
EclipsePlatform允许工具建造者独立开发与他人工具无缝集成的工具从而无须分辨一个工具功能在哪里结束,而另一个工具功能在哪里开始。
2.4WirelessToolkit(WTK)介绍
Sun的无线开发工具包。
这一工具包的设计目的是为了帮助开发人员简化j2me的开发过程。
使用其中的工具可以开发与JavaTechnologyfortheWirelessIndustry(JTWI,JSR185)规范兼容的设备上运行的j2me应用程序。
该工具箱包含了完整的生成工具、实用程序以及设备仿真器。
WTK是用来开发MIDP的,为了让MIDlet可以顺利编译和执行,WTK必须具有CLDC和MIDP的类库,WTK可以帮助我们省去额外安装调试这些类库的时间。
2.5J2ME编程开发环境
1.JDK的下载:
jdk套件是JAVA应用程序开发的基础,同样J2ME应用程序的开发也是构建在这个之上的,它的核心是一组JavaAPI。
从sun的官网下载JDK和WTK,先安装JDK在安装WTK,安装路径是C:
\ProgramFiles\Java\jdk1.6.0_16和C:
\WTK2.5.2,接着下载eclipse、eclipseme和ProGuard。
2.配置eclipse:
到“首选项”找到,Java—>调试,将“发生未不捕获到的异常时暂挂执行”与“在发生编译错误时暂挂执行”这两个选项调为“未选中”状态,再把下面的调试器超时(毫秒)的右侧数值设置为15000[7]。
如图:
2-1
图2-1配置eclipse
3.安装EclipseME:
Eclipse自身并不提供J2ME手机程序开发的功能。
打开Eclipse软件,配置自己开发的工作路径,选择帮助—>软件更新—>查找并安装—>搜索要安装的新功能部件,选择新建已归档的站点,选择eclipseme.feature_1.7.9_site.zip文件[7],安装时需要注意,一定不要选中其他项,否则,插件的更新时间将变得很长。
在重启下eclipse,安装完成。
如图:
2-2
图2-2配置eclipseME
4.配置WTK:
重新启动Eclipse后,选择首选项—>J2ME—>DeviceManagement—>Import,单击Specifysearchdirectory输入框右侧Browse按钮,在打开“浏览文件夹”对话框中选择你所装的WTK模拟器的目录。
单击右侧的下方的Refresh按钮,刷新设备。
后按Finish按钮,完成模拟设备的导入。
使用DefaultColorPhone为默认模式,这时已为eclipse配置上了模拟器。
如图2-3
图2-3配置WTK
5.配置ProGuard:
到Eclipse的“首选项”找到,J2ME—>Packaging—>obfuscation,在ProguardRootDirectory右边的框中,选择刚才解压的proguard4.3的文件夹,点击应用,这时为eclipse配置上了混淆器。
如图2-4
图2-4配置ProGuard
6.使用eclipse进行J2ME开发:
1.新建J2ME下的J2MEMidletSuite,填写项目名,下一步,点击完成。
2.新建J2ME下的J2MEMidlet,填写名称,点击完成。
3.点击运行,新建一个WirelessToolkitEmulator的运行配置,运行,出现手机样式,运行成功。
如图2-5
图2-5用eclipse进行J2ME开发
3五子棋游戏介绍
3.1五子棋游戏的历史与背景
五子棋是一种两人对弈的纯策略型棋类游戏,是起源于中国古代的传统黑白棋种之一。
发展于日本,流行于欧美。
容易上手,老少皆宜,而且趣味横生,引人入胜。
五子棋相传起源于四千多年前的尧帝时期,比围棋的历史还要悠久,可能早在“尧造围棋”之前,民间就已有五子棋游戏。
有关早期五子棋的文史资料与围棋有相似之处,因为古代五子棋的棋具与围棋是完全相同的。
在上古的神话传说中有“女娲造人,伏羲做棋”一说,《增山海经》中记载:
“休舆之山有石焉,名曰帝台之棋,五色而文状鹑卵。
”李善注引三国魏邯郸淳《艺经》中曰:
“棋局,纵横各十七道,合二百八十九道,白黑棋子,各一百五十枚”。
这段虽没明讲是何种棋类,但至少知道远古就以漂亮的石头为棋子。
因而规则简单的五子棋也可能出自当时,并是用石子作棋子。
亦有传说,五子棋最初流行于少数民族地区,以后渐渐演变成围棋并在炎黄子孙后代中遍及开来。
在古代,五子棋棋具虽然与围棋相类同,但是下法却是完全不同的。
正如《辞海》中所言,五子棋是“棋类游戏,棋具与围棋相同,两人对局,轮流下子,先将五子连成一行者为胜”。
现代五子棋日文称之为“连珠”,英译为“Renju”,英文称之为“Gobang”或“FIR”(FiveinaRow的缩写),亦有“连五子”、“五子连”、“串珠”、“五目”、“五目碰”、“五格”等多种称谓。
五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。
五子棋既有现代休闲的明显特征“短、平、快”,又有古典哲学的高深学问“阴阳易理”;它既有简单易学的特性,为人民群众所喜闻乐见,又有深奥的技巧和高水平的国际性比赛;它的棋文化源渊流长,具有东方的神秘和西方的直观;既有“场”的概念,亦有“点”的连接。
它是中西文化的交流点,是古今哲理的结晶[15]。
3.2现代五子棋
随着五子棋的发展,逐步发现先行优势非常大,最后得出“先行必胜”。
五子棋要成为竞技运动,核心问题是怎样解决传统五子棋下法中“先行必胜”的问题。
“竞技五子棋”就是参赛双方以棋盘和棋子为介体,进行智力性对抗的竞技体育项目。
下面简单介绍下几个思维和原理。
1、“交换”思维:
“交换”思维有个形象的比喻:
一个人切蛋糕,一个人选蛋糕。
即:
一人开局,另一人选择黑方还是白方。
此方法最为公平、最有效率,且最为简洁实用。
不过此方法使开局者不走已知的必胜,把棋艺的较量演化为对局者开局的博弈,而“先行必胜”依然存在。
如:
欧洲的Swap2、Swap1;中国的Swap3、第一手交换规则等。
2、“禁手”思维:
禁止以某种手段取胜。
为了平衡先后手之间的差距,削弱先手优势,日本连珠提出“禁手”。
后来连珠的发展证明禁手并不能平衡先后手之间的差距,依然是“先行必胜”。
3、“泡沫”原理:
像泡沫一样会破灭。
如“吃子”五子棋。
连成5个后消失,同时拿掉对方一个棋子,自己再补一子。
此原理的的特点是:
把五子棋金球制改成了“进球制”,同时也最大效率地利用了棋盘和棋子,带来了全新的思维。
问题是怎样计算胜负。
4、“井字游戏”原理:
井字游戏又叫圈叉棋,圈叉棋是和棋,原因是空间很小。
通过缩小棋盘来抑制五子棋先行的优势。
如:
15路棋盘,13路棋盘等等。
问题是多大的棋盘才能是和棋,知道和棋后还能成为竞技运动吗。
5、“跷跷板”原理:
五子棋始终是先行领先一子。
如果双方轮流领先一子呢?
台湾教授发明的六子棋,就如“跷跷板”一样。
先行先下一子,然后双方轮流下两子,先连成6子者胜利。
六子棋为第11届奥利匹亚计算机游戏程序竞赛项目,验证其公平性与复杂性。
五子棋、六子棋、连珠已经成为欧洲现代五子棋的组成部分,举行了很多次大大小小的比赛,并且将三种棋的世界竞标赛联合举行。
中国的现代五子棋还处于起步阶段。
2003年中国棋院《中国五子棋竞赛规则》参考了RIF规则,同时兼顾发展传统五子棋。
3.3五子棋游戏的规则
本论文中五子棋的设置规则如下:
1.棋盘:
采用国际上标准的15×15路线正方形棋盘,共225个交叉点,棋盘
正中一点为“天元”;
2.下法:
两玩家分别执黑白两色棋子,依次轮流在无子的棋盘线交叉点(即
空点)处下棋,规定黑棋先行。
先从“天元”处下棋;
3.胜负判断:
黑(或白)方有5颗棋子以上(含5颗),只要在横“—”、或
竖“|”、或正对角线“\”、或负对角线“/”的任一方向上,联接成无间
隔的一条线,则黑(白)棋方胜,白(黑)棋方输;
4.黑棋禁手判负、白棋无禁手。
黑棋禁手有“三、三”、“四、四”和“长连”,
包括“四、三、三”和“四、四、三”。
黑棋只能以“四、三”取胜;
5.如分不出胜负,则到为平局;
6.五连与禁手同时形成,判胜;
7.黑方禁手形成时,白方应立即指出。
若白方未发现或发现后不立即指出,
反而继续落子,则禁手失效,不再判黑方负。
在本游戏中,没有采用职业比赛的规则,直接采用了业余无限制走棋法,即没有禁手的判定。
4游戏设计分析设计
4.1系统设计解决方案
本设计运行的操作系统MicrosoftWindowsXP,通过开发编译软件eclipse和开发工具WirelessToolkit2.52下来现实。
在KToolBar开发包中菜单编辑中的选择DefaultColorPhone模拟器,进行调试和运行。
4.2系统的总体结构
本设计的主要任务是基于J2ME的五子棋游戏能在手机上实现。
游戏的操作流程十分简单,用户启动MIDlet后,马上就可以进行游戏。
首先进入用户界面,通过菜单可以选择多项功能。
该游戏的驱动循环图4-1:
图4-1驱动循环图
棋类游戏通常需要棋盘的绘制,获胜的规则和落子的算法。
本设计中最为重要的是电脑的智能算法,也是本设计的一个很大的难点。
所以本设计可分为以下几个模块:
游戏界面模块,游戏落子模块,游戏算法模块以及游戏胜负模块。
4.2.1游戏界面模块
棋类游戏中棋盘的绘制决定着整个游戏的界面美观性,本游戏采用是国际上标准的“15×15”路线正方形棋盘,共225个交叉点,棋盘正中一点为“天元”;棋子为黑白圆形的两种棋子。
绘制棋盘用到了Canvas类,Canvas是MIDP提供的低级用户界面类。
和高级用户界面相比,Canvas拥有更大的灵活性。
由于Canvas不能提供任何现成的可视化组件,所有在Canvas上显示的图形和文本都必须通过Graphics上下绘制出来。
所编译部分代码:
privatestaticfinallongserialVersionUID=-8030324395498770191L;
//定义序列版本UID
privateintA;//棋盘每格的边长
pr