文档库 最新最全的文档下载
当前位置:文档库 › J2ME手机游戏成三棋-河北工业大学

J2ME手机游戏成三棋-河北工业大学

游戏作品综述

1.作品基本信息 (2)

1.1作品名称 (2)

1.2作品简介 (2)

1.2游戏界面和规则 (2)

1.3开发语言和平台 (4)

1.4支持硬件 (4)

2.软件概述 (4)

2.1软件的操作流程 (4)

2.2软件的总体结构 (6)

2.3软件核心功能模块 (6)

3.软件特色 (8)

3.1 软件的创意 (8)

3.2实用性和易用性 (9)

3.3技术难点 (10)

3.4软件开发优点 (10)

3.5软件中的不足 (11)

8.程序文件和数据文件概览 (12)

9.用户界面部分截图 (12)

1.作品基本信息

1.1作品名称

基于J2ME开发的手机棋盘游戏“成三棋”

1.2作品简介

本作品的源自小时候经常玩的一种棋盘小游戏,该棋盘游戏名叫“成三棋”,此游戏看似简单,其实其下棋技巧性相当强,该棋盘游戏简单而有趣,我将其编制成一个可以运行于手机等小型移动互联网设备的java游戏,该游戏可以实现人机对战,并可以通过用蓝牙技术实现联网对战。该游戏的人工智能算法和蓝牙连接模块中根据游戏的规则实现蓝牙同步功能是游戏开发过程中的技术难点和关键。

1.2游戏界面和规则

以下为成三棋得棋盘界面:

成三棋游戏的规则:

1.游戏分两个阶段――下棋阶段和走棋阶段。在第一阶段(下棋阶段)下棋双方各有9颗棋子,将棋子下在线段交叉处。轮流下玩各自的棋子后,自动进入下一阶段(走棋阶段)。

2.在下棋和走棋的过程中,任何一方有三颗棋子连续排列成一条直线时,则成三了,这是可以揪掉对方的一个棋子。但注意在揪棋子的时候不能揪对方已经成三的棋子

3.在下棋的过程中,被揪掉棋子的位置将不能再下棋子(该位置会画上红×)。4.在走棋的过程中,一次只能走一个单位(起始位置不能有交叉点)。

5.被揪棋的一方,在被揪棋后只剩下2颗棋子或更少,则被揪方输了这一局。

1.3开发语言和平台

开发语言:Java语言,Java ME 6

开发平台:Eclipse 3.4开发平台,Wireless Toolkit 2.5.2 1.4支持硬件

本游戏支持满足如下最小配置的手机:

a.支持java功能, MIDP2.0;

b.内存至少2M;

c.提供键盘和蓝牙功能;

d.手机屏幕最大为320*240像素。

2.软件概述

2.1软件的操作流程

当手机游戏玩家将该游戏安装以后,会进入游戏比赛模式选择菜单,此时如果玩家选择人机对战,游戏将进入游戏开始和设置菜单,在设置菜单中可以设置游戏的难度以及下棋的顺序,游戏的难度分为简单,中等级别,高难度级别,其原理是不断增加游戏后台处理的搜索深度。当选择开始后,游戏正式开始。而当手机玩家选择蓝牙对战模式时,用户将看到连接类型选择模式,若选择服务器,服务器将创建服务,等待客户端的连接。当客户端用户搜索到服务器设备,将与服务器建立连接,当服务器同意后,便可以实现双方的蓝牙对战,其间可以实现聊天功能,发送求和和认输等功能。

2.2软件的总体结构

2.3软件核心功能模块

1. 人机对战算法模块:

该模块的类图结构如下

首先,本游戏的搜索算法是采用了著名的Alpha-Beta算法,如上图由AlphaBeta类来实现,该类会调用搜索引擎SearchEngine类来实现走法的产生和走法的恢复等功能,MoveGenerator类是用来产生走法,由于成三棋比较特殊,因为棋种和其他其棋的规则不同,它包括两个阶段,第一阶段是下棋阶段,第二部分是走棋阶段,所以定义了两个走法类,一个是DotMove1用于定义下棋阶段的走法,另一个是DotMove2类,该类定义了走棋阶段的走法。而Evaluation 类是估值类,该类实现了为不同的棋盘局面打分,以便在实现AlphaBeta算法时调用。Dot类定义了棋子,而Definition类定义了一些常用的常量。以上虚线箭头代表的是依赖关系,实现是关联关系。

