毕业设计(论文)-J2ME五子棋手机网络对战游戏的设计与实现.doc

上传人:西安人 文档编号:3281287 上传时间:2019-08-07 格式:DOC 页数:27 大小:302.53KB
返回 下载 相关 举报
毕业设计(论文)-J2ME五子棋手机网络对战游戏的设计与实现.doc_第1页
第1页 / 共27页
毕业设计(论文)-J2ME五子棋手机网络对战游戏的设计与实现.doc_第2页
第2页 / 共27页
毕业设计(论文)-J2ME五子棋手机网络对战游戏的设计与实现.doc_第3页
第3页 / 共27页
毕业设计(论文)-J2ME五子棋手机网络对战游戏的设计与实现.doc_第4页
第4页 / 共27页
毕业设计(论文)-J2ME五子棋手机网络对战游戏的设计与实现.doc_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《毕业设计(论文)-J2ME五子棋手机网络对战游戏的设计与实现.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)-J2ME五子棋手机网络对战游戏的设计与实现.doc(27页珍藏版)》请在三一文库上搜索。

1、五子棋手机网络对战游戏的设计与实现五子棋手机网络对战游戏的设计与实现 摘摘 要要 在现代社会中,手机及其它无线设备越来越多的走进普通老百姓的工作和生 活。随着 3G 技术的普及与应用,基于 Java 开发的软件在手机上的使用非常的 广泛,手机增值服务的内容也是越来越多,对丰富人们的生活内容、提供快捷 的资讯起着不可忽视的作用。 本文基于 J2ME 技术,以计算机网络游戏的运行流程为基础,分模块开发 一款网络五子棋游戏软件。 本文对以下几点内容做了重点研究和探讨: 1、系统整体结构,根据设计目标,结合普通网络游戏的运行流程,给出了 系统总体设计方案,并探讨了系统设计时需要用到的关键技术。 2、手

2、机 MIDP 客户端的实现,MIDP 客户端是游戏的唯一客户端,主要功 能包括连接服务器进行身份验证、进行游戏并不断的与服务器交换数据。 3、后台系统的设计与实现,后台用来处理与数据库的互联来验证用户身份、 处理由客户端发送过来的数据。 由于受到客观条件的限制,本系统的测试是在三星手机模拟器上完成的, 但它仍不失具一定的实用价值。 关键词:关键词:J2ME;手机游戏;Servlet The Design and Implementation of The Gobang War Game on Cell Phone Network Abstract In modern society, more

3、 and more cell phones and other wireless devices come into the work and life of ordinary people. With the popularization and application of the 3rd Generation of Digital communication technology,the development of Java- based software in the use of mobile phones is very broad, mobile value-added ser

4、vices are more and more. It plays an import role to enrich peoples lives and provide easier access to information. This paper is based on J2ME technology, it expounds how to take the running flow of computer network as basis, introduce a kind of gobang game on network by the sub-module method. . The

5、 main points of this paper go as follows: (1) The overall system structure. According to the design goals, with the general operation of the network game flow, gives the system design, and explores the key technology, which is used by the design of this system. (2) The implementation of the phone MI

6、DP client. MIDP client is the only game client, the main functions include connecting the server to check the status, playing games and keeping the exchange of data with the server. (3) The implementation and design of background system. Background is to deal with the Internet database to verify the

7、 identity of users, processing the data, which is sent by the clients. Due to the restrictions of objective conditions, the systems test completed in the Samsung handset simulator. But it does have some advantages. Key words: J2ME; Handset game; Servlet 目目 录录 论文总页数 :24 页 1 引言1 2 系统综述1 3 手机游戏的现状和关键技术

8、介绍2 3.1 软件现状2 3.2 J2ME 概况.2 3.2.1 J2ME 的由来2 3.2.2 J2ME 的 3 层体系结构及 MIDP 简介3 3.3 TOMCAT服务器介绍 .4 3.4 SERVLET技术介绍.5 4 开发环境介绍.7 4.1 开发环境7 4.2 关于 SAMSUNG WIRELESS TOOL KIT7 5 客户端模块的开发.7 5.1 综述.7 5.2 程序的类结构.7 5.3 游戏的功能流程图.8 5.4 游戏的实现.9 5.4.1 主类 Omok 的实现.9 5.4.2 游戏登录界面以及操作说明界面的实现.10 5.4.3 游戏画布类的实现12 5.4.4 网

