五子棋游戏(论文范文,JSP,JAVA,毕业设计).doc





《五子棋游戏(论文范文,JSP,JAVA,毕业设计).doc》由会员分享,可在线阅读,更多相关《五子棋游戏(论文范文,JSP,JAVA,毕业设计).doc(23页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、移动电话应用程序蓝牙对战五子棋游戏的设计分析摘要 信息技术的进步和广泛应用正在深刻地影响着生活中的各个角落。程序的运行环境也不在局限于计算机。本文主要讨论了使用无线开发工具(WTK)在移动电话这类联网的受限配置设备(CLDC)上开发蓝牙对战五子棋游戏的应用程序(MIDlet)的实现过程。通过该程序的实现,可以了解到基于J2ME开发的基本知识。关键词 J2ME;无线通讯工具包(WTK);联网的受限设备配置(CLDC);移动电话;蓝牙应用 1 引言从1997年的第一款手机游戏贪吃蛇到目前,手机游戏已经不在停留在简单的俄罗斯方块之类的画面简单、规则单一的游戏了,而是发展到了可以与电脑相媲美的、具有很
2、强交互性和娱乐性的复杂形式。蓝牙对战五子棋游戏,是一个通过蓝牙作为传输信息的工具,实现对战的游戏开发。该游戏在五子棋单机版的基础上加入了蓝牙联网功能,使具备蓝牙功能的手机可以任意互联,不受到空间和时间的限制进行游戏对战,使游戏更具趣味性。2 可行性分析 适用于蓝牙无线联网技术的JABWT标准(Java APIs for Bluetooth Wireless Technology),由JSR-82规范所定义,该标准能支持蓝牙应用软件的快速开发,并保证其轻便、安全,以及具有高度的可用性。目前已经有越来越多的设备支持蓝牙程序的运行,因此,移动应用市场也急切需要有更多的此类游戏出现。蓝牙功能除了收发信
3、息和传输文件外,还能用来玩联机游戏,越来越多的手机支持蓝牙功能,可以预见,蓝牙将成为手机的标准功能。蓝牙(Bluetooth)是一种支持设备间短距离通信(一般10m以内)的无线电技术。通过蓝牙,人们能在包括移动电话、PDA、无线耳机、笔记本电脑、相关外设等众多设备之间进行无线信息交换。可以说,蓝牙为手机对战游戏提供了不错的联网平台,使玩家不再玩单机游戏。目前,大部分的手机都支持Java功能,Java手机游戏很多,但支持蓝牙对战的不多,而且并非所有的Java游戏都能在Java手机上使用,它们之间根据手机品牌和型号不同也有些区别。所以选择Java蓝牙联网游戏时需要认准该游戏是否支持自己的手机。3
4、软件需求分析游戏主要内容为双人联机对战,游戏只支持对战功能,不能进行单机游戏。界面比较简单,但是棋盘大小设计的比较灵活和人性化,可以根据不同手机屏幕自动调整大小。玩家使用四个方向键的上下左右来移动落子的位置,移动到空白位置使用确定按钮来落子。为简单起见,游戏不涉及悔棋,棋盘采用默认尺寸为15*15,并且客户端先下。在游戏逻辑方面没有人工智能,只有“判赢”算法。游戏启动时,MIDlet对象会先显示一个提示界面的闪屏,用户按确定后,显示连接选择表单,提示玩家选择联网类型。在玩家选择本机作为服务器或者客户端之后开始游戏。游戏用户界面示意图如下。客户端服务器游戏画布白方 游戏画布黑方开始游戏闪屏 确定
5、连接类型选择表单 确定对战 玩家选择4 开发环境操作系统:Windows xp开发环境:JDK-1.6软件开发工具:J2ME WTK-2.5.2集成开发开发化境:Eclipse客户端类连接控制类继承继承主类画布类逻辑类棋子类ConnectionServerClientBTFIRCanvasBTFIRMIDletBTFIRLogicDotCanvasMIDlet服务器类5 游戏的类结构整个游戏共由7个类组成,如上图所示是游戏的类结构。游戏的BTFIRMIDlet类负责保持display对象,并提供个屏幕的切换。游戏包含3个屏幕:由信息提示框Alert类实现的游戏闪屏欢迎界面;在Form表单上应用
6、ChoiceGroup实现的连接类型选项,连接类型可以是服务器或者客户端;在选定连接类型后进入游戏画布,为了简单起见,默认客户端一方先落子(黑方)。BTFIRCanvas类实现了游戏画布,BTFIRLogic类实现了游戏逻辑,Dot类代表了五子棋的棋子,Connection类用于网络连接和用户界面之间的交互,这样整个程序架构更加清晰。Sever类为服务器端联网程序,负责提供服务,等待其他设备接入,并负责服务器一方落子信息的发送和对方信息的接收;Client类为客户端程序,用于搜索设备,搜索服务,并负责客户端一方棋盘行列信息的发送与接收。各个类之间在程序运行时的组织与联系方式(以建立的是服务器为
7、例):NY落子;isMyTurn=false;BTFIRCanvasisMyturn=truekey不做任何操作跟新Logic类;isMyTurn=true;Connection类发送消息;Connection类接收消息;消息接收server(client)Thread.run()设置本地蓝牙为可被发现模式;开通自己的服务地址(创建服务);成功则通知connection(connection再通知画布更新信息);由“服务”接收连接进来的信息(建立Conn);将连接的流对象conn添加到客户处理类来处理;server中的客户处理类类queue-conn;run()处理queue; DataOut
8、putStream(dos)-queue.conn;DataInputStream(dis)-queue.conn;read();send();影响6 各模块的设计6.1 主类BTFIRMIDlet类javax.microedition.lcduiAlertChoiceGroupCommandDisplayFormImageBTFIRMIDletPr: alert :AlertPr: choiceType :ChoiceGroupPr: CMD_EXIT :CommandPr: CMD_PLAY :CommandPr: display :DisplayPr: form :FormPr: img
9、Splash :ImagePr: isServer :BooleanPr: myCanvas :BTFIRCanvasPu: BTFIRMIDlet() :voidPu: commandAction() :voidPu: destroyApp() :voidPu: exit() :voidPu: startApp() :voidPu: getDisplayable() :Displayablejavax.microedition.lcduiCommandListenerjavax.microedition.midletMIDletBTFIRCanvasjavax.microedition.lc
10、duiDisplayableItemjava.ioIOExceptionjava.langStringPr: alert :Alert Alert的实例对象,用于开始时的欢迎画面。Pr: choiceType :ChoiceGroup ChoiceGroup的选择组件,用于选择客户端还是服务端。Pr: CMD_EXIT :Command和Pr: CMD_PLAY :Command Command的按钮。Pr: display :Display 显示控制对象。Pr: form :Form 连接类型选择的窗体。Pr: imgSplash :Image Image的图片对象,用于欢迎界面上的图片。P
11、r: isServer :Boolean 用户选择的的结果存于此布尔变量,服务器为TRUE,客户端为FALSE。Pr: myCanvas :BTFIRCanvas游戏画布实例对象,根据其构造函数传入是服务器还是客户端的信息。Pu: BTFIRMIDlet() :void 本类的构造方法,用于初始化alert和form等信息。Pu: commandAction(Command,Displayable) :void 重写事件监听的虚函数,如点击软键CMD_PLAY则显示画布:构造相应画布,显示画布,让画布打开连接,调用画布开局函数对画布初始化创建逻辑;否则退出。Pu: destroyApp() :
12、void 销毁应用程序的固定的需要重写的方法,本程序中无用,不做定义。Pu: exit() :void 人为主动销毁程序的方法。Pu: startApp() :void 启动应用程序的固定的需要重写的方法,调用显示方法显示提示欢迎框,和form。Pu: getDisplayable() :Displayable 返回form对象。6.2 逻辑类BTFIRLogic类的实现BTFIRLogic类是五子棋对战游戏的逻辑类,该类创建了棋盘的状态数组,并根据对战双方的落子情况更新该数组。对战双方落子后,BTFIRLogic类也负责检测双方的获胜情况,并通知游戏画布更新用户界面。java.langObj
13、ectjava.langObjectBTFIRLogicPu: PLAYER_NONE :intPu: PLAYER_BLACK :intPu: PLAYER_WHITE :intPu: boardSize :intPr: isBlack :booleanPr: isBlackWon :booleanPr: isGameOver :booleanPr: lastDot :DotPr: triedDot :DotPr: myCanvas :BTFIRCanvasPr: playerCounter :intPu: BTFIRLogic() :voidPu: checkGameOver() :boo
14、leanPu: isBlackWon() :booleanPu: lastDot() :DotPu: triedDot() :DotPu: playerBlackGo() :booleanPu: playerWhiteGo() :booleanPr: checkFiveInRow() :intPr: connectedIn1D() :intPr: connectedIn8D() :intPr: expendedIn1D() :intPr: expendedIn8D() :intPr: goAt() :voidPr: isGameOver() :booleanPr: moveOneStep()
15、:DotPr: table :intBTFIRCanvasDotPu: PLAYER_NONE :int 静态常量0表示空白区域Pu: PLAYER_BLACK :int 静态常量1表示黑方落子Pu: PLAYER_WHITE :int 静态常量2表示白方落子Pu: boardSize :int 静态常量15表示棋盘的大小为15Pr: isBlack :boolean 是否落子方为黑方标志,在逻辑类构造函数赋值Pr: isBlackWon :boolean 是否黑方胜利标志,用于传参Pr: isGameOver :boolean 游戏是否结束标志,用于传参Pr: lastDot :Dot 最后
16、棋子对象,存放行和列的坐标Pr: triedDot :Dot 棋子对象,相当于棋子的bufferPr: myCanvas :BTFIRCanvas 游戏画布对象Pr: playerCounter :int 落子计数器,包括0、1、2分别表示空白区域数量,黑子数量,白子数量Pr: table :int 存放棋盘的状态的数组Pu: BTFIRLogic(BTFIRCanvas canvas,boolean isBlack) :void 构造函数,与Canvas类建立联系,初始化标志位、计数器和棋盘数组table。Pu: playerBlackGo(int row,col) :boolean 黑方落
17、子,调用goAt(row,col,player)落子,落子前首先检测该位置是否为空白区域,并且是否超出棋盘,否则判定为无效落子。落子成功返回的布尔值为真,无效落子返回的布尔值为假,以此作为是否成功落子的判定。落子之后随即检测是否存在“五子连珠”情况(调用isGameOver()检查),更新所有状态,标志。Pu: playerWhiteGo(int row,col) :boolean 白方落子,同上。以下方法都是服务于以上两个方法的,所以简单介绍。Pr: checkFiveInRow(row,col,n) :int 检查某一位置的棋子是否存在五子连珠,存在则返回方向代码,不存在则返回-1。Pr:
18、 goAt() :void 在棋盘上落子就是将数组中的相应位置填充为某方的代码,如1、2Pr: isGameOver() :boolean调用checkFiveInRow()调用myCanvas.notifyGameEnd(isBlackWon)打印游戏结束;Pr: moveOneStep(Dot,Direct) :Dot 在某方向(8个方向Direct)上移动一步,由connectedIn1D()等同类方法调用。6.3 游戏画布类BTFIRCanvas的实现BTFIRCanvasPr: BLACK :intPr: WHITE :intPr: midlet :BTFIRMIDlet Pr: l
19、ogic :BTFIRLogicPr: font :FontPr: imgStatus :ImagePr: CMD_STOP :CommandPr: connection :ConnectionPr: boardLength :intPr: boardSize :intPr: boardX :intPr: boardY :intPr: canvasWidth :intPr: canvasHeight :intPr: cHeight :intPr: cWidth :intPr: fontHeight :intPr: fontWidth :intPr: gridLength :intPr: sto
20、neLength :intPr: statusColor :intPr: statusImage :intPr: isBlack :boolean Pr: isBlackFirst :boolean Pr: isColor :boolean Pr: isMyTurn :boolean Pr: isServer :boolean Pr: isUpSide :boolean Pu: BTFIRCanvas() :voidPu: commandAction() :voidPu: paint() :voidPro:keyPressed() :voidPu: repaintAt() :voidPu: n
21、ewStage() :voidPu: notifyGameEnd() :voidPu: openConnection() :voidPu: completeInitialization() :voidPu: receiveMessage() :voidPu: setStatus() :voidPr: calcSize() :voidPr: xByCol() :voidPr: yByRow() :voidPr: status :StringBTFIRLogicBTFIRMIDletConnectionjavax.microedition.lcduiCommandListenerCanvasjav
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 五子棋 游戏 论文范文 JSP JAVA 毕业设计

限制150内