【毕业学位论文】(Word原稿)J2ME手机五子棋游戏设计分析论文范文_第1页
【毕业学位论文】(Word原稿)J2ME手机五子棋游戏设计分析论文范文_第2页
【毕业学位论文】(Word原稿)J2ME手机五子棋游戏设计分析论文范文_第3页
【毕业学位论文】(Word原稿)J2ME手机五子棋游戏设计分析论文范文_第4页
【毕业学位论文】(Word原稿)J2ME手机五子棋游戏设计分析论文范文_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

移动电话应用程序蓝牙对战五子棋游戏 的设计 分析 摘要 信息技术的进步和广泛应用正在深刻地影响着生活中的各个角落。 程序的运行环境也不在局限于计算机。 本文主要讨论了 使用无线开发工具( 移动电话 这类 联网的受限 配置 设备 ( 开发蓝牙对战五子棋游戏的应用程序( 实现 过程。 通过该程序的实现,可以了解到基于 发的基本知识。 关键词 无线通讯工具包( ; 联网的受限设备配置 ( 移动电话;蓝牙应用 1 引言 从 1997 年的第一款手机游戏贪吃蛇到目前,手机游戏已 经不在停留在简单的俄罗斯方块之类的画面简单、规则单一的游戏了,而是发展到了可以与电脑相媲美的、具有很强交互性和娱乐性的复杂形式。 蓝牙对战五子棋游戏,是一个通过蓝牙作为传输信息的工具,实现对战的游戏开发。该游戏在五子棋单机版 的基础上加入了蓝牙联网功能,使具备蓝牙功能的手机可以任意互联,不受到空间和时间的限制进行游戏对战,使游戏更具趣味性。 2 可行性分析 适用于蓝牙无线联网技术的 准( ,由 范所定 义,该标准能支持蓝牙应用软件的快速开发,并保证其轻便、安全,以及具有高度的可用性。 目前已经有越来越多的设备支持蓝牙程序的运行,因此,移动应用市场也急切需要有更多的此类游戏出现。蓝牙功能除了收发信息和传输文件外,还能用来玩联机游戏,越来越多的手机支持蓝牙功能,可以预见,蓝牙将成为手机的标准功能。 蓝牙( 一种支持设备间短距离通信(一般 10m 以内)的无线电技术。通过蓝牙,人们能在包括移动电话、 线耳机、笔记本电脑、相关外设等众多设备之间进行无线信息交换。 1 可以说,蓝牙为手机对战游戏 提供了不错的联网平台,使玩家不再玩单机游戏。 目前,大部分的手机都支持 能, 机游戏很多,但支持蓝牙对战的不多,而且并非所有的 戏都能在 机上使用,它们之间根据手机品牌和型号不同也有些区别。所以选择 牙联网 游戏时需要认准该游戏是否支持自己的手机。 3 软件 需求分析 游戏主要内容为双人联机对战,游戏只支持对战功能,不能进行单机游戏。界面比较简单,但是棋盘大小设计的比较灵活和人性化,可以根据不同手机屏幕自动调整大小。 玩家使用四个方向键的上下左右来移动落子的位置,移动到空 白位置使用确定按钮来落子。为简单起见,游戏不涉及悔棋,棋盘采用默认尺寸为 15*15,并且客户端先下。在游戏逻辑方面没有人工智能,只有“判赢”算法 。 游戏启动时, 象会先显示一个提示界面的闪屏,用户按确定后,显示连接选择表单,提示玩家选择联网类型。在玩家选择本机作为服务器或者客户端之后开始游戏。游戏用户界面示意图如下。 开始 游戏闪屏 确定 2 4 开发环境 操作系统: 发环境: 件开发工具: 成开发开发化境: 游戏的类结构 整个游戏共由 7个类组成,如上图所示是游戏的类结构。游戏 的 象,并提供个屏幕的切换。 客户端类 连接控制类 继承 继承 主类 画布类 逻辑类 棋子类 务器类 3 游戏包含 3 个屏幕:由信息提示框 实现的游戏闪屏欢迎界面;在单上应用 现的连接类型选项,连接类型可以是服务器或者客户端;在选定连接类型后进入游戏画布,为了简单起见,默认客户端一方先落子(黑方)。 实现了游戏画布, 实现了游戏逻辑, 代表了五子棋的棋子, 用于网络连接和用户界面之间的交互,这样整个程序架构更加清晰。 为服务器端联网程序,负责提供服务,等待其他设备接入,并负责服务器一方落子信息的发送和对方信息的接收 ; 为客户端程序,用于搜索设备,搜索服务,并负责客户端一方棋盘行列信息的发送与接收。 各个类之间在程序运行时的组织与联系方式(以建立的是服务器为例): N Y 落子; 做任何操作 跟新 ; 发送消息; 接收消息; 消息接收 设置本地蓝牙为可被发现模式 ; 开通自己的服务地址 (创建服务 ); 成功则通知 通知画布更新信息 ); 由“服务”接收连接进来的信息 (建立 将连接的流对象 加到客户处理类来处理; 的 客户处理类 类 7 :静态常量 0 表示空白区域 :静态常量 1 表示黑方落子 :静态常量 2 表示白方落子 :静态常量 15 表示棋盘的大小为 15 :是否落子方为黑方 标志 ,在逻辑类构造函数赋值 :是否黑方胜利标志,用于传参 :游戏是否结束标志,用于传参 :最后 棋子对象 ,存放行和列的坐标 8 :棋子对象, 相当于棋子的 r: :游戏画布对象 : 落子计数器,包括 0、 1、 2 分别表示空白区域数量,黑子数量,白子数量 : 存放棋盘的状态的数组 :构造函数,与 建立联 系,初始化 标志位、计数器和棋盘数组 。 :黑方落子 ,调用子,落子前首先检测该位置是否为空白区域,并且是否超出棋盘,否则判定为无效落子。 落子成功返回的布尔值为真,无效落子返回的布尔值为假 , 以此作为是否成功落子的判定。落子之后随即检测是否存在“五子连珠”情况( 调用 检查 ), 更新所有状态,标志。 :白方落子 ,同上 。 以下方法都是服务于以上两个方法的,所以简单介绍。 n) :检查某一位置的棋子 是否存在五子连珠,存在则返回方向代码,不存在则返回 :在棋盘上落子就是将数组中的相应位置填充为某方的代码,如 1、 2 :用 印游戏结束 ; :某方向( 8 个方向 移动一步 ,由 等同类方法调用。 9 戏画布类 实现 r: :r: :r: :r: :r: : :r: :r: :r: :r: :r: :r: :r: :r: :r: :r: :r: :r: :r: :r: :r: :r: : : :u: :u: :ro: :u: :u: :u: :u: :u: :u: :u: :r: :r: :r: :r: :ot 10 : 定义颜色的常量,置值为 0,调用时为黑色。 : 定义颜色的常量,置值为 0用时为白色。 : 主类的对象,需要主类传来些主类的参数 : 定义逻辑类的对象,需要调用逻辑类的方法。 : 字体对象,字体设置和计算字体大小用到。 : 定义图片对象的数组,存放图片。 : 按钮的对象, 在画布上 添加退出按钮。 : 连接类的对象,创建连接。 : 棋盘长度。 : 棋盘大小默认为 15*15 : 棋盘左上角的 X 坐标。 : 棋盘左上角的 Y 坐标。 : 屏幕宽度。 : 屏幕高度。 : 棋盘绘制区域的高度 : 棋盘绘制区域的宽度 : 字体高度。 : 字体宽度。 : 棋格长度。 : 棋子直径。 : 提示字符串的颜色。 : 提示图片的代码。 : 我方是否为黑子,初始值为 : 手机是否支持颜色的标志 : 是否轮到我方落子,初始值为 : 我方是否为服务器,初始值为 : 提示字符串位置是否在上方。 :画布的构造函数,为类结 11 构必须有的函数。主要用于加载游戏资源(图片、软键),并初始化参数,包括屏幕尺寸、提示字符串的参数,以及我方是否为服务器,默认情况下客户端先落子,而先落子方采用黑色棋子。 :由于画布实现了按键监听的接口,所以必须重写此函数。 g) :为画布类结构必须有的函数。在此函数中绘制所有界面。主要画面包括棋盘、棋子和提示字符串。棋盘 根据尺寸属性( 方法计算所得的所有尺寸保存在属性里)绘制线条并填充棋盘底色,棋子根据 保存的棋盘数组中的内容绘制不同颜色的棋子( 1 为黑色, 2 为白色)。 :为画布类结构必须有的函数。 用户界面的输入部分支持键盘输入,键盘的上下左右键能让引导框移动,当玩家按下 确 定 键 ( 后 , 进 行 落 子 , 如 果 落 子 成 功 , 则 发 送 消 息( )通知对方;如果是无效的落子,则不进行任何操作。 :自定义重新绘制函数。当玩家在某个位置落子时,游戏画布并不重新绘制整个屏幕,而是仅仅绘制发生变化的小范围区域,这样能减少整个绘制操作的 的工作量,对提高游戏性能有所帮助。根据指定行和列绘制区域 。 : 游戏新开局时( )调用此方法,该方法根据己方落子颜色(构造时传入)创建游戏逻辑对象,并设置游戏中使用的标志位,在默认情况下,客户端先手,并且为黑色棋子。开局时在游戏画布中添加退出软键用于退出游戏。 :游戏结束时对画布的修改 :设置输赢提示,之后对所有的状态设置进行封锁。 :创建连接,在其中构造 象, 并设置是否为服务器。打开连接。 :根据参数提示用户,如果连接成功,则提示玩家联网成功,否则连接失败,则跳出提示对话框,并退 12 出程序。 在客户和服务端处连接成功的标志的赋值。 :接收对方信息 ,并处理 此方法中由取对方落子行列信息更新游戏逻辑( ),然后将 置为 待我方落子。 当于此方法的一个锁。 :该方法调整状态提示字符串:设置字符串的内容、颜色及相关图片。 :在绘制屏幕之前 ,将首先 计算屏幕中各个部分的位置和大小。如果屏幕的宽度小于高度,提示字符串位于屏幕上方;反则侧方。在除掉字符串的宽度和高度后,将屏幕剩余部分的宽或高最小值作为棋盘的边长。该方法被 法调 用。 :返回指定列的 x 坐标;该方法被 用。 :返回指定行的 y 坐标;该方法被 用。 :存放状态字符串,设置状态时就将此字符串调用出去。 接控制类 负责整个联网过程,在联网方面,游戏画布收发消息只与该类进行交互,然后由它与服务器和客户端进行交互。所以, 介于用户界面和 具体联网之间的控制类。 :r: :u: :u: :u: :u: :u: :u: :u: : 13 :服务器对象 :客户端对象 :是否为服务器标志,由画布传进。 :游戏画布,与画布建立联系 :传递的行值 :传递的列值 :客户端或者服务器连接后,又其反馈连接情况,将连接是否成功的信息反馈给 ,然后传递给画布告知玩家,这样做的好处是保持各类结构的明确性。该方法由服务器或客户端调用。 :构造函数。传递画布,以及设置连接类型。 :获得 息 :获得 息 :由服务器或客户端对象调用,将收到的参数消息传递 给 象;然后告知画布接收消息:画布调用 和 获取行列信息。 :用于发送消息(己方落子的行列值),如果己方为服务器,则调用服务器对象的 ;如果己方为客户端,则调用客户端对象的 。 :画布调用 方法启动连接,如果是服务器,则创建服务器对象并启动服务器连接;如果是客户端,则创建客户端对象并启动客户端连接, 根据 定是创建客户端,还是服务器。这样做可以在画布调用时能够统一,使用更简单。 务器类 服务器类主要创建蓝牙连接和服务,并等待客户端的连接。创建好连接后进 14 行行列数值的收发。 :线程,在 中调用并启动。 :连接类 :服务器连接地址 :数据输出流 :连接标志 :本地设备管理,来自蓝牙包 :行信息 :列信息 :流连接通告器 r: :r: :r: :r: :r: :r: :r: :r: :r: :r: :r: :u: :u: :r: :u: :u: :r: :15 :客户端处理 :连接队列 ,可保存对象 :构造函数。将 本类中的 获取 象,该类作为一个连接中枢,起到联网和用户界面之间沟通的作用。 :实现了 口,在 方法中先获取本地蓝牙管理器,将其设置为允许其他设备访问,然后按照指定服务地址开通服务并等待客户端的联入。 :发送数据。 收发的数据位玩家落子的行列信息,这些信息已经被 转化为字符串形式。发送信息既往数据输出流( 写入数据。 :接收数据。被内部客户端处理类 调用,接收信息则从数据输入流中读取数据,并传递给 接类。 :线程的创建和启动。 :在 线 程 中 调 用 了 的方法,该方法打开了连接的数据输出流以便数据发送。 调用了 在 使用了内部类 来处理客户端,该类也实现并启动了一个线程,为的是随时等待加入 的客户端;在构造函数中创建并启动该类的线程;在 方法中等待客户端的连接,在获得客户端后,尝试开启数据流。 本类主要围绕 展开,依次经行获取蓝牙管理,设置访问权限,开通指定地址的服务,接受连接,在客户连接处理类中添加连接并唤醒处理线程。这时数据流赋值给 由收发数据方法处理。 户端类 主要负责搜索设备和服务,并负责客户端的信息收发。 引用了较多蓝牙 且实现了 口。 16 :连接流对象 :向量容器 放所有搜索到的设备。 i :发出的行信息 :发出的列信息 服务集合。将搜索到的集合加入服务集合。 : 服务搜索的事务 合。 :连接对象,在构造函数中赋值。 :i : :r: : r: :r: :u: :u: :u: :u: :u: :u: :u: :u: :17 : 发现代理类的对象,用于发现代理 。 :参数,返回类型。 :响应服务的 象) :连接关闭标志位。 :线程对象,此线程把整个 为线程来运行( )。 :获取连接类对象。在连接类中创建的 象就会和连接类建立联系。 搜索设备 客户端程序使用蓝牙发现 搜索在其附近的的设备和服务。服务代理类( 时支持设备与服务的发现。当设备和服务被发现时,想得到通知的客户端应用程序必须实现并注册 口,这个接口定义了设备发现通知和服务发现通知的回调( 。 使用 ,用于搜索设备的相关方法来开始和取消设备发现 : , 重新获得已经发现或者附近的已知设备。 ,启动发现附近设备,也叫 ,计算机范文网 ,取消当前进行的任何请求。 “蓝牙发现代理”在请求阶段的不同时候会分别调用 现监听器)不同的回调方法: ,指出是否有设备被发现。 ,指出是否请求已经成功、触发一个错误或已被取消。 设备发现以调用 函数开始。在请求进行时,“蓝牙发现代理”会在适当的时候调用回调方法 和 ,此两个方法均为虚函数,需要重写。 :将搜索到的远程设 18 备添加到设备集合中。第一个参数即为搜索到的远程设备( 。 :获取返回状态,如果搜索结束但未查找到远程设备,或者搜索过程中 发生异常的处理在此函数中进行。在这里将异常通知连接类的 搜索服务 可以使用“发现代理”( 服务发现方法来开始或取消服务发现: ,启动服务发现搜索。(根据 册应为尝试定位一个服务。) ,启动服务发 现搜索。本程序用此方法。 ),取消正在进行中的任何服务发现搜索操作。 在服务发现阶段的不同时候会分别调用 现监听器)的服务发现回调方法: :表示是否服务已被发现。 将 合赋值给 器。 :表示服务发现是否已经完成。主要对 行操作。 为简单起见,本程序不做任何事。 :实现了 口,线程将完成搜索设备和服务工作,并记录所搜索到的 服务 方法中主要完成三个阶段: 1、获取本地设备和获取代理, 2、搜索设备, 3、搜索服务。 :为了简单起见,将消 息的收发处理放在一个方法中,客户端发送消息之后就立即接收信息,并传递给。在此方法中直接定义一个线程,让线程去做数据的发送与接收。 :创建并启动 的接口线程。 19 本类主要要写的方法有 3 个: ,,其他方法为虚函数的重写,也主要围绕 进行的。 子 的实现 较简单, 在此 不做简介。 7 应用程序的安装 和 部署 将 编写好的源程序在集成开发环境或者

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论