9、络连接类的实现14 5.4.5 五子棋获胜算法15 6 服务器端程序的开发17 6.1 数据库的设计与实现17 6.2 SERVLET程序的编写.17 7 改进建议和措施20 7.1 关于图片问题20 7.2 软件测试20 7.2.1 测试前的准备工作20 7.2.2 进行测试21 7.2.3 有待添加和完善的功能22 结 论.22 参考文献.22 致 谢.错误!未定义书签。错误!未定义书签。 声 明.错误!未定义书签。错误!未定义书签。 第 1 页 共 24 页 1 1 引言引言 Java 语言是美国 Sun Microsystem 的 James Gosling、Pratrick Naug

10、hton 及 Mike Sheridan 等人于 1991 年精心设计出来的计算机编程语言,其构想在于 实现使用同一种编程语言所写出来的程序可以在不同的平台上运作。这种架构 对于消费性电子产品而言是具有革命性的,因为在消费性电子产品中的处理器 及操作系统各不相同,要在这些平台上开发程序必须要了解各个平台的特性, 以及其提供的 API 使用方式,分别开发不同的版本才能执行,影响应用程序的 普及性。 近几年,由于微处理器性能的大幅提升,加上无线通讯技术的突破,手持 式移动设备开始受到大众的青睐。短短几年内,手机已经升级了几代产品,普 及率逐年攀升,生产效率不断上升,产品价格比个人电脑的摩尔定律有更

11、惊人 的下调,以至手机是大多是城市居民不可缺少的一件随身设备。继短信、彩信 等服务之后,中国移动提供基于 Java 的百宝箱业务,应用产品遍及商务应用、 信息获取、英汉互译、游戏娱乐等多媒体领域。 为了适应移动数据的发展,推动无线电子商务等业务的发展,J2ME(Java 2 Micro Edition)既用于嵌入式系统的 Java 被引入无线领域。J2ME 的出现实 际上是 Java 技术的回归。作为 Java2 平台的一部分,J2ME 与 J2SE、J2EE 一起, 为无线应用的客户端和服务器端建立了完整的开发、部署环境。随着 J2ME 的应 用,它为移动互联引入了一种新的模型,既允许手机可

12、以从互联网上下载各种 应用程序,并在手机创造可执行环境离线运行这些程序。由于定义了可执行下 载的标准,并在手机上创立了可执行环境和程序开发语言,由此,在移动通信 业第一次为软件开发商创造了巨大的商业机会,手机用户在得到丰富应用体验 的同时,也大大提高了运营商的网络流量。 2 2 系统综述系统综述 本系统采用 C/S 结构,包括手机客户端和服务器后台两个部分。 客户端采用 j2me midp1.0 函数编写,保证了非常好的可移植性。服务器端 采用了 tomcat 作为 http 服务器,免费并且具有非常强大的功能,中间件采用 java servlet 进行中间过程的处理,具有很好的稳定性和可移植

13、性,采用的数 据库则是 sql server 2000。 用户需要运行本系统客户端软件,输入用户名和密码进行身份验证,如果 验证成功,则可以进入游戏界面,和其他已经登录的玩家进行游戏;如果验证 不成功,说明输入的用户名或者密码错误,需要重新进行输入,否则不会进入 第 2 页 共 24 页 到游戏界面。 系统分为三层,包括数据库服务器层、功能层和表示层。数据库服务器层 主体是 SQL2000,功能层由 Tomcat+ servlet 技术实现,表示层为前台手机操 作客户端.总体结构如下图所视: 图 1 总体结构图 3 3 手机游戏的现状和关键技术介绍手机游戏的现状和关键技术介绍 3.13.1 软

14、件现状软件现状 在信息社会中,手机及其他无线设备越来越多的走进普通百姓的工作和生 活,随着信息网络化的不断进展,手机及其他无线设备上网络势在必行。但是 传统手机存在以下弊端: 1. 传统手机出厂时均由硬件厂商固化程序,程序不能增加、删除,有了 错误也不能更新、修改,若要增加新功能必须另换一部手机。 2. 传统手机访问互联网是通过 WAP(Wireless Application Protocal), 所有网络资源必须接通网络才能在线访问,非常耗时、费用亦很高。 而 Java 技术在无线应用方面的优势非常明显: 1. 应用程序可按需下载,而不是购买由硬件商提供的套件,可升级空大。 2. Java