2.蓝牙连接控制模块

该模块的类图如下

Connection 类主要是为了实现服务器和客户端得蓝牙控制,Server 类实现了服务器蓝牙连接的初始化,Client 类主要为了实现客户端的蓝牙初始化。CSChessCanvas 类是用户界面画布生成程序,CSChessLogic 类是画面后台处理类,CSChessCanvas 类和CSChessLogic 类可以通过Connection 类来发送和接受信息,从而实现了服务器和客户端的蓝牙控制连接。

3.软件特色

3.1 软件的创意

本作品的灵感来自民间流行的一种棋盘游戏,该游戏目前在互联网上只有Flash 版本,而且不能支持人机对战,也不能支持联网对战,其开发研究空间非常大,因为这个游戏是我小时候非常喜爱的游戏,所以将其编制成了一个java 手机游戏,供人们能在闲暇时通过手机随时随地的体验该棋盘游戏的乐趣。由于近年来,五子棋,象棋等的兴盛,使该棋盘游戏也逐渐淡出了人们的视线,但它仍不失为一个值得让人去玩的小棋盘游戏。随着手机的不断普及,越来越多的人喜欢在闲暇时通过手机来玩一些简单而有趣的游戏来愉悦身心,因此我通过利用java 的J2ME 开发平台,将“成三棋”游戏编制成了一个手机游戏,也希望有更多的人能够了解和喜爱这个棋盘小游戏。其主要创新点如下:

1. 该游戏支持人机对战。

目前由于很多人对该游戏的不了解,对该游戏的研究也就更少了,因而目前互联网上基本上很少有支持人对战的“成三棋”游戏,

即使有其人工智能级别

也很低,要想实现该游戏的人机对战,需要自己利用一些高效率的博弈算法,不断提高游戏的人工智能,而我采用了较为常用的Alpha-Beta算法来实现,并建立了自己的独创的一套估值中心,在反复的测试中提高了机器的智能级别,用户还可以自己修改估值函数,使该算法更加完善。

2.该游戏支持蓝牙联网对战。

人们总是爱和自己熟悉认识的人一块下棋,但是在现实中人们总是不会经常随身携带棋谱和棋子,此时只要双方手机都安装了此游戏,就可以通过蓝牙实现联网对战,可以说蓝牙给人们提供了一个不错的联网对战平台,使人们可以随时随地实现比拼,比如在火车上,汽车上,而不会像GPRS联网一样,信号容易受地域,气候等因素影响而更容易发生异常、延迟等。

3.该游戏设计中添加了很多辅助功能。

该游戏设计中添加了悔棋、聊天、求和、认输等功能。

3.2实用性和易用性

目前主要流行的棋盘游戏为五子棋和象棋,而目前的手机棋盘游戏中都主要是GPRS在线联网对战,很容易受到网络信号的影响,而且还要耗费昂贵的网络通信流量费,而蓝牙却给人们提供了一个不错的联网平台,我们可以通过蓝牙实现对战的,而且人们总是爱和自己熟悉认识的人一块下棋,但是在现实中人们总是不会经常随身携带棋谱和棋子,此时只要双方手机都安装了此游戏,就可以通过蓝牙实现联网对战,使人们可以随时随地实现比拼,比如在火车上,汽车上,而不会像GPRS联网一样,信号容易受地域,气候等因素影响而更容易发生异常、延迟等。而手机单击版的棋盘游戏也不多,目前至少手机版的成三棋我还是没有在互联网上找到,而这个棋种一直是我小时候很喜欢的,所以非常想将其开发出来。而成三棋游戏表面上看似简单,却隐藏着很多奥妙。可以使人在休闲之余与朋友PK,或通过单击版的成三棋来提高自己的技能。

3.3技术难点

该游戏开发的技术男点主要在两个核心功能模块的实现。

1.人机对战算法模块的实现

