为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

Java自制手机联网游戏

2013-12-03 6页 doc 41KB 40阅读

用户头像

is_993510

暂无简介

举报
Java自制手机联网游戏 Java自制手机联网游戏 [ 录入者:admin | 时间:2006-04-18 09:51:35 | 作者:未知 |   来源:未知 | 点击数:238 ] [上一篇] [下一篇] 本文介绍了一个可以在手机上运行的联网游戏程序。通过这个程序,无论在何地,只要手机能够上网就可以和Internet上的朋友联网游戏。下面对程序的一些细节做一简要介绍,希望能给从事Java开发的技术人员一些启示。 J2ME简介 J2ME(Java 2 Micro Edition)是Java 2的一个组成部分,它与J2SE、J2E...
Java自制手机联网游戏
Java自制手机联网游戏 [ 录入者:admin | 时间:2006-04-18 09:51:35 | 作者:未知 |   来源:未知 | 点击数:238 ] [上一篇] [下一篇] 本文介绍了一个可以在手机上运行的联网游戏程序。通过这个程序,无论在何地,只要手机能够上网就可以和Internet上的朋友联网游戏。下面对程序的一些细节做一简要介绍,希望能给从事Java开发的技术人员一些启示。 J2ME简介 J2ME(Java 2 Micro Edition)是Java 2的一个组成部分,它与J2SE、J2EE并称。根据Sun的定义:J2ME是一种高度优化的Java运行环境,主要针对消费类电子设备的,例如蜂窝电话和可视电话、数字机顶盒、汽车导航系统等等。J2ME技术在1999年的JavaOne Developer Conference大会上正式推出,它将Java语言的与平台无关的特性移植到小型电子设备上,允许移动无线设备之间共享应用程序。 J2ME的构架 J2ME的构架如图1、图2所示。 图1 J2ME的构架1 图2 J2ME的构架2 程序运行的环境 客户端即为手机(需支持J2ME的手机,例如motorola 388)用户,编程环境是Windows 2000 server + MotoJ2SDK+JDK1.3.1+MS SQL server2000,服务器端为Windows 2000 server+JDK1.3.1。 J2ME编程流程 以MotoJ2SDK的开发过程为例,其流程如下所示: 图3 J2ME编程流程 程序简介 服务器端代码的编写 客户端和服务器端采用Socket连接。服务器端需要时刻监听客户的请求(如图4),一旦有客户需求,它就需要马上响应(如图5),并做出相应的处理,然后将结果返回给客户,客户显示服务器处理结果(如图10)。 图4 服务器监听8000端口 图5 服务器接受到请求并响应请求 服务器端程序代码如下: try{ gameServer gServer = new gameServer();//创建一个主类实例 gServer.newServerSocket(gServer.port);//监听gServer.port端口 while(true)//时刻等待客户端连接。 { gServer.con = gServer.server.accept();//一旦有客户的请求,则接收客户请求。 multiRequest cThread=new multiRequest(gServer.gSocket);//为处理客户端请求建立线程。 cThread.start();//启动线程处理客户端请求。 } }catch(IOException e)//捕获异常。 { System.out.println(“Creating socket error!!!”); System.exit(1); } 以下为multiRequest类的部分代码: class multiRequest extends Thread { private Socket rSocket; private DataInputStream is; private DataOutputStream os; String strReceive=null; String strWhichService=null; Private intType; public multiRequest(Socket s)throws IOException//构造数 { rSocket = s; inType = 0; is = new DataInputStream(rSocket.getInputStream());//建立输入输出流。 os = new DataOutputStream(rSocket.getOutputStream()); } public void run() { try{   strReceive=in.readUTF();   strWhichService=strReceive.substring(0,2); //分离出用户向服务器发送子串的前两个字符,这个字符标志着用户请求的服务种类。   if(strWhichService.equals(“/r”)) intType=1;//请求注册服务。   else if(strWhichService.equals(“/s”) intType=2;//请求查询分数服务。   else if(strWhichService.equals(“/5”) intType=3;//请求五子棋服务。 ……//请求其它服务(略)   switch(intType)   {   case 1: newUser();break;   case 2: findByGradeByUserID();break;   case 3: playWuzi();break;   default 0:displayError();break;   } }catch(IOException e){} finally {   try{   rSocket.close();   }catch(IOException e){} } } …………//(略) } 由于手机端硬件的限制,所以,复杂的查找和处理都由配置较好服务器端处理。这样手机端可以减轻负担,专职处理界面的美观,以赢取客户的喜爱。例如,手机用户提出查分数请求时,手机向服务器发出请求“/s:user”。服务器接收到该子串,首先分离为“/s”和“user”,“/s”示查询分数,“user”表示用户的ID。这时服务器端就调用findByGradeByUserID(),该函数利用JDBC连接数据库查询用户成绩,并将查询结果发送给客户端。 手机端编程 手机端的编程其实是MIDlet编程。MIDlet的程序流程是这样的:构造函数→startApp()→监听事件、接收命令→commandAction()方法→调用别的方法→如果是exit()命令调用pauseApp()→destroyApp()方法。以图形表示MIDlet的生命周期如图6所示。实际上,MIDlet程序的运行流程和Applet程序的运行流程差不多。 图6 生命周期 手机端程序举例如下: import javax.microedition.lcdui.*;//用户界面包,主要用户构建用户的程序界面。 import javax.microedition.midlet.*;//MIDlet类。 import javax.microedition.io.*;//网络IO包。 …… public class MobileMIDlet extends MIDlet implements CommandListener { ……//一些变量的声明(略)。 MobileMIDlet() { myDisplay = Display.getDisplay(this) ; } protected void startApp() throws MIDletStateChangeException { ……//一些变量的初始化。 myDisplay.setCurrent(funcSelected);//设置当前显示界面为用户功能选择界面(图7) } …… public void commandAction(Command c,Displayable d) { if (d == funcSelected)//用户在主界面选择。 {   switch (((List)d).getSelectedIndex())   {   case 0://用户选择了游戏功能。   myCanvas = new ClientCanvas();   myDisplay.setCurrent(myCanvas);   break;   case 1://用户选择了查询。   myDisplay.setCurrent(SearchForm);   break;   ……//其它选择略。   }   }else if(d==SearchForm)   {   if(c==okCommand){//如果用户点击了发送按钮(图9)。   try{ SendAndWaitAndDisplay(); //开始发送用户填写的资料,同时显示等待界面。 一旦接收到服务器发送过来的查询结果,则分析并且在手机上显示查询。   }catch(IOException e)   {   System.out.println(“error!”);}   }   }   ……//略去其它处理 } }//class 图7 功能选择界面    图8 手写输入    图9 提交查询 从以上程序段可以看出,手机端的程序主要是控件的部署和简单按钮动作的处理。由于手机硬件限制,手机端不可能进行复杂的操作,所以,对于数据库等类型的操作应该尽量放在服务器端处理,以减轻用户负担。 数据的发送与接收 利用服务器端和客户端建立的输入、输出流,可以轻松实现数据的在客户端和服务器端的收发工作。 图10 查询结果    图11 联网游戏 程序段举例如下: is = new DataInputStream(rSocket.getInputStream());//建立输入输出流。 os = new DataOutputStream(rSocket.getOutputStream()); …… //数据发送 try { os.writeUTF(sendMsg);//sendMsg为String类。用UTF编码发送数据. os.flash(); }catch(IOException e) { System.out.println(“Send msg error! ”);}; …… //数据接收 try { recMsg=in.readUTF();//将信息读入String recMsg中。 }catch(IOExcetpion e) { System.out.println(“Recevie msg error!”); } 移动通信的迅速发展、手机用户骤然增加,必然使手机软件成为一个巨大的市场。与一般软件相比,更有发展潜力的网络游戏必然更具有开发潜力。利用本文介绍的程序可以构建一个手机联网游戏城,就像联众一样。不过连入的客户端不再是沉重的、移动不方便的PC,而是轻便的手机。
/
本文档为【Java自制手机联网游戏】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索