15、 技术提供了一个类库,它使的应用开发商可以创建更为直觉、丰 富的用户界面(GUI); 3.Java 技术使网络带宽的应用更为有效,因为应用程序可以下载到器件上, 并在本地运行,仅仅是在连接到服务器时才会占用网络带宽。 3.23.2 J2MEJ2ME 概况概况 3.2.13.2.1 J2MEJ2ME 的由来的由来 Java 的最大目标和特点,就是“一次编写,到处运行“的平台无关性。但是, 一套标准无法适应各种不同的需求。因此,Java 技术目前共有三套,分别针对 第 3 页 共 24 页 不同的平台和应用。 Standard Edition(J2SE,标准版):针对桌面端 PC 和工作站的个人和

16、低 端商务应用。 Enterprise Edition(J2EE,企业版):针对服务器端企业级应用,支持 Servlets, JSP 和 XML 等等。 Micro Edition(J2ME,袖珍版):针对有限内存,显示和处理能力的设备, 主要是消费电子和嵌入式设备领域(这实际正是 Java 语言设计最初的目标领域) 。 图 2 java 总体架构图 在消费电子和嵌入式设备领域,内存从几百 K 到几十 M,从没有屏幕到 Web-TV,CPU 从低功耗的嵌入式处理器到 206MHz 的 RISC 处理器,硬件条件的 差异是相当大的。这就使得 J2ME 的标准需要有不同的层次和类别来适应这个复 杂

17、的领域,因此相比之下 J2ME 就比 J2SE 和 J2EE 的标准要复杂得多。因此,清 楚的理解 J2ME 的体系结构的划分才能更好的理解和掌握 J2ME。 3.2.23.2.2 J2MEJ2ME 的的 3 3 层体系结构及层体系结构及 MIDPMIDP 简介简介 J2ME 的 3 层体系结构依照各种设备的资源特性,将 J2ME 技术构架分为简 表(Profile) 、配置(Configuration)和 Java Virtual Machine(JVM)3 层, 然后再进一步细分,这使 J2ME 能够在每一类设备的限制下工作,而同时提供最 低限度的 Java 语言功能性。 关于 J2ME

18、的体系结构,可以这样来进行总结:Configuration 的分类是根 据计算能力的不同来划分的,同类设备的计算能力相近。Configuration 是一 个规范,定义了这类设备的共同 Java 平台,定义与设备无关的 Java 虚拟机和 核心库,是平台相容性的基础。Profile 的分类是根据设备功能划分的,同类 功能的设备其他各种硬件条件和需求也相近。Profile 是一组 API,在某一 第 4 页 共 24 页 Configuration 的基础上扩展了针对设备特定功能的 API,使得标准能够完全适 应特殊的设备,彻底发挥设备的功能。 J2ME 体系的一般结构是:由 Configura

19、tion 定义的 Java 虚拟机运行于设 备的宿主操作系统之上,构成整个平台的基础。Configuration 提供了基本的 语言特性,Profile 提供针对设备的特殊功能 API 和扩展类库。应用程序的运 行环境需要一个 Configuration 和至少一个 Profile,多个 Profile 可以共存, 也可以叠加。 MIDP(Mobile Information Device Profile)定义了针对移动信息处理设 备(主要指智能手机和一部分具有无线通信功能的 PDA)的图形界面,输入和 时间处理,持久性存储,无线电话网络连接之上的一些消息处理(例如短消息) , 安全等等 AP

20、I,并且考虑到了移动信息设备的屏幕和内存限制。类似于 J2SE 中 的 Applet 框架,MIDP 提供了基于 javax.microedition.midlet 包的 MIDlet 应 用程序框架。 应为 MIDP 提出较的比较早,目前重要的智能手机和 PDA 操作系统上都已有 了相应的实现,而且应用的也比较广泛。 3.33.3 tomcattomcat 服务器介绍服务器介绍 Tomcat 是一个免费的开源的 Serlvet 容器,它是 Apache 基金会的 Jakarta 项目中的一个核心项目,由 Apache,Sun 和其它一些公司及个人共同开发而成。 由于有了 Sun 的参与和支持

21、,最新的 Servlet 和 Jsp 规范总能在 Tomcat 中得到 体现。Tomcat 被 JavaWorld 杂志的编辑选为 2001 年度最具创新的 java 产品, 可见其在业界的地位。 由于 Java 的跨平台特性,基于 Java 的 Tomcat 也具有跨平台性。与传统的 桌面应用程序不同,Tomcat 中的应用程序是一个 WAR(Web Archive)文件。 WAR 是 Sun 提出的一种 Web 应用程序格式,与 JAR 类似,也是许多文件的一个 压缩包。这个包中的文件按一定目录结构来组织:通常其根目录下包含有 Html 和 Jsp 文件或者包含这两种文件的目录,另外还会有

