亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

用Java自制手機聯網游戲

2019-11-18 12:46:36
字體:
來源:轉載
供稿:網友

  移動通信的迅速發展,使手機用戶越來越多。手機制造商諾基亞曾宣稱,計劃在2003年底之前銷售1億臺使用java軟件的移動電話。與此同時,Internet的進一步發展也急切需要用手機實現一些PC能夠完成的功能。本文介紹了一個可以在手機上運行的聯網游戲程序。通過這個程序,無論在何地,只要手機能夠上網就可以和Internet上的朋友聯網游戲(圖11)。下面對程序的一些細節做一簡要介紹,希望能給從事Java開發的技術人員一些啟示。
  J2ME簡介
  J2ME(Java 2 Micro Edition)是Java 2的一個組成部分,它與J2SE、J2EE并稱。根據Sun的定義:J2ME是一種高度優化的Java運行環境,主要針對消費類電子設備的,例如蜂窩電話和可視電話、數字機頂盒、汽車導航系統等等。J2ME技術在1999年的JavaOne Developer Conference大會上正式推出,它將Java語言的與平臺無關的特性移植到小型電子設備上,答應移動無線設備之間共享應用程序。
  J2ME的構架
  J2ME的構架如圖1、圖2所示。
   用Java自制手機聯網游戲(圖一)
  圖1 J2ME的構架1
   用Java自制手機聯網游戲(圖二)
  圖2 J2ME的構架2
  程序運行的環境
  客戶端即為手機(需支持J2ME的手機,例如motorola 388)用戶,編程環境是windows 2000 server + MotoJ2SDK+JDK1.3.1+MS SQL server2000,服務器端為Windows 2000 server+JDK1.3.1。
  J2ME編程流程
  以MotoJ2SDK的開發過程為例,其流程如下所示:
   用Java自制手機聯網游戲(圖三)
  圖3 J2ME編程流程
  程序簡介
  服務器端代碼的編寫
  客戶端和服務器端采用Socket連接。服務器端需要時刻監聽客戶的請求(如圖4),一旦有客戶需求,它就需要馬上響應(如圖5),并做出相應的處理,然后將結果返回給客戶,客戶顯示服務器處理結果(如圖10)。
   用Java自制手機聯網游戲(圖四)
  圖4 服務器監聽8000端口
   用Java自制手機聯網游戲(圖五)
  圖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程序的運行流程差不多。
   用Java自制手機聯網游戲(圖六)
  圖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
   用Java自制手機聯網游戲(圖七)
  圖7 功能選擇界面圖8 手寫輸入圖9 提交查詢
  從以上程序段可以看出,手機端的程序主要是控件的部署和簡單按鈕動作的處理。由于手機硬件限制,手機端不可能進行復雜的操作,所以,對于數據庫等類型的操作應該盡量放在服務器端處理,以減輕用戶負擔。
  數據的發送與接收
  利用服務器端和客戶端建立的輸入、輸出流,可以輕松實現數據的在客戶端和服務器端的收發工作。
  用Java自制手機聯網游戲(圖八)
  圖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,而是輕便的手機。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文字幕精品影院| 欧美亚洲视频一区二区| 4388成人网| 97精品国产97久久久久久免费| 国产精品久久婷婷六月丁香| 国产精自产拍久久久久久蜜| 亚洲精品永久免费| 欧美最近摘花xxxx摘花| 91亚洲va在线va天堂va国| 国产精品夫妻激情| 亚洲最大的免费| 国产精品扒开腿爽爽爽视频| 国产成人高清激情视频在线观看| 韩国欧美亚洲国产| 国产精品久久久久久久电影| 国产精品午夜一区二区欲梦| 国产在线高清精品| 亚洲自拍偷拍区| 久久99精品久久久久久噜噜| 亚洲日本中文字幕免费在线不卡| 久久综合久久八八| 久久网福利资源网站| 国产亚洲xxx| 81精品国产乱码久久久久久| 亚洲色图色老头| 欧美激情videoshd| 亚洲午夜精品久久久久久久久久久久| 亚洲色图18p| 久久精品久久精品亚洲人| 国产精品福利在线观看| 国产精品免费一区豆花| 亚洲人成电影在线观看天堂色| 欧美激情影音先锋| 国产午夜精品全部视频播放| 国产亚洲精品成人av久久ww| 米奇精品一区二区三区在线观看| 亚洲va码欧洲m码| 久久精品国产成人| 日韩视频中文字幕| 97国产精品视频| 国产精品电影网| 久久久久久国产精品久久| 日韩中文字幕在线播放| 久久99视频免费| 欧美诱惑福利视频| 久久91精品国产| 亚洲男人天堂久| 国产精品美乳在线观看| 日韩欧美精品在线观看| 色爱av美腿丝袜综合粉嫩av| 日韩成人av一区| 91久久夜色精品国产网站| 国产亚洲精品成人av久久ww| 欧美国产欧美亚洲国产日韩mv天天看完整| 午夜伦理精品一区| 92版电视剧仙鹤神针在线观看| 精品自在线视频| 狠狠爱在线视频一区| 久久中文字幕在线视频| 成人自拍性视频| 成人精品一区二区三区电影黑人| 国产精品自产拍高潮在线观看| 久久久这里只有精品视频| 亚洲永久在线观看| 青青草原成人在线视频| 久久精品国亚洲| 精品国产精品三级精品av网址| 日日摸夜夜添一区| 97人人模人人爽人人喊中文字| 精品成人国产在线观看男人呻吟| 欧美电影在线播放| 97免费在线视频| 久久精品视频中文字幕| 91在线免费观看网站| 国产亚洲欧洲高清一区| 51久久精品夜色国产麻豆| 亚洲精品国产综合区久久久久久久| 欧美日韩一区二区在线播放| 久久免费视频在线观看| 国产精品欧美亚洲777777| 尤物yw午夜国产精品视频| 亚洲精品久久久久久久久久久| 成人激情春色网| 欧美午夜久久久| 国自在线精品视频| 亚洲综合国产精品| 91禁国产网站| 国产精品入口夜色视频大尺度| 精品亚洲夜色av98在线观看| 国产精品视频免费观看www| 91久久精品美女| 成人啪啪免费看| 欧美极品欧美精品欧美视频| 欧美电影《睫毛膏》| 欧美成人小视频| 国产精品久久久久久婷婷天堂| 国产精品va在线播放我和闺蜜| 伊人久久久久久久久久久| 日韩三级影视基地| 国产香蕉精品视频一区二区三区| 国产午夜精品麻豆| 欧美激情啊啊啊| 日韩国产高清污视频在线观看| 亚洲片在线资源| 成人激情电影一区二区| 91av在线播放视频| 亚洲国产成人91精品| 欧美视频在线观看免费| 最近2019中文字幕大全第二页| 亚洲视频第一页| 欧美高清电影在线看| 92国产精品久久久久首页| 国产精品精品久久久| 91精品国产综合久久久久久蜜臀| 日韩av网站在线| 日韩av快播网址| 精品国产一区二区三区久久久狼| 国产精品盗摄久久久| 国产精品第8页| 国产精品一区二区在线| 精品国产乱码久久久久久婷婷| 欧美日韩成人免费| 久久精品视频在线播放| 国产成人精品免高潮在线观看| 亚洲高清不卡av| 久久久之久亚州精品露出| 国模极品一区二区三区| 国产精品pans私拍| 夜夜狂射影院欧美极品| 久久久久久亚洲| 美女撒尿一区二区三区| 91精品久久久久久久久| 97超级碰碰人国产在线观看| 国产精品久久久久久久久粉嫩av| 色妞色视频一区二区三区四区| 高跟丝袜欧美一区| 日韩视频中文字幕| 国产精品高潮呻吟视频| 欧美成人免费全部观看天天性色| 亚洲精品按摩视频| 日韩国产精品视频| 在线看片第一页欧美| 久久久精品久久久久| 这里只有精品在线观看| 亚洲午夜女主播在线直播| 国产精品丝袜一区二区三区| 亚洲日韩第一页| 成人中心免费视频| 国产成人一区二| 精品视频www| 久久久久久久久久亚洲| 国产精品电影网站| 中文字幕欧美国内| 欧美在线亚洲一区| 国产精品高清免费在线观看| 国产精品久久久久久av福利| 97超级碰在线看视频免费在线看| 日韩国产在线看| 国产亚洲精品久久久优势| 亚洲国产精品福利| 668精品在线视频| 日韩一二三在线视频播| 久久久久99精品久久久久| 欧美日本在线视频中文字字幕|