




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、畢畢 業業 設設 計計( 論論 文文)五子棋手機網絡對戰游戲的設計與實現五子棋手機網絡對戰游戲的設計與實現論文作者姓名:論文作者姓名:申請學位專業:申請學位專業:申請學位類別:申請學位類別:指指導導教教師師姓姓名名(職職稱稱):論文提交日期:論文提交日期:五子棋手機網絡對戰游戲的設計與實現五子棋手機網絡對戰游戲的設計與實現摘摘 要要在現代社會中,手機及其它無線設備越來越多的走進普通老百姓的工作和生活。隨著 3G 技術的普及與應用,基于 Java 開發的軟件在手機上的使用非常的廣泛,手機增值服務的內容也是越來越多,對豐富人們的生活內容、提供快捷的資訊起著不可忽視的作用。本文基于 J2ME 技術,
2、以計算機網絡游戲的運行流程為基礎,分模塊開發一款網絡五子棋游戲軟件。本文對以下幾點內容做了重點研究和探討:1、系統整體結構,根據設計目標,結合普通網絡游戲的運行流程,給出了系統總體設計方案,并探討了系統設計時需要用到的關鍵技術。2、手機 MIDP 客戶端的實現,MIDP 客戶端是游戲的唯一客戶端,主要功能包括連接服務器進行身份驗證、進行游戲并不斷的與服務器交換數據。3、后臺系統的設計與實現,后臺用來處理與數據庫的互聯來驗證用戶身份、處理由客戶端發送過來的數據。由于受到客觀條件的限制,本系統的測試是在三星手機模擬器上完成的,但它仍不失具一定的實用價值。關鍵詞:關鍵詞:J2ME;手機游戲;Serv
3、letThe Design and Implementation of The Gobang War Game on Cell Phone Network AbstractIn modern society, more 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 technol
4、ogy,the development of Java-based software in the use of mobile phones is very broad, mobile value-added services 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 fl
5、ow of computer network as basis, introduce a kind of gobang game on network by the sub-module method. .The 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 explor
6、es the key technology, which is used by the design of this system.(2) The implementation of the phone MIDP 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 implem
7、entation and design of background system. Background is to deal with the Internet database to verify the 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 hav
8、e some advantages.Key words: J2ME; Handset game; Servlet目目 錄錄 論文總頁數 :24 頁1 引言.12 系統綜述.13 手機游戲的現狀和關鍵技術介紹.23.1 軟件現狀.23.2 J2ME 概況.23.2.1 J2ME 的由來.23.2.2 J2ME 的 3 層體系結構及 MIDP 簡介.33.3 TOMCAT服務器介紹 .43.4 SERVLET技術介紹.54 開發環境介紹.74.1 開發環境.74.2 關于 SAMSUNG WIRELESS TOOL KIT.75 客戶端模塊的開發.75.1 綜述.75.2 程序的類結構.75.3
9、游戲的功能流程圖.85.4 游戲的實現.95.4.1 主類 Omok 的實現.95.4.2 游戲登錄界面以及操作說明界面的實現.105.4.3 游戲畫布類的實現.125.4.4 網絡連接類的實現.145.4.5 五子棋獲勝算法.156 服務器端程序的開發.176.1 數據庫的設計與實現.176.2 SERVLET程序的編寫.177 改進建議和措施.207.1 關于圖片問題.207.2 軟件測試.207.2.1 測試前的準備工作.207.2.2 進行測試.217.2.3 有待添加和完善的功能.22結 論.22參考文獻.22致 謝.23聲 明.241 1 引言引言Java 語言是美國 Sun Mi
10、crosystem 的 James Gosling、Pratrick Naughton及 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 作為 服務器,免費并且具有非常強大的功能,中間件采用java servlet 進行中間過程的處理,具有很
13、好的穩定性和可移植性,采用的數據庫則是 sql server 2000。用戶需要運行本系統客戶端軟件,輸入用戶名和密碼進行身份驗證,如果驗證成功,則可以進入游戲界面,和其他已經登錄的玩家進行游戲;如果驗證不成功,說明輸入的用戶名或者密碼錯誤,需要重新進行輸入,否則不會進入到游戲界面。系統分為三層,包括數據庫服務器層、功能層和表示層。數據庫服務器層主體是 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 概況概況.1 J2MEJ2ME 的由來的由來Java 的最大目標和特點,就是一次編寫,到處運行的平臺無關性。但是,一套標準無法適應各種不同的需求。因此,Java 技術目前共有三套,分別針對不同的平臺和應用。Standard Edition(J2SE,標準版):針對桌面端 PC 和工作站的個人和低端商務應用。 Enterprise Edition(J2EE,企業版):針對服務器端企業級應用,
16、支持Servlets, JSP 和 XML 等等。Micro Edition(J2ME,袖珍版):針對有限內存,顯示和處理能力的設備,主要是消費電子和嵌入式設備領域(這實際正是 Java 語言設計最初的目標領域)。圖 2 java 總體架構圖在消費電子和嵌入式設備領域,內存從幾百 K 到幾十 M,從沒有屏幕到Web-TV,CPU 從低功耗的嵌入式處理器到 206MHz 的 RISC 處理器,硬件條件的差異是相當大的。這就使得 J2ME 的標準需要有不同的層次和類別來適應這個復雜的領域,因此相比之下 J2ME 就比 J2SE 和 J2EE 的標準要復雜得多。因此,清楚的理解 J2ME 的體系結構
17、的劃分才能更好的理解和掌握 J2ME。.2 J2MEJ2ME 的的 3 3 層體系結構及層體系結構及 MIDPMIDP 簡介簡介J2ME 的 3 層體系結構依照各種設備的資源特性,將 J2ME 技術構架分為簡表(Profile) 、配置(Configuration)和 Java Virtual Machine(JVM)3 層,然后再進一步細分,這使 J2ME 能夠在每一類設備的限制下工作,而同時提供最低限度的 Java 語言功能性。關于 J2ME 的體系結構,可以這樣來進行總結:Configuration 的分類是根據計算能力的不同來劃分的,同類設備的計算能力相近。Config
18、uration 是一個規范,定義了這類設備的共同 Java 平臺,定義與設備無關的 Java 虛擬機和核心庫,是平臺相容性的基礎。Profile 的分類是根據設備功能劃分的,同類功能的設備其他各種硬件條件和需求也相近。Profile 是一組 API,在某一Configuration 的基礎上擴展了針對設備特定功能的 API,使得標準能夠完全適應特殊的設備,徹底發揮設備的功能。J2ME 體系的一般結構是:由 Configuration 定義的 Java 虛擬機運行于設備的宿主操作系統之上,構成整個平臺的基礎。Configuration 提供了基本的語言特性,Profile 提供針對設備的特殊功能
19、 API 和擴展類庫。應用程序的運行環境需要一個 Configuration 和至少一個 Profile,多個 Profile 可以共存,也可以疊加。MIDP(Mobile Information Device Profile)定義了針對移動信息處理設備(主要指智能手機和一部分具有無線通信功能的 PDA)的圖形界面,輸入和時間處理,持久性存儲,無線 網絡連接之上的一些消息處理(例如短消息) ,安全等等 API,并且考慮到了移動信息設備的屏幕和內存限制。類似于 J2SE 中的 Applet 框架,MIDP 提供了基于 javax.microedition.midlet 包的 MIDlet 應用程
20、序框架。應為 MIDP 提出較的比較早,目前重要的智能手機和 PDA 操作系統上都已有了相應的實現,而且應用的也比較廣泛。 3.33.3 tomcattomcat 服務器介紹服務器介紹Tomcat 是一個免費的開源的 Serlvet 容器,它是 Apache 基金會的 Jakarta項目中的一個核心項目,由 Apache,Sun 和其它一些公司及個人共同開發而成。由于有了 Sun 的參與和支持,最新的 Servlet 和 Jsp 規范總能在 Tomcat 中得到體現。Tomcat 被 JavaWorld 雜志的編輯選為 2001 年度最具創新的 java 產品,可見其在業界的地位。 由于 Ja
21、va 的跨平臺特性,基于 Java 的 Tomcat 也具有跨平臺性。與傳統的桌面應用程序不同,Tomcat 中的應用程序是一個 WAR(Web Archive)文件。WAR 是 Sun 提出的一種 Web 應用程序格式,與 JAR 類似,也是許多文件的一個壓縮包。這個包中的文件按一定目錄結構來組織:通常其根目錄下包含有 Html和 Jsp 文件或者包含這兩種文件的目錄,另外還會有一個 WEB-INF 目錄,這個目錄很重要。通常在 WEB-INF 目錄下有一個 web.xml 文件和一個 classes 目錄,web.xml 是這個應用的配置文件,而 classes 目錄下則包含編譯好的 Se
22、rvlet類和 Jsp 或 Servlet 所依賴的其它類(如 JavaBean) 。通常這些所依賴的類也可以打包成 JAR 放到 WEB-INF 下的 lib 目錄下,當然也可以放到系統的CLASSPATH 中,但那樣移植和管理起來不方便。 在 Tomcat 中,應用程序的部署很簡單,你只需將你的 WAR 放到 Tomcat 的webapp 目錄下,Tomcat 會自動檢測到這個文件,并將其解壓。你在瀏覽器中訪問這個應用的 Jsp 時,通常第一次會很慢,因為 Tomcat 要將 Jsp 轉化為Servlet 文件,然后編譯。編譯以后,訪問將會很快。另外 Tomcat 也提供了一個應用:man
23、ager,訪問這個應用需要用戶名和密碼,用戶名和密碼存儲在一個xml 文件中。通過這個應用,輔助于 Ftp,你可以在遠程通過 Web 部署和撤銷應用。當然本地也可以。 Tomcat 不僅僅是一個 Servlet 容器,它也具有傳統的 Web 服務器的功能:處理 Html 頁面。但是與 Apache 相比,它的處理靜態 Html 的能力就不如Apache。我們可以將 Tomcat 和 Apache 集成到一塊,讓 Apache 處理靜態Html,而 Tomcat 處理 Jsp 和 Servlet。這種集成只需要修改一下 Apache 和Tomcat 的配置文件即可。 基于 Tomcat 的開發其
24、實主要是 Jsp 和 Servlet 的開發,開發 Jsp 和Servlet 非常簡單,你可以用普通的文本編輯器或者 IDE,然后將其打包成 WAR即可。 Tomcat 確實是一個很好的工具,不僅僅因為其免費,功能強大,更因為其開放性。3.43.4 servletservlet 技術介紹技術介紹Servlet 是用 Java 編寫的 Server 端程序,它與協議和平臺無關。Servlet運行于 Javaenabled Web Server 中。Java Servlet 可以動態地擴展 Server的能力,并采用請求響應模式提供 Web 服務。 最早支持 Servlet 技術的是 JavaSo
25、ft 的 Java Web Server。此后,一些其它的基于 Java 的 Web Server 開始支持標準的 Servlet API。 一、Servlet 的特點Servlet 是 Java 技術對 CGI 編程的回答。Servlet 程序在服務器端運行,動態地生成 Web 頁面。與傳統的 CGI 和許多其他類似 CGI 的技術相比,Java Servlet 具有更高的效率,更容易使用,功能更強大,具有更好的可移植性,更節省投資。1、高效 在傳統的 CGI 中,每個請求都要啟動一個新的進程,如果 CGI 程序本身的執行時間較短,啟動進程所需要的開銷很可能反而超過實際執行時間。而在 Ser
26、vlet 中,每個請求由一個輕量級的 Java 線程處理(而不是重量級的操作系統進程) 。在傳統 CGI 中,如果有 N 個并發的對同一 CGI 程序的請求,則該 CGI程序的代碼在內存中重復裝載了 N 次;而對于 Servlet,處理請求的是 N 個線程,只需要一份 Servlet 類代碼。在性能優化方面,Servlet 也比 CGI 有著更多的選擇,比如緩沖以前的計算結果,保持數據庫連接的活動,等等。 2、方便 Servlet 提供了大量的實用工具例程,例如自動地解析和解碼 HTML 表單數據、讀取和設置 頭、處理 Cookie、跟蹤會話狀態等。 3、功能強大 在 Servlet 中,許多
27、使用傳統 CGI 程序很難完成的任務都可以輕松地完成。例如,Servlet 能夠直接和 Web 服務器交互,而普通的 CGI 程序不能。Servlet還能夠在各個程序之間共享數據,使得數據庫連接池之類的功能很容易實現。 4、可移植性好 Servlet 用 Java 編寫,Servlet API 具有完善的標準。因此,為 I-Planet Enterprise Server 寫的 Servlet 無需任何實質上的改動即可移植到Apache、Microsoft IIS 或者 WebStar。幾乎所有的主流服務器都直接或通過插件支持 Servlet。 5、節省投資 不僅有許多廉價甚至免費的 Web
28、服務器可供個人或小規模網站使用,而且對于現有的服務器,如果它不支持 Servlet 的話,要加上這部分功能也往往是免費的(或只需要極少的投資) 。 二、Servlet 的主要功能 Servlet 的主要功能在于交互式地瀏覽和修改數據,生成動態 Web 內容。這個過程為: 客戶端發送請求至服務器端; 服務器將請求信息發送至 Servlet;Servlet 生成響應內容并將其傳給 Server。響應內容動態生成,通常取決于客戶端的請求; 服務器將響應返回給客戶端; Servlet 看起來像是通常的 Java 程序。Servlet 導入特定的屬于 Java Servlet API 的包。因為是對象字
29、節碼,可動態地從網絡加載,可以說 Servlet對 Server 就如同 Applet 對 Client 一樣,但是,由于 Servlet 運行于 Server中,它們并不需要一個圖形用戶界面。從這個角度講,Servlet 也被稱為Faceless Object。三、JAVA Servlet 的優勢 Servlet 可以和其他資源(文件、數據庫、Applet、Java 應用程序等)交互,以生成返回給客戶端的響應內容。如果需要,還可以保存請求響應過程中的信息。 采用 Servlet,服務器可以完全授權對本地資源的訪問(如數據庫),并且Servlet 自身將會控制外部用戶的訪問數量及訪問性質。 S
30、ervlet 可以是其它服務的客戶端程序,例如,它們可以用于分布式的應用系統中,可以從本地硬盤,或者通過網絡從遠端硬盤激活 Servlet。 采用 Servlet Tag 技術,可以在 HTML 頁面中動態調用 Servlet。 Servlet API 與協議無關。它并不對傳遞它的協議有任何假設。 像所有的 Java 程序一樣,Servlet 擁有面向對象 Java 語言的所有優勢 Servlet 提供了 Java 應用程序的所有優勢可移植、穩健、易開發。使用 Servlet 的 Tag 技術,Servlet 能夠生成嵌于靜態 HTML 頁面中的動態內容。 一個 Servlet 被客戶端發送的
31、第一個請求激活,然后它將繼續運行于后臺,等待以后的請求。每個請求將生成一個新的線程,而不是一個完整的進程。多個客戶能夠在同一個進程中同時得到服務。一般來說,Servlet 進程只是在 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+ eclipse4.2 關于關于 SAMSUNGSAMSUNG Wireles
32、sWireless ToolTool KitKitSAMSUNG WTK(SAMSUNG Wireless Tool Kit)是 SAMSUNG 公司針對 J2ME 推出的用于手機和 Palm 等移動設備的軟件開發包,它通用性高,開發出的應用程序可保證能運行在大部分設備上,具有強大的功能和完善的調試手段,它提供了運行模擬器的最基本組件,是其他 IDE 需集成采用的必備元素,也可以單獨使用。5 5 客戶端模塊的開發客戶端模塊的開發5.15.1 綜述綜述客戶端部分主要劃分為 3 個界面:菜單界面,登錄界面、游戲界面。具體實現的功能為: 1、菜單界面:有如下選項:進入游戲進入到用戶登錄界面;操作說明
33、進入說明界面,說明游戲軟件的操作方法;2、登錄界面:得到用戶輸入的用戶名和密碼,向服務器提交,如果身份驗證成功,界面則跳轉到游戲界面,如果身份驗證失敗,則彈出警告窗口,說明登錄失敗原因。3、游戲界面:用戶游戲時看到的界面,負責根據需要畫圖。5.25.2 程序的類結構程序的類結構程序一共有 7 個類,程序的類結構如圖所示:圖 3 類結構圖5.35.3 游戲的功能流程圖游戲的功能流程圖進入游戲后,首先顯示的是菜單,有 2 個命令選項:進入游戲和操作說明;一個按鈕:退出程序。選擇進入游戲這個命令,則進入到用戶登錄窗口,如果登錄成功,則跳轉到游戲界面,如果登錄失敗,則跳出警告窗口,3 秒后返回到登錄窗
34、口。也可以從登錄窗口退出程序。如果選擇操作說明命令,則顯示操作說明界面,按返回按鈕,又回來主菜單。游戲的功能流程如圖所示ServerConnectorOmokCanvas:CanvasOmok.:MIDletCursor:CanvasLogo:FormHelp:FormOmokBoard: Canvas菜單進入游戲操作說明退出登錄窗口游戲說明Back警告窗口圖 4 功能流程圖5.45.4 游戲的實現游戲的實現.1 主類主類 OmokOmok 的實現的實現MIDlet 是最核心的類。MIDlet 程序有三種狀態:1、 暫停狀態2、 運行狀態3、 銷毀狀態J2ME 程序都是從 MI
35、Dlet 類開始執行。系統在執行 MIDlet 程序時,首先構造一個 MIDlet 類型的對象,然后使程序進入到暫停狀態,按照生命周期的規定,系統會自動調用 MIDlet 對象的 startApp 方法使程序進入到運行狀態,開始程序的執行。圖 5 開始界面首先,先要創建 MIDlet 類型的對象,下面來看對象的構造方法:public Omok() startCmd = new Command(Start, Command.SCREEN, 2); exitCmd = new Command(Exit, Command.EXIT, 3); theCanvas = new OmokCanvas();
36、游戲 theOne=new main(); display=Display.getDisplay(this); help=new Help(this); logo=new Logo(this); instance=this; 在這個構造器中,創建了一個 Display 對象用于顯示,然后,又創建了一個畫布的實例。Display 類有兩個最主要的作用:1、 獲得屏幕的屬性。例如屏幕是否是彩色的,以及支持的顏色數量等信息。2、 控制屏幕的顯示。例如使屏幕顯示某個指定界面或者獲得當前的顯示界面等。其中,特別是第二個作用使用的更加頻繁。當程序啟動的時候,則調用了程序的 startApp 方法,用來顯示
37、畫面:public void startApp() theCanvas.addCommand(startCmd); theCanvas.addCommand(exitCmd); theCanvas.setCommandListener(this); display.setCurrent(theOne); 這個方法的作用是把在構造器中創建的畫布對象設置為當前屏幕上需要顯示的畫面。當調用 destroyApp 這個方法的時候,則退出程序。public void destroyApp(boolean unconditional) exit(); public void exit() System.g
38、c(); notifyDestroyed(); 退出程序的時候,要實行垃圾回收,釋放掉不再使用的內存。.2 游戲登錄界面以及操作說明界面的實現游戲登錄界面以及操作說明界面的實現這兩個類的實現都是繼承了 Form 類,來添加各種組件的。下面是效果圖:圖 6 Form 界面效果圖下面先來分析 logo 類:class Logo extends Form implements CommandListener這是類的聲明,它繼承了 Form 類,同時派生了一個接口,用來產生按鈕事件。Logo(Omok midlet) super(); this.midlet = midlet;User
39、Name=new TextField(用戶名,9,TextField.ANY);UserPassword=new TextField(密 碼,9,TextField.PASSWORD);tryimg=new ImageItem(,Image.createImage(/1.png),ImageItem.LAYOUT_CENTER,image explorer);catch(java.io.IOException e)append(img);append(UserName);append(UserPassword); backCommand = new Command(登錄, Command.BA
40、CK, 1); exit = new Command(退出, Command.EXIT, 1); addCommand(backCommand); / addCommand(exit); setCommandListener(this);這是他的構造方法,創建了 2 個輸入框,并添加到 Form 上,并且還加上了2 個按鈕。Help 類的實現和它類似,因此不再詳細介紹。.3 游戲畫布類的實現游戲畫布類的實現在 J2ME 游戲編程中,Canvas 類是最常用的類之一,該類提供了獲得手機屏幕屬性、繪制界面以及事件處理等很多實用的功能。Canvas 類是 Displayable 的子
41、類,在實際的使用過程,一般都通過繼承Canvas 來利用該類提供的功能。Canvas 類是一個抽象類,繼承該類的時候必須覆蓋 paint 方法。來看游戲畫面:圖 7 游戲運行效果圖首先先看下它的構造方法:public OmokCanvas() board = new OmokBoard();/創建畫板 cursor = new Cursor();/創建光標 connector = new ServerConnector(this); setGameMode(INIT);/設置模式在它里面,創建了畫板,光標、連接器。并且設置了模式。然后來看具有流程控制作用的 setGameMode 方法:pri
42、vate void setGameMode(int gameMode) this.gameMode = gameMode; switch(gameMode) case INIT : id0 = id1 = -1;/設置標記變量初始值 row = col = 6;/初始化棋盤大小 board.init(); break; case CONNECT : Thread cthread = new Thread() public void run() repaint(); if(islogin) connect(); else loginGame(); ; cthread.start(); break
43、; case TURN0 : cursor.setLocation(row, col); break; case TURN1 : connector.receiveData(id0); break; repaint(); 在這里面,定義了 4 種狀態時所要處理的事件,在這個程序中的別的方法里,當滿足一定條件的時候,就開始設置那些狀態變量,從而實現了流程的控制。.4 網絡連接類的實現網絡連接類的實現在 J2ME 中,專門提供了一個網絡連接框架GCF。它為資源有限的設備提供了一個可擴展的、通用的 I/O 框架。GCF 是一組在 javax.microedition.io 包中定義的
44、接口。在 GCF 中共定義了七個接口 ,其中 Connection 是最基本的連接類型,且同時提供了對數據包和流連接的支持。沿著層次結構向下派生出提供更多功能的接口。在 MIDP 1.0 規范只要求設備支持 連接協議,而更新的 MIDP 2.0 規范要求同時支持 和 S,后者提供了對更安全的網絡連接的支持。下面來分析核心代碼:/打開連接 private String readPage(String url) throws IOException StringBuffer result = new StringBuffer(); Connection c = null; InputStream
45、is = null; try c = ( Connection)Connector.open(url); is = c.openInputStream(); int ch = 0; while (ch = is.read() != -1) result.append(char)ch); finally if (is != null) is.close(); if (c != null) c.close(); return result.toString();在這個方法中,首先建立了一個連接,采用流來得到數據,當數據傳輸完畢后,關閉流,關閉連接。下面的代碼則是發送數據和接收數據的時候采用多線程:
46、public void sendData(final int id1, final String data) Thread thread = new Thread() public void run() try readPage(URL+?command=sendData&id=+id1+ &data=+data); catch (IOException e) ; thread.start(); public void receiveData(final int id0) Thread thread = new Thread() public void run() receiv
47、e(id0); ; thread.start(); 在目標設備具有內存小,計算能力弱和電池供電等特點的時候,如何使應用程序高效的運行就成為開發中的一個大問題.尤其針對手機等移動信息設備時,無線通訊的特點又對我們的程序提出了更高的要求.從代碼優化的角度,在網絡編程中引入多線程就顯得十分重要。當程序運行的時候,Application Management Software(應用管理軟件)首先初始化一個 MIDlet,然后調用它的 startApp()方法使得 MIDlet 進入 active狀態,這條程序分支就是主線程,它執行其他的方法后都會返回到這個分支上來繼續執行。然而網絡連接是個可能堵塞的操
48、作,意味著它可能長時間都不返回。在三星公司的無線開發包 WTK 中模擬一段網絡連接程序運行時,WTK 會提示網絡連接工作可能會堵塞用戶輸入,需要創建另外一個線程去進行聯網操作。所以針對以上情況,采用多線程進行實現。.5 五子棋獲勝算法五子棋獲勝算法因為本系統模擬的重點是網絡連接,數據交互以及怎樣來初步實現一個簡單的手機網絡游戲,所以對于五子棋游戲的規則方面并沒有考慮太多,禁手等游戲規則都沒有考慮,而僅僅實現了五子棋的獲勝算法,這點是這次畢業設計的很大不足之處。下面這個方法就是來實現五子棋的獲勝算法:/檢測是否獲勝 public int checkStones() for (in
49、t x = 0;x 11;x+) for (int y = 0;y 999) ? 0 : idCount+1; else if (command.equals(login) String userid = getParameterValue(request, UserId); String psw = getParameterValue(request, Psw); System.out.println(userid); System.out.println(psw); String sql =select * from users where id=+userid+; try ResultS
50、et result0=ExecuteQuery(sql); if(result0.next() String password = result0.getString(password); if(password.equals(psw) dataMap.remove(String.valueOf(idCount); result = String.valueOf(idCount); System.out.println(result); idCount = (idCount 999) ? 0 : idCount+1; else result=String.valueOf(-1); else r
51、esult=String.valueOf(-1); catch(Exception e)System.out.println(訪問數據庫出錯); /斷開 else if (command.equals(disconnect) String id = getParameterValue(request, id); dataMap.put(id, E); /發送數據 else if (command.equals(sendData) String id = getParameterValue(request, id); String data = getParameterValue(request
52、, data); dataMap.put(id, data); /接收數據 else if (command.equals(receiveData) String id =getParameterValue(request, id); if (dataMap.containsKey(id) result = (String)dataMap.remove(id); PrintWriter pw = response.getWriter(); pw.print(result);/返回分配給每個客戶端分配的代號 pw.flush(); pw.close(); 在這個方法中,分別就 5 種狀態進行了分
53、別的處理,包括:用戶驗證狀態、連接狀態、發送狀態、接受狀態以及斷開狀態。客戶端在進行登錄,身份驗證的時候,狀態為 login,然后提交用戶名密碼,當這個 servlet 接收到信息后,首先查詢信息的狀態,然后進行相應的處理,這次狀態為“login”,所以提取用戶名密碼 進行查詢,如果都匹配的話,返回分配給這個客戶端的號碼,以便以后傳輸信息用。如果不匹配的話,則返回-1。身份驗證成功的客戶端,以后在每次發送消息的時候都要附帶發送之前被分配的那個號碼,因為手機是沒有ip 地址的,并且本系統的傳輸協議為 連接,為了區分發送過來的信息的來源,就必須附加一個號碼,每次解吸信息前,先提取是哪個號碼發送來的
54、信息,然后把信息放到 hashtable 中,然后等待與這個號碼相匹配的另一個號碼發送請求來取走信息。7 7 改進建議和措施改進建議和措施7.17.1 關于圖片問題關于圖片問題在編程過程中,由于沒有美工,本人又不會太多的圖片處理技術,所以有一些圖片是從 baidu 上面搜索到的,然后再進行加工,因為本題目為畢業設計,不是商業用途,所以對于侵犯版權問題,不應該存在。7.27.2 軟件測試軟件測試.1 測試前的準備工作測試前的準備工作第一步:首先必須在 PC 上安裝 J2SE SDK 1.4.2第二步:下載 SAMSUNG WTK2.0,這個程序是三星手機的軟件開發包,里面包含有很
55、多種型號的手機模擬器,我們需要的就是這個模擬器。第三步:雙擊桌面上開發包程序的快捷方式,打開開發包程序,然后打開開發包內自帶的工程,啟動模擬器,運行那個工程,測試下軟件是否安裝成功。Java 語言并沒有完全編譯成二進制可執行文件,編譯出的.class 文件是一種介于源程序和二進制之間的一種基于半解釋的字節碼,需要虛擬機來執行。它包括了所有的信息。然而這樣會導致.class 很容易被反編譯為源代碼,從而不能保護作者的知識成果。目前流行的如 decodeJAD 等反編譯工具可以以很快的速度生成源文件。如果不加以施行有效的措施,將造成嚴重的后果。由此引入混淆器的概念。混淆器將代碼中的所有變量、函數、
56、類的名稱變為簡短的英文字母代號,如果缺乏相應的函數名指示和程序注釋,即使被反編譯,也將難以閱讀。混淆器的作用不僅僅是保護代碼,它也有精簡編譯后程序大小的作用。由于以上介紹的減少變量、函數的命名長度的關系,編譯后也會從.class 文件中減少這些冗余的信息。混淆后,體積大約能減少 25%,這對當前費用較貴的無線網絡傳輸是有一定意義的。打包具體過程:游戲文件打包實際上就是生成 jar、jad 文件。wtk 中文件打包是這樣實現的:圖 8 打包效果圖.2 進行測試進行測試進行游戲系統測試的目的是發現錯誤,一個成功的測試是發現了迄今為止還沒有發現的錯誤。因為游戲系統的功能實現最終是通過
57、界面體現出來的,所以我們下面的測試將游戲系統功能測試和界面測試結合起來進行。1、進入游戲前的顯示界面 (圖 9)2、用戶登錄界面(圖 10)3、游戲界面(圖 11) 圖 9顯示界面 圖 10 登錄界面 圖 11 游戲界面測試過程中發現的 bug:1、錄界面中,輸入用戶名的時候,要先把光標移動到下面輸入框內2、如果用戶名輸入錯誤后,第二次輸入的時候則不能登錄進去3、游戲中如果用戶較多,回合較多的話,會有數量限制游戲 bug 的解決:1、由于經驗問題,這個問題還未解決2、把登錄函數轉移到登錄界面類中去3、由于技術問題,還未得到解決辦法.3 有待添加和完善的功能有待添加和完善的功能1
58、、界面設計不夠美觀。界面采用統一的方格塊,看起來很單調。游戲任務失敗和任務完成都是通過文字顯示,缺少畫面效果。2、游戲沒有時間控制模塊。3、玩家人數有限制。結結 論論程序設計實現了手機上聯網游戲的開發以及后臺的實現,具有一定的可玩性和復雜性。經過了細心的調試和排錯解決了絕大部分的問題。現在已經做出的是游戲的 1.0 版本,實現了游戲的最基本功能,還有一些在游戲中應有的功能沒有能實現,離一個完全意義上的手機網絡游戲還有很大一段的距離:1.游戲只在模擬器上運行,還沒有經過真機調試;2.游戲的選項界面沒有經過任何效果美化;3.后臺實現比較簡單 參考文獻參考文獻1 胡虛懷,楊志和,李煥.J2ME 移動
59、設備程序設計M.北京:清華大學出版社,2005。2 李振鵬,龔劍.J2ME 手機游戲開發技術詳解M.北京:清華大學出版社,2006。3 詹建飛.J2ME 開發精解M.北京:電子工業出版社,2006。4 施錚.J2ME 技術參考手冊M.北京:電子工業出版社,2004。5 微型爪哇人.JAVA 手機開發M.北京:中國鐵道出版社,2003。6 聞怡洋.J2ME MIDP 1.0/2.0 無線設備編程指南M.北京:北京大學出版社,2004。 致致 謝謝首先感謝指導老師李曉崗老師和茍智堅老師,他們在畢業設計過程中提出了指導性的方案和架構,并指引本人閱讀相關的資料和書籍,使本人在不熟悉的領域中仍能迅速掌握
60、新興的技術。感謝答辯組對畢業設計的考核,如果可以得到專家的認可將對本人的學習和工作給予極大的鼓勵。你們客觀的評價和建議將牢記在心,在今后的發展中揚長避短,更加努力的嚴格要求自己。在論文完成過程中,本人還得到了其他老師和許多同學的熱心幫助,本人向他們表示深深的謝意!最后向在百忙之中評審本文的各位專家、老師表示衷心的感謝!作者簡介姓 名: 肖松 性別: 男出生年月: 1984 年 9 月 11 日 民族: 漢E-mail:dtxs2003yahoo 聲聲 明明本論文的工作是 2007 年 2 月至 2007 年 6 月在成都信息工程學院網絡工程系完成的。文中除了特別加以標注地方外,不包含他人已經發表或撰寫過的研究
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年農業土地使用權轉讓合同
- 2025過失性解除勞動合同協議示范文本
- 2025合同范本之辦公樓裝修施工合同
- 2025年度煤炭代理銷售居間合同
- 2025電力工程施工合同書
- 2025延期借款合同協議
- 2025車庫車位買賣合同協議書
- 2025合同范本匯編
- 2025合同范本大全2
- 2025年企業專項投資基金合同標準范本
- 《服務營銷雙主動》課件
- 采油工程試題及答案
- 小學科學閱讀試題及答案
- 找最小公倍數案例北師大五年級下冊數學
- 基因組學在臨床的應用試題及答案
- 公司法公章管理制度
- 統編版2024-2025學年語文六年級下冊期中測試卷試題(有答案)
- 演出經紀人員資格備考資料2025
- 企業供應商管理制度
- 新生兒早產兒個案護理
- 2024-2025學年人教版初中物理八年級下冊期中檢測卷(第七章-第九章)
評論
0/150
提交評論