22、一个 WEB-INF 目录,这个 目录很重要。通常在 WEB-INF 目录下有一个 web.xml 文件和一个 classes 目录, web.xml 是这个应用的配置文件,而 classes 目录下则包含编译好的 Servlet 类和 Jsp 或 Servlet 所依赖的其它类(如 JavaBean) 。通常这些所依赖的类也 可以打包成 JAR 放到 WEB-INF 下的 lib 目录下,当然也可以放到系统的 CLASSPATH 中,但那样移植和管理起来不方便。 在 Tomcat 中,应用程序的部署很简单,你只需将你的 WAR 放到 Tomcat 的 webapp 目录下,Tomcat 会自

23、动检测到这个文件,并将其解压。你在浏览器中访 问这个应用的 Jsp 时,通常第一次会很慢,因为 Tomcat 要将 Jsp 转化为 第 5 页 共 24 页 Servlet 文件,然后编译。编译以后,访问将会很快。另外 Tomcat 也提供了一 个应用:manager,访问这个应用需要用户名和密码,用户名和密码存储在一个 xml 文件中。通过这个应用,辅助于 Ftp,你可以在远程通过 Web 部署和撤销应 用。当然本地也可以。 Tomcat 不仅仅是一个 Servlet 容器,它也具有传统的 Web 服务器的功能: 处理 Html 页面。但是与 Apache 相比,它的处理静态 Html 的能

24、力就不如 Apache。我们可以将 Tomcat 和 Apache 集成到一块,让 Apache 处理静态 Html,而 Tomcat 处理 Jsp 和 Servlet。这种集成只需要修改一下 Apache 和 Tomcat 的配置文件即可。 基于 Tomcat 的开发其实主要是 Jsp 和 Servlet 的开发,开发 Jsp 和 Servlet 非常简单,你可以用普通的文本编辑器或者 IDE,然后将其打包成 WAR 即可。 Tomcat 确实是一个很好的工具,不仅仅因为其免费,功能强大,更因为其 开放性。 3.43.4 servletservlet 技术介绍技术介绍 Servlet 是用

25、Java 编写的 Server 端程序,它与协议和平台无关。Servlet 运行于 Javaenabled Web Server 中。Java Servlet 可以动态地扩展 Server 的能力,并采用请求响应模式提供 Web 服务。 最早支持 Servlet 技术的是 JavaSoft 的 Java Web Server。此后,一些其 它的基于 Java 的 Web Server 开始支持标准的 Servlet API。 一、Servlet 的特点 Servlet 是 Java 技术对 CGI 编程的回答。Servlet 程序在服务器端运行, 动态地生成 Web 页面。与传统的 CGI 和

26、许多其他类似 CGI 的技术相比,Java Servlet 具有更高的效率,更容易使用,功能更强大,具有更好的可移植性, 更节省投资。 1、高效 在传统的 CGI 中,每个请求都要启动一个新的进程,如果 CGI 程序本身的 执行时间较短,启动进程所需要的开销很可能反而超过实际执行时间。而在 Servlet 中,每个请求由一个轻量级的 Java 线程处理(而不是重量级的操作系 统进程) 。在传统 CGI 中,如果有 N 个并发的对同一 CGI 程序的请求,则该 CGI 程序的代码在内存中重复装载了 N 次;而对于 Servlet,处理请求的是 N 个线 程,只需要一份 Servlet 类代码。在

27、性能优化方面,Servlet 也比 CGI 有着更 多的选择,比如缓冲以前的计算结果,保持数据库连接的活动,等等。 2、方便 第 6 页 共 24 页 Servlet 提供了大量的实用工具例程,例如自动地解析和解码 HTML 表单数 据、读取和设置 HTTP 头、处理 Cookie、跟踪会话状态等。 3、功能强大 在 Servlet 中,许多使用传统 CGI 程序很难完成的任务都可以轻松地完成。 例如,Servlet 能够直接和 Web 服务器交互,而普通的 CGI 程序不能。Servlet 还能够在各个程序之间共享数据,使得数据库连接池之类的功能很容易实现。 4、可移植性好 Servlet

28、用 Java 编写,Servlet API 具有完善的标准。因此,为 I-Planet Enterprise Server 写的 Servlet 无需任何实质上的改动即可移植到 Apache、Microsoft IIS 或者 WebStar。几乎所有的主流服务器都直接或通过插 件支持 Servlet。 5、节省投资 不仅有许多廉价甚至免费的 Web 服务器可供个人或小规模网站使用,而且 对于现有的服务器,如果它不支持 Servlet 的话,要加上这部分功能也往往是 免费的(或只需要极少的投资) 。 二、Servlet 的主要功能 Servlet 的主要功能在于交互式地浏览和修改数据,生成动态

29、Web 内容。 这个过程为: 客户端发送请求至服务器端; 服务器将请求信息发送至 Servlet; Servlet 生成响应内容并将其传给 Server。响应内容动态生成,通常取决 于客户端的请求; 服务器将响应返回给客户端; Servlet 看起来像是通常的 Java 程序。Servlet 导入特定的属于 Java Servlet API 的包。因为是对象字节码,可动态地从网络加载,可以说 Servlet 对 Server 就如同 Applet 对 Client 一样,但是,由于 Servlet 运行于 Server 中,它们并不需要一个图形用户界面。从这个角度讲,Servlet 也被称为

30、Faceless Object。 三、JAVA Servlet 的优势 Servlet 可以和其他资源(文件、数据库、Applet、Java 应用程序等)交互, 以生成返回给客户端的响应内容。如果需要,还可以保存请求响应过程中的 信息。 采用 Servlet,服务器可以完全授权对本地资源的访问(如数据库),并且 Servlet 自身将会控制外部用户的访问数量及访问性质。 第 7 页 共 24 页 Servlet 可以是其它服务的客户端程序,例如,它们可以用于分布式的应 用系统中,可以从本地硬盘,或者通过网络从远端硬盘激活 Servlet。 采用 Servlet Tag 技术,可以在 HTML

31、页面中动态调用 Servlet。 Servlet API 与协议无关。它并不对传递它的协议有任何假设。 像所有的 Java 程序一 样,Servlet 拥有面向对象 Java 语言的所有优势 Servlet 提供了 Java 应用程 序的所有优势可移植、稳健、易开发。使用 Servlet 的 Tag 技术, Servlet 能够生成嵌于静态 HTML 页面中的动态内容。 一个 Servlet 被客户端 发送的第一个请求激活,然后它将继续运行于后台,等待以后的请求。每个请 求将生成一个新的线程,而不是一个完整的进程。多个客户能够在同一个进程 中同时得到服务。一般来说,Servlet 进程只是在

32、Web Server 卸载时被卸载。 4 4 开发环境介绍开发环境介绍 4.14.1 开发环境开发环境 操作系统:Microsoft Windows XP 程序语言:Java 2 开发平台:Java 2 Micro Edition + Tomcat 5.0 开发工具: SAMSUNG Wireless Tool Kit 2.1+ eclipse3.0.1 4.24.2 关于关于 SAMSUNGSAMSUNG WirelessWireless ToolTool KitKit SAMSUNG WTK(SAMSUNG Wireless Tool Kit)是 SAMSUNG 公司针对 J2ME 推出

33、的用于手机和 Palm 等移动设备的软件开发包,它通用性高,开发出的应用程序 可保证能运行在大部分设备上,具有强大的功能和完善的调试手段,它提供了 运行模拟器的最基本组件,是其他 IDE 需集成采用的必备元素,也可以单独使 用。 5 5 客户端模块的开发客户端模块的开发 5.15.1 综述综述 客户端部分主要划分为 3 个界面:菜单界面,登录界面、游戏界面。 具体实现的功能为: 1、菜单界面:有如下选项: 进入游戏进入到用户登录界面; 操作说明进入说明界面,说明游戏软件的操作方法; 2、登录界面: 得到用户输入的用户名和密码,向服务器提交,如果身份验证成功,界面 则跳转到游戏界面,如果身份验证

34、失败,则弹出警告窗口,说明登录失败原因。 第 8 页 共 24 页 3、游戏界面: 用户游戏时看到的界面,负责根据需要画图。 5.25.2 程序的类结构程序的类结构 程序一共有 7 个类,程序的类结构如图所示: 图 3 类结构图 5.35.3 游戏的功能流程图游戏的功能流程图 进入游戏后,首先显示的是菜单,有 2 个命令选项:进入游戏和操作说明; 一个按钮:退出程序。选择进入游戏这个命令,则进入到用户登录窗口,如果 登录成功,则跳转到游戏界面,如果登录失败,则跳出警告窗口,3 秒后返回 到登录窗口。也可以从登录窗口退出程序。如果选择操作说明命令,则显示操 作说明界面,按返回按钮,又回来主菜单。

35、游戏的功能流程如图所示 ServerConnector OmokCanvas :Canvas Omok. :MIDlet Cursor :Canvas Logo :Form Help :Form OmokBoard : Canvas 菜单 进入游戏 操作说明 退出 登录窗口 游戏 说明 Back 警告窗口 第 9 页 共 24 页 图 4 功能流程图 5.45.4 游戏的实现游戏的实现 5.4.15.4.1 主类主类 OmokOmok 的实现的实现 MIDlet 是最核心的类。MIDlet 程序有三种状态: 1、 暂停状态 2、 运行状态 3、 销毁状态 J2ME 程序都是从 MIDlet 类

36、开始执行。系统在执行 MIDlet 程序时,首先构 造一个 MIDlet 类型的对象,然后使程序进入到暂停状态,按照生命周期的规定, 系统会自动调用 MIDlet 对象的 startApp 方法使程序进入到运行状态,开始程 序的执行。 图 5 开始界面 首先,先要创建 MIDlet 类型的对象,下面来看对象的构造方法: public Omok() startCmd = new Command(“Start“, Command.SCREEN, 2); exitCmd = new Command(“Exit“, Command.EXIT, 3); theCanvas = new OmokCanva

37、s(); 游戏 第 10 页 共 24 页 theOne=new main(); display=Display.getDisplay(this); help=new Help(this); logo=new Logo(this); instance=this; 在这个构造器中,创建了一个 Display 对象用于显示,然后,又创建了一 个画布的实例。 Display 类有两个最主要的作用: 1、 获得屏幕的属性。例如屏幕是否是彩色的,以及支持的颜色数量等信 息。 2、 控制屏幕的显示。例如使屏幕显示某个指定界面或者获得当前的显示 界面等。 其中,特别是第二个作用使用的更加频繁。 当程序启动的

38、时候,则调用了程序的 startApp 方法,用来显示画面: public void startApp() theCanvas.addCommand(startCmd); theCanvas.addCommand(exitCmd); theCanvas.setCommandListener(this); display.setCurrent(theOne); 这个方法的作用是把在构造器中创建的画布对象设置为当前屏幕上需要显 示的画面。 当调用 destroyApp 这个方法的时候,则退出程序。 public void destroyApp(boolean unconditional) exit

39、(); public void exit() System.gc(); notifyDestroyed(); 第 11 页 共 24 页 退出程序的时候,要实行垃圾回收,释放掉不再使用的内存。 5.4.25.4.2 游戏登录界面以及操作说明界面的实现游戏登录界面以及操作说明界面的实现 这两个类的实现都是继承了 Form 类,来添加各种组件的。下面是效果图: 图 6 Form 界面效果图 下面先来分析 logo 类: class Logo extends Form implements CommandListener 这是类的声明,它继承了 Form 类,同时派生了一个接口,用来产生按钮事 件。

40、 Logo(Omok midlet) super(“); this.midlet = midlet; UserName=new TextField(“用户名“,“,9,TextField.ANY); UserPassword=new TextField(“密 码“,“,9,TextField.PASSWORD); try img=new ImageItem(“,Image.createImage(“/1.png“),ImageItem.LAYOUT_CENTER,“image explorer“); catch(java.io.IOException e) append(img); appen

41、d(UserName); 第 12 页 共 24 页 append(UserPassword); backCommand = new Command(“登录“, Command.BACK, 1); exit = new Command(“退出“, Command.EXIT, 1); addCommand(backCommand); / addCommand(exit); setCommandListener(this); 这是他的构造方法,创建了 2 个输入框,并添加到 Form 上,并且还加上了 2 个按钮。 Help 类的实现和它类似,因此不再详细介绍。 5.4.35.4.3 游戏画布类的

42、实现游戏画布类的实现 在 J2ME 游戏编程中,Canvas 类是最常用的类之一,该类提供了获得手机 屏幕属性、绘制界面以及事件处理等很多实用的功能。 Canvas 类是 Displayable 的子类,在实际的使用过程,一般都通过继承 Canvas 来利用该类提供的功能。Canvas 类是一个抽象类,继承该类的时候必须 覆盖 paint 方法。来看游戏画面: 图 7 游戏运行效果图 首先先看下它的构造方法: public OmokCanvas() 第 13 页 共 24 页 board = new OmokBoard();/创建画板 cursor = new Cursor();/创建光标 c

43、onnector = new ServerConnector(this); setGameMode(INIT);/设置模式 在它里面,创建了画板,光标、连接器。并且设置了模式。 然后来看具有流程控制作用的 setGameMode 方法: private void setGameMode(int gameMode) this.gameMode = gameMode; switch(gameMode) case INIT : id0 = id1 = -1;/设置标记变量初始值 row = col = 6;/初始化棋盘大小 board.init(); break; case CONNECT : Th

44、read cthread = new Thread() public void run() repaint(); if(islogin) connect(); else loginGame(); ; cthread.start(); break; case TURN0 : cursor.setLocation(row, col); break; 第 14 页 共 24 页 case TURN1 : connector.receiveData(id0); break; repaint(); 在这里面,定义了 4 种状态时所要处理的事件,在这个程序中的别的方法 里,当满足一定条件的时候,就开始设置

45、那些状态变量,从而实现了流程的控 制。 5.4.45.4.4 网络连接类的实现网络连接类的实现 在 J2ME 中,专门提供了一个网络连接框架GCF。它为资源有限的设备 提供了一个可扩展的、通用的 I/O 框架。GCF 是一组在 javax.microedition.io 包中定义的接口。 在 GCF 中共定义了七个接口 ,其中 Connection 是最基本的连接类型, 且同时提供了对数据包和流连接的支持。沿着层次结构向下派生出提供更多功 能的接口。在 MIDP 1.0 规范只要求设备支持 HTTP 连接协议,而更新的 MIDP 2.0 规范要求同时支持 HTTP 和 HTTPS,后者提供了对

46、更安全的网络连接的支 持。 下面来分析核心代码: /打开连接 private String readPage(String url) throws IOException StringBuffer result = new StringBuffer(); HttpConnection c = null; InputStream is = null; try c = (HttpConnection)Connector.open(url); is = c.openInputStream(); int ch = 0; while (ch = is.read() != -1) result.appen

47、d(char)ch); finally 第 15 页 共 24 页 if (is != null) is.close(); if (c != null) c.close(); return result.toString(); 在这个方法中,首先建立了一个连接,采用流来得到数据,当数据传输完 毕后,关闭流,关闭连接。 下面的代码则是发送数据和接收数据的时候采用多线程: public void sendData(final int id1, final String data) Thread thread = new Thread() public void run() try readPage

48、(URL+“?command=sendData catch (IOException e) ; thread.start(); public void receiveData(final int id0) Thread thread = new Thread() public void run() receive(id0); ; thread.start(); 在目标设备具有内存小,计算能力弱和电池供电等特点的时候,如何使应用 程序高效的运行就成为开发中的一个大问题.尤其针对手机等移动信息设备时, 无线通讯的特点又对我们的程序提出了更高的要求.从代码优化的角度,在网络 编程中引入多线程就显得十

49、分重要。 当程序运行的时候,Application Management Software(应用管理软件)首 先初始化一个 MIDlet,然后调用它的 startApp()方法使得 MIDlet 进入 active 状态,这条程序分支就是主线程,它执行其他的方法后都会返回到这个分支上 第 16 页 共 24 页 来继续执行。然而网络连接是个可能堵塞的操作,意味着它可能长时间都不返 回。 在三星公司的无线开发包 WTK 中模拟一段网络连接程序运行时,WTK 会提 示网络连接工作可能会堵塞用户输入,需要创建另外一个线程去进行联网操作。 所以针对以上情况,采用多线程进行实现。 5.4.55.4.5 五子棋获胜算法五子棋获胜算法 因为本系统模拟的重点是网络连接,数据交互以及怎样来初步实现一个简 单的手机网络游戏,所以对于五子棋游戏的规则方面并没有考虑太多,禁手等 游戏规则都没有考虑,而仅仅实现了五子棋的获胜算法,这点是这次毕业设计 的很大不足之处。 下面这个方法就是来实现五子棋的获胜算法: /检测是否获胜 public in

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 研究报告 > 信息产业


经营许可证编号:宁ICP备18001539号-1