站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2ME 专题用Java自制手机联网游戏(2)

用Java自制手机联网游戏(2)

摘要: 用Java自制手机联网游戏(2)
<tr><td>
http:///tech/article791.html
由于手机端硬件的限制,所以,复杂的查找和处理都由配置较好服务器端处理。这样手机端可以减轻负担,专职处理界面的美观,以赢取客户的喜爱。例如,手机用户提出查分数请求时,手机向服务器发出请求“/s:user”。服务器接收到该子串,首先分离为“/s”和“user”,“/s”表示查询分数,“user”表示用户的ID。这时服务器端就调用findByGradeByUserID(),该函数利用JDBC连接数据库查询用户成绩,并将查询结果发送给客户端。
手机端编程
手机端的编程其实是MIDlet编程。MIDlet的程序流程是这样的:构造函数→startApp()→监听事件、接收命令→commandAction()方法→调用别的方法→如果是exit()命令调用pauseApp()→destroyApp()方法。以图形表示MIDlet的生命周期如图6所示。实际上,MIDlet程序的运行流程和Applet程序的运行流程差不多。
540) this.width = 540'>
图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

540) this.width = 540'>
图7 功能选择界面    图8 手写输入    图9 提交查询

从以上程序段可以看出,手机端的程序主要是控件的部署和简单按钮动作的处理。由于手机硬件限制,手机端不可能进行复杂的操作,所以,对于数据库等类型的操作应该尽量放在服务器端处理,以减轻用户负担。

数据的发送与接收

利用服务器端和客户端建立的输入、输出流,可以轻松实现数据的在客户端和服务器端的收发工作。
540) this.width = 540'>
图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,而是轻便的手机。

http:///tech/article791.html
</td></tr></table></td> </tr> <tr> <td background="/pic/split.gif" height=1></td> </tr> <tr> <td class="tdMargin1">
↑返回目录
前一篇: J2ME游戏开发教程之“铁鹰”
后一篇: 用Java自制手机联网游戏(1)