如何实现该游戏的人机对战,在编此游戏之前应该对该游戏有所了解,只有有一定下过该棋经验得人才能把该游戏编的更好。我在该游戏的设计中分别将走法产生器,估值中心,搜索引擎独自编为一个类,但是成三棋和象棋、五子棋等是有一定的区别的,五子棋只是单纯的包括下棋阶段,只要棋盘上有空白位置就可以下子,而象棋只有走棋阶段,而成三棋不仅包括下棋阶段,还有走棋阶段,以及在下棋阶段中还要对吃掉对方的棋子的位置进行处理。这无疑增加了游戏的开发难度。另外,由于成三棋的棋盘不是规则的棋盘,这也增加了其走法产生器开发难度。因此我定义了两个走法产生函数,来分别处理第一和第二阶段的规则实现。对于估值中心的设计对游戏人工智能的实现质量是至关重要的,在估值中心中需要给不同的棋局定义权值,并在后期的测试中需要反复的修改权值,以找到自己认为最适合的权值。如何给每个棋盘状态打分是一个值得探讨的问题和不断摸索的过程。由于手机的内存比较小,处理速度比较慢,还要根据小型移动设备的局限性选择合适的算法,既要能保证机器对战的智能程度,又要能使机器在执行搜索算法时的处理时间在可接受的时间限度内(最长应在3秒以内。

2蓝牙连接功能模块的实现

如何实现游戏双方蓝牙连接的同步,保持各方的信息按照游戏的规则来实现,是一个看似简单而但对于成三棋来说是一个相对来说复杂的过程,由于成三棋分为下棋阶段,和走棋阶段,所以需要使在不同阶段对相应接受信息和发送信息的过程做不同的处理,在加上还要对下棋过程中吃棋子做相应的处理,使得成三棋的棋盘虽然比流行的五子棋简单,但开发过程要比五子棋复杂。

3.4软件开发优点

1.尽量保持各个模块中的程序耦合度最低

程序在设计中体现尽可能的使各个模块之间的耦合度最低,例如你可已在源代码中发现5个包,分别对应5个功能模块。其中bluetoothCanvas用于界面,

Bluetooth包主要负责蓝牙连接功能的实现,其中Server类包括服务器蓝牙的初始化,创建服务,Client类主要负责客户端对服务器设备和服务的发现,而该包中的Connection类主要负责双方之间信息的传递,而此类被设计为一个静态类的目的,就是使蓝牙连接模块在和其他模块的交互中实现最小的耦合,当其他模块在发送和接受信息时只是通过蓝牙连接模块即可实现功能。在searchLogic包主要是用于实现机器智能搜索的算法,机器会根据用户所下的棋局来调用自己的智能搜索程序,找到一部对自己最有利的走法。用户界面midlet 包中的CSChessLogic类只是将当前棋局传送给searchLogic包,然后searchLogic包会在计算完毕后将最佳走法返回给midlet包,而这两个包之间的联系也仅此而已。

2.程序代码更容易重用和维护

该程序中的很多代码在新的程序中只要稍微修改就可以重用,如Bluetooth类的Server类和Client类基本上只需在命令个别函数中修改一下,然后再将Connection类中的静态方法修改为适合其他相应游戏规则的传输方法即可将其移植到其他程序中,同样实现其他游戏的蓝牙对战。在而在searchLogic包中,如果你有更好搜索算法,您只需修改该包中的AlphaBeta类即可,其他文件可以不用改变,如我在开始是用的是极大极小搜索算法,但发现其搜索处理效率太低,在搜索深度为3时就已经达到了4秒每步的时间,搜索深度为5每步竟然用时约为6分钟,而当我用AlphaBeta算法时,只是是将实现搜索算法类稍微改变了一下,而包中的其他类都没有改变,就是搜索算法提高了十多倍左右,此时在搜索深度为4时,用时大约在3秒以内,而搜索深度为5时,每步的耗时也只仅为20秒左右。

3.5软件中的不足

1.没有游戏背景音乐,由于时间仓促,没有对游戏进行音乐元素的加入。

2在软件测试过程中发现了一个缺陷,由于本人能力问题,在反复的修改过程中仍没有修补上该缺陷,详细情况请查看我的软件测试报告。

3.数据结构有待完善,如源程序中的大量变量采用了int型,其实用byte型的

数据就可以满足要求了,所以浪费了不少空间资源。

4.辅助功能上还有待完善,界面较为简单。

这是我第一次开发这么大的程序,所以遇到的困难要比想象的多很多,通过此次开发我学到了很多知识,希望将来有可以修复以上发现的问题。

8.程序文件和数据文件概览

以上基本上就是项目的所有程序代码和资源图片文件约为200K左右。详细功能介绍请参看软件详细设计说明书。

9.用户界面部分截图

游戏的部分界面截图,详细信息请查看用户使用说明书。

这是游戏的主菜单,为程序的入口

相关文档