版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 成都信息工程學院</b></p><p><b> 學位論文</b></p><p> 五子棋手機網絡對戰(zhàn)游戲的設計與實現(xiàn)</p><p> 論文作者姓名:</p><p> 申請學位專業(yè):</p><p> 申請學位類別:工學學士</
2、p><p> 指導教師姓名(職稱):</p><p> 論文提交日期:</p><p> 五子棋手機網絡對戰(zhàn)游戲的設計與實現(xiàn)</p><p><b> 摘 要</b></p><p> 在現(xiàn)代社會中,手機及其它無線設備越來越多的走進普通老百姓的工作和生活。</p><
3、p> 隨著3G技術的普及與應用,基于Java開發(fā)的軟件在手機上的使用非常的廣泛,手機增值服務的內容也是越來越多,對豐富人們的生活內容、提供快捷的資訊起著不可忽視的作用。</p><p> 本文基于J2ME技術,以計算機網絡游戲的運行流程為基礎,分模塊開發(fā)一款網絡五子棋游戲軟件。</p><p> 本文對以下幾點內容做了重點研究和探討:</p><p>&
4、lt;b> 系統(tǒng)整體結構。</b></p><p> 根據(jù)設計目標,結合普通網絡游戲的運行流程,給出了系統(tǒng)總體設計方案,并探討了系統(tǒng)設計時需要用到的關鍵技術。</p><p> 手機MIDP客戶端的實現(xiàn)。</p><p> MIDP客戶端是游戲的唯一客戶端,主要功能包括連接服務器進行身份驗證、進行游戲并不斷的與服務器交換數(shù)據(jù)。</p&
5、gt;<p> 后臺系統(tǒng)的設計與實現(xiàn)。</p><p> 后臺用來處理與數(shù)據(jù)庫的互聯(lián)來驗證用戶身份、處理由客戶端發(fā)送過來的數(shù)據(jù)。</p><p> 由于受到客觀條件的限制,本系統(tǒng)的測試是在三星手機模擬器上完成的,但它仍不失具一定的實用價值。</p><p> 關鍵詞:J2ME;手機游戲;servlet</p><p>
6、 The design and implementation of gobang battle cell phone network games</p><p><b> Abstract</b></p><p> In modern society, more and more cell phones and other wireless devices com
7、e into the work and life of ordinary people. </p><p> With the popularization and application of the 3rd Generation of Digital communication technology,the development of Java-based software in the use of
8、mobile phones is very broad, mobile value-added services are more and more. It plays an import role to enrich people's lives and provide easier access to information.</p><p> Based on J2ME technology an
9、d a computer network running game flow, sub-module developing gobang game software on-line.</p><p> In this paper, the following points as a focus of study and research:</p><p> 1、The overall
10、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.</p><p
11、> 2 、The realization 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
12、. </p><p> 3.、The implementation and design of background system. Background is to deal with the Internet database to verify the identity of users, processing the data, which are sent by the clients.</p
13、><p> Due to the restrictions of objective conditions, the system's test completed in the Samsung handset simulator. But it is contrasted with a certain degree of practical value. .</p><p> K
14、ey words: J2ME; handset game; servlet</p><p><b> 目 錄</b></p><p> 論文總頁數(shù) :24頁</p><p><b> 1引言1</b></p><p><b> 2系統(tǒng)綜述1</b><
15、;/p><p> 3手機游戲的現(xiàn)狀和關鍵技術介紹2</p><p><b> 3.1軟件現(xiàn)狀2</b></p><p> 3.2 J2ME概況2</p><p> 3.2.1 J2ME的由來2</p><p> 3.2.2 J2ME的3層體系結構及MIDP簡介3</p>
16、<p> 3.3 tomcat服務器介紹4</p><p> 3.4 servlet技術介紹5</p><p> 4 開發(fā)環(huán)境介紹7</p><p><b> 4.1開發(fā)環(huán)境7</b></p><p> 4.2 關于SAMSUNG Wireless Tool Kit7</p>
17、<p> 5 客戶端模塊的開發(fā)7</p><p><b> 5.1 綜述7</b></p><p> 5.2 程序的類結構7</p><p> 5.3 游戲的功能流程圖8</p><p> 5.4 游戲的實現(xiàn)9</p><p> 5.4.1 主類Omok的實現(xiàn)
18、9</p><p> 5.4.2 游戲登錄界面以及操作說明界面的實現(xiàn)10</p><p> 5.4.3游戲畫布類的實現(xiàn)12</p><p> 5.4.4網絡連接類的實現(xiàn)14</p><p> 5.4.5五子棋獲勝算法15</p><p> 6服務器端程序的開發(fā)17</p><p&
19、gt; 6.1數(shù)據(jù)庫的設計與實現(xiàn)17</p><p> 6.2 servlet程序的編寫17</p><p> 7改進建議和措施20</p><p> 7.1關于圖片問題20</p><p> 7.2軟件測試20</p><p> 7.2.1測試前的準備工作20</p><p
20、> 7.2.2進行測試21</p><p> 7.2.3有待添加和完善的功能22</p><p><b> 結 論22</b></p><p><b> 參考文獻22</b></p><p><b> 致 謝23</b></p>
21、<p><b> 聲 明24</b></p><p><b> 1引言</b></p><p> Java語言是美國Sun Microsystem的James Gosling、Pratrick Naughton及Mike Sheridan等人于1991年精心設計出來的計算機編程語言,其構想在于實現(xiàn)使用同一種編程語言所寫
22、出來的程序可以在不同的平臺上運作。這種架構對于消費性電子產品而言是具有革命性的,因為在消費性電子產品中的處理器及操作系統(tǒng)各不相同,要在這些平臺上開發(fā)程序必須要了解各個平臺的特性,以及其提供的API使用方式,分別開發(fā)不同的版本才能執(zhí)行,影響應用程序的普及性。</p><p> 近幾年,由于微處理器性能的大幅提升,加上無線通訊技術的突破,手持式移動設備開始受到大眾的青睞。短短幾年內,手機已經升級了幾代產品,普及率逐
23、年攀升,生產效率不斷上升,產品價格比個人電腦的摩爾定律有更驚人的下調,以至手機是大多是城市居民不可缺少的一件隨身設備。繼短信、彩信等服務之后,中國移動提供基于Java的百寶箱業(yè)務,應用產品遍及商務應用、信息獲取、英漢互譯、游戲娛樂等多媒體領域。</p><p> 為了適應移動數(shù)據(jù)的發(fā)展,推動無線電子商務等業(yè)務的發(fā)展,J2ME(Java 2 Micro Edition)既用于嵌入式系統(tǒng)的Java被引入無線領域。J
24、2ME的出現(xiàn)實際上是Java技術的回歸。作為Java2平臺的一部分,J2ME與J2SE、J2EE一起,為無線應用的客戶端和服務器端建立了完整的開發(fā)、部署環(huán)境。隨著J2ME的應用,它為移動互聯(lián)引入了一種新的模型,既允許手機可以從互聯(lián)網上下載各種應用程序,并在手機創(chuàng)造可執(zhí)行環(huán)境離線運行這些程序。由于定義了可執(zhí)行下載的標準,并在手機上創(chuàng)立了可執(zhí)行環(huán)境和程序開發(fā)語言,由此,在移動通信業(yè)第一次為軟件開發(fā)商創(chuàng)造了巨大的商業(yè)機會,手機用戶在得到豐富應
25、用體驗的同時,也大大提高了運營商的網絡流量。</p><p><b> 2系統(tǒng)綜述</b></p><p> 本系統(tǒng)采用C/S結構,包括手機客戶端和服務器后臺兩個部分。</p><p> 客戶端采用j2me midp1.0函數(shù)編寫,保證了非常好的可移植性。服務器端采用了tomcat作為http服務器,免費并且具有非常強大的功能,中間件采用
26、java servlet進行中間過程的處理,具有很好的穩(wěn)定性和可移植性,采用的數(shù)據(jù)庫則是sql server 2000。</p><p> 用戶需要運行本系統(tǒng)客戶端軟件,輸入用戶名和密碼進行身份驗證,如果驗證成功,則可以進入游戲界面,和其他已經登錄的玩家進行游戲;如果驗證不成功,說明輸入的用戶名或者密碼錯誤,需要重新進行輸入,否則不會進入到游戲界面。</p><p> 系統(tǒng)分為三層,包
27、括數(shù)據(jù)庫服務器層、功能層和表示層。數(shù)據(jù)庫服務器層主體是SQL2000,功能層由Tomcat+ servlet技術實現(xiàn),表示層為前臺手機操作客戶端.總體結構如下圖所視:</p><p><b> 圖1 總體結構圖</b></p><p> 3手機游戲的現(xiàn)狀和關鍵技術介紹</p><p><b> 3.1軟件現(xiàn)狀</b>
28、</p><p> 在信息社會中,手機及其他無線設備越來越多的走進普通百姓的工作和生活,隨著信息網絡化的不斷進展,手機及其他無線設備上網絡勢在必行。但是傳統(tǒng)手機存在以下弊端:</p><p> 1. 傳統(tǒng)手機出廠時均由硬件廠商固化程序,程序不能增加、刪除,有了錯誤也不能更新、修改,若要增加新功能必須另換一部手機。</p><p> 2. 傳統(tǒng)手機訪問互聯(lián)網
29、是通過WAP(Wireless Application Protocal),所有網絡資源必須接通網絡才能在線訪問,非常耗時、費用亦很高。</p><p> 而Java技術在無線應用方面的優(yōu)勢非常明顯:</p><p> 1. 應用程序可按需下載,而不是購買由硬件商提供的套件,可升級空大。</p><p> 2. Java技術提供了一個類庫,它使的應用開發(fā)商
30、可以創(chuàng)建更為直覺、豐富的用戶界面(GUI);</p><p> 3.Java技術使網絡帶寬的應用更為有效,因為應用程序可以下載到器件上,并在本地運行,僅僅是在連接到服務器時才會占用網絡帶寬。</p><p> 3.2 J2ME概況</p><p> 3.2.1 J2ME的由來</p><p> Java的最大目標和特點,就是"
31、;一次編寫,到處運行"的平臺無關性。但是,一套標準無法適應各種不同的需求。因此,Java技術目前共有三套,分別針對不同的平臺和應用。</p><p> Standard Edition(J2SE,標準版):針對桌面端PC和工作站的個人和低端商務應用。 </p><p> Enterprise Edition(J2EE,企業(yè)版):針對服務器端企業(yè)級應用,支持Servlets,
32、JSP和XML等等。</p><p> Micro Edition(J2ME,袖珍版):針對有限內存,顯示和處理能力的設備,主要是消費電子和嵌入式設備領域(這實際正是Java語言設計最初的目標領域)。</p><p> 圖2 java總體架構圖</p><p> 在消費電子和嵌入式設備領域,內存從幾百K到幾十M,從沒有屏幕到Web-TV,CPU從低功耗的嵌入式
33、處理器到206MHz的RISC處理器,硬件條件的差異是相當大的。這就使得J2ME的標準需要有不同的層次和類別來適應這個復雜的領域,因此相比之下J2ME就比J2SE和J2EE的標準要復雜得多。因此,清楚的理解J2ME的體系結構的劃分才能更好的理解和掌握J2ME。</p><p> 3.2.2 J2ME的3層體系結構及MIDP簡介</p><p> J2ME的3層體系結構依照各種設備的資源
34、特性,將J2ME技術構架分為簡表(Profile)、配置(Configuration)和Java Virtual Machine(JVM)3層,然后再進一步細分,這使J2ME能夠在每一類設備的限制下工作,而同時提供最低限度的Java語言功能性。</p><p> 關于J2ME的體系結構,可以這樣來進行總結:Configuration的分類是根據(jù)計算能力的不同來劃分的,同類設備的計算能力相近。Configurat
35、ion是一個規(guī)范,定義了這類設備的共同Java平臺,定義與設備無關的Java虛擬機和核心庫,是平臺相容性的基礎。Profile的分類是根據(jù)設備功能劃分的,同類功能的設備其他各種硬件條件和需求也相近。Profile是一組API,在某一Configuration的基礎上擴展了針對設備特定功能的API,使得標準能夠完全適應特殊的設備,徹底發(fā)揮設備的功能。</p><p> J2ME體系的一般結構是:由Configur
36、ation定義的Java虛擬機運行于設備的宿主操作系統(tǒng)之上,構成整個平臺的基礎。Configuration提供了基本的語言特性,Profile提供針對設備的特殊功能API和擴展類庫。應用程序的運行環(huán)境需要一個Configuration和至少一個Profile,多個Profile可以共存,也可以疊加。</p><p> MIDP(Mobile Information Device Profile)定義了針對移動信
37、息處理設備(主要指智能手機和一部分具有無線通信功能的PDA)的圖形界面,輸入和時間處理,持久性存儲,無線電話網絡連接之上的一些消息處理(例如短消息),安全等等API,并且考慮到了移動信息設備的屏幕和內存限制。類似于J2SE中的Applet框架,MIDP提供了基于javax.microedition.midlet 包的MIDlet應用程序框架。</p><p> 應為MIDP提出較的比較早,目前重要的智能手機和P
38、DA操作系統(tǒng)上都已有了相應的實現(xiàn),而且應用的也比較廣泛。 </p><p> 3.3 tomcat服務器介紹</p><p> Tomcat是一個免費的開源的Serlvet容器,它是Apache基金會的Jakarta項目中的一個核心項目,由Apache,Sun和其它一些公司及個人共同開發(fā)而成。由于有了Sun的參與和支持,最新的Servlet和Jsp規(guī)范總能在Tomcat中得到體現(xiàn)。To
39、mcat被JavaWorld雜志的編輯選為2001年度最具創(chuàng)新的java產品,可見其在業(yè)界的地位。 </p><p> 由于Java的跨平臺特性,基于Java的Tomcat也具有跨平臺性。與傳統(tǒng)的桌面應用程序不同,Tomcat中的應用程序是一個WAR(Web Archive)文件。WAR是Sun提出的一種Web應用程序格式,與JAR類似,也是許多文件的一個壓縮包。這個包中的文件按一定目錄結構來組織:通常其根目錄
40、下包含有Html和Jsp文件或者包含這兩種文件的目錄,另外還會有一個WEB-INF目錄,這個目錄很重要。通常在WEB-INF目錄下有一個web.xml文件和一個classes目錄,web.xml是這個應用的配置文件,而classes目錄下則包含編譯好的Servlet類和Jsp或Servlet所依賴的其它類(如JavaBean)。通常這些所依賴的類也可以打包成JAR放到WEB-INF下的lib目錄下,當然也可以放到系統(tǒng)的CLASSPATH
41、中,但那樣移植和管理起來不方便。 </p><p> 在Tomcat中,應用程序的部署很簡單,你只需將你的WAR放到Tomcat的webapp目錄下,Tomcat會自動檢測到這個文件,并將其解壓。你在瀏覽器中訪問這個應用的Jsp時,通常第一次會很慢,因為Tomcat要將Jsp轉化為Servlet文件,然后編譯。編譯以后,訪問將會很快。另外Tomcat也提供了一個應用:manager,訪問這個應用需要用戶名和密碼
42、,用戶名和密碼存儲在一個xml文件中。通過這個應用,輔助于Ftp,你可以在遠程通過Web部署和撤銷應用。當然本地也可以。 </p><p> Tomcat不僅僅是一個Servlet容器,它也具有傳統(tǒng)的Web服務器的功能:處理Html頁面。但是與Apache相比,它的處理靜態(tài)Html的能力就不如Apache。我們可以將Tomcat和Apache集成到一塊,讓Apache處理靜態(tài)Html,而Tomcat處理Jsp和
43、Servlet。這種集成只需要修改一下Apache和Tomcat的配置文件即可。 </p><p> 基于Tomcat的開發(fā)其實主要是Jsp和Servlet的開發(fā),開發(fā)Jsp和Servlet非常簡單,你可以用普通的文本編輯器或者IDE,然后將其打包成WAR即可。 </p><p> Tomcat確實是一個很好的工具,不僅僅因為其免費,功能強大,更因為其開放性。</p>&
44、lt;p> 3.4 servlet技術介紹</p><p> Servlet是用Java編寫的Server端程序,它與協(xié)議和平臺無關。Servlet運行于Java-enabled Web Server中。Java Servlet可以動態(tài)地擴展Server的能力,并采用請求-響應模式提供Web服務。 </p><p> 最早支持Servlet技術的是JavaSoft的Java W
45、eb Server。此后,一些其它的基于Java的Web Server開始支持標準的Servlet API。 </p><p> 一、Servlet的特點</p><p> Servlet是Java技術對CGI編程的回答。Servlet程序在服務器端運行,動態(tài)地生成Web頁面。與傳統(tǒng)的CGI和許多其他類似CGI的技術相比,Java Servlet具有更高的效率,更容易使用,功能更強大,
46、具有更好的可移植性,更節(jié)省投資。</p><p><b> 1、高效 </b></p><p> 在傳統(tǒng)的CGI中,每個請求都要啟動一個新的進程,如果CGI程序本身的執(zhí)行時間較短,啟動進程所需要的開銷很可能反而超過實際執(zhí)行時間。而在 Servlet中,每個請求由一個輕量級的Java線程處理(而不是重量級的操作系統(tǒng)進程)。在傳統(tǒng)CGI中,如果有N個并發(fā)的對同一CGI
47、程序的請求,則該CGI程序的代碼在內存中重復裝載了N次;而對于Servlet,處理請求的是N個線程,只需要一份Servlet類代碼。在性能優(yōu)化方面,Servlet也比CGI有著更多的選擇,比如緩沖以前的計算結果,保持數(shù)據(jù)庫連接的活動,等等。 </p><p><b> 2、方便 </b></p><p> Servlet提供了大量的實用工具例程,例如自動地解析和解
48、碼HTML表單數(shù)據(jù)、讀取和設置HTTP頭、處理Cookie、跟蹤會話狀態(tài)等。 </p><p><b> 3、功能強大 </b></p><p> 在Servlet中,許多使用傳統(tǒng)CGI程序很難完成的任務都可以輕松地完成。例如,Servlet能夠直接和Web服務器交互,而普通的CGI程序不能。Servlet還能夠在各個程序之間共享數(shù)據(jù),使得數(shù)據(jù)庫連接池之類的功能很
49、容易實現(xiàn)。 </p><p><b> 4、可移植性好 </b></p><p> Servlet用Java編寫,Servlet API具有完善的標準。因此,為I-Planet Enterprise Server寫的Servlet無需任何實質上的改動即可移植到Apache、Microsoft IIS或者WebStar。幾乎所有的主流服務器都直接或通過插件支持Ser
50、vlet。 </p><p><b> 5、節(jié)省投資 </b></p><p> 不僅有許多廉價甚至免費的Web服務器可供個人或小規(guī)模網站使用,而且對于現(xiàn)有的服務器,如果它不支持Servlet的話,要加上這部分功能也往往是免費的(或只需要極少的投資)。 </p><p> 二、Servlet的主要功能 </p><p&
51、gt; Servlet的主要功能在于交互式地瀏覽和修改數(shù)據(jù),生成動態(tài)Web內容。這個過程為: </p><p> 客戶端發(fā)送請求至服務器端; </p><p> 服務器將請求信息發(fā)送至Servlet;</p><p> Servlet生成響應內容并將其傳給Server。響應內容動態(tài)生成,通常取決于客戶端的請求; </p><p>
52、服務器將響應返回給客戶端; </p><p> Servlet看起來像是通常的Java程序。Servlet導入特定的屬于Java Servlet API的包。因為是對象字節(jié)碼,可動態(tài)地從網絡加載,可以說Servlet對Server就如同Applet對Client一樣,但是,由于 Servlet運行于Server中,它們并不需要一個圖形用戶界面。從這個角度講,Servlet也被稱為Faceless Object。
53、</p><p> 三、JAVA Servlet的優(yōu)勢 </p><p> Servlet可以和其他資源(文件、數(shù)據(jù)庫、Applet、Java應用程序等)交互,以生成返回給客戶端的響應內容。如果需要,還可以保存請求-響應過程中的信息。 </p><p> 采用Servlet,服務器可以完全授權對本地資源的訪問(如數(shù)據(jù)庫),并且Servlet自身將會控制外部用戶
54、的訪問數(shù)量及訪問性質。 </p><p> Servlet可以是其它服務的客戶端程序,例如,它們可以用于分布式的應用系統(tǒng)中,可以從本地硬盤,或者通過網絡從遠端硬盤激活Servlet。 </p><p> 采用Servlet Tag技術,可以在HTML頁面中動態(tài)調用Servlet。 Servlet API與協(xié)議無關。它并不對傳遞它的協(xié)議有任何假設。 像所有的Java程序一樣,Servle
55、t擁有面向對象Java語言的所有優(yōu)勢 Servlet提供了Java應用程序的所有優(yōu)勢——可移植、穩(wěn)健、易開發(fā)。使用Servlet 的Tag技術,Servlet能夠生成嵌于靜態(tài)HTML頁面中的動態(tài)內容。 一個Servlet被客戶端發(fā)送的第一個請求激活,然后它將繼續(xù)運行于后臺,等待以后的請求。每個請求將生成一個新的線程,而不是一個完整的進程。多個客戶能夠在同一個進程中同時得到服務。一般來說,Servlet進程只是在Web Server卸載時
56、被卸載。 </p><p><b> 4 開發(fā)環(huán)境介紹 </b></p><p><b> 4.1開發(fā)環(huán)境</b></p><p> 操作系統(tǒng):Microsoft Windows XP</p><p> 程序語言:Java 2</p><p> 開發(fā)平臺:Java
57、 2 Micro Edition + Tomcat 5.0</p><p> 開發(fā)工具: SAMSUNG Wireless Tool Kit 2.1+ eclipse3.0.1</p><p> 4.2 關于SAMSUNG Wireless Tool Kit</p><p> SAMSUNG WTK(SAMSUNG Wireless Tool Kit)是SAM
58、SUNG公司針對J2ME推出的用于手機和Palm等移動設備的軟件開發(fā)包,它通用性高,開發(fā)出的應用程序可保證能運行在大部分設備上,具有強大的功能和完善的調試手段,它提供了運行模擬器的最基本組件,是其他IDE需集成采用的必備元素,也可以單獨使用。</p><p> 5 客戶端模塊的開發(fā)</p><p><b> 5.1 綜述</b></p><p&
59、gt; 客戶端部分主要劃分為3個界面:菜單界面,登錄界面、游戲界面。</p><p> 具體實現(xiàn)的功能為: </p><p> 1、菜單界面:有如下選項:</p><p> 進入游戲——進入到用戶登錄界面;</p><p> 操作說明——進入說明界面,說明游戲軟件的操作方法;</p><p><b>
60、; 2、登錄界面:</b></p><p> 得到用戶輸入的用戶名和密碼,向服務器提交,如果身份驗證成功,界面則跳轉到游戲界面,如果身份驗證失敗,則彈出警告窗口,說明登錄失敗原因。</p><p><b> 3、游戲界面:</b></p><p> 用戶游戲時看到的界面,負責根據(jù)需要畫圖。</p><p&
61、gt; 5.2 程序的類結構</p><p> 程序一共有7個類,程序的類結構如圖所示:</p><p><b> 圖3類結構圖</b></p><p> 5.3 游戲的功能流程圖</p><p> 進入游戲后,首先顯示的是菜單,有2個命令選項:進入游戲和操作說明;一個按鈕:退出程序。選擇進入游戲這個命令,則進
62、入到用戶登錄窗口,如果登錄成功,則跳轉到游戲界面,如果登錄失敗,則跳出警告窗口,3秒后返回到登錄窗口。也可以從登錄窗口退出程序。如果選擇操作說明命令,則顯示操作說明界面,按返回按鈕,又回來主菜單。游戲的功能流程如圖所示</p><p><b> 圖4功能流程圖</b></p><p><b> 5.4 游戲的實現(xiàn)</b></p>
63、<p> 5.4.1 主類Omok的實現(xiàn)</p><p> MIDlet是最核心的類。MIDlet程序有三種狀態(tài):</p><p><b> 1、 暫停狀態(tài)</b></p><p><b> 2、 運行狀態(tài)</b></p><p><b> 3、 銷毀狀態(tài)<
64、;/b></p><p> J2ME程序都是從MIDlet類開始執(zhí)行。系統(tǒng)在執(zhí)行MIDlet程序時,首先構造一個MIDlet類型的對象,然后使程序進入到暫停狀態(tài),按照生命周期的規(guī)定,系統(tǒng)會自動調用MIDlet對象的startApp方法使程序進入到運行狀態(tài),開始程序的執(zhí)行。</p><p><b> 圖5 開始界面</b></p><p&g
65、t; 首先,先要創(chuàng)建MIDlet類型的對象,下面來看對象的構造方法:</p><p> public Omok() {</p><p> startCmd = new Command("Start", Command.SCREEN, 2);</p><p> exitCmd = new Command("Exit",
66、 Command.EXIT, 3);</p><p> theCanvas = new OmokCanvas();</p><p> theOne=new main();</p><p> display=Display.getDisplay(this);</p><p> help=new Help(this);</p>
67、;<p> logo=new Logo(this);</p><p> instance=this;</p><p><b> }</b></p><p> 在這個構造器中,創(chuàng)建了一個Display對象用于顯示,然后,又創(chuàng)建了一個畫布的實例。</p><p> Display類有兩個最主要的作用:
68、</p><p> 1、 獲得屏幕的屬性。例如屏幕是否是彩色的,以及支持的顏色數(shù)量等信息。</p><p> 2、 控制屏幕的顯示。例如使屏幕顯示某個指定界面或者獲得當前的顯示界面等。</p><p> 其中,特別是第二個作用使用的更加頻繁。</p><p> 當程序啟動的時候,則調用了程序的startApp方法,用來顯示畫面:&
69、lt;/p><p> public void startApp() {</p><p> theCanvas.addCommand(startCmd);</p><p> theCanvas.addCommand(exitCmd);</p><p> theCanvas.setCommandListener(this);</p>
70、;<p> display.setCurrent(theOne);</p><p><b> }</b></p><p> 這個方法的作用是把在構造器中創(chuàng)建的畫布對象設置為當前屏幕上需要顯示的畫面。</p><p> 當調用destroyApp 這個方法的時候,則退出程序。</p><p> pu
71、blic void destroyApp(boolean unconditional) </p><p><b> {</b></p><p><b> exit();</b></p><p><b> }</b></p><p> public void exit()
72、 </p><p><b> {</b></p><p> System.gc();</p><p> notifyDestroyed();</p><p><b> }</b></p><p> 退出程序的時候,要實行垃圾回收,釋放掉不再使用的內存。</p&
73、gt;<p> 5.4.2 游戲登錄界面以及操作說明界面的實現(xiàn)</p><p> 這兩個類的實現(xiàn)都是繼承了Form類,來添加各種組件的。下面是效果圖:</p><p> 圖6 Form界面效果圖</p><p> 下面先來分析logo類:</p><p> class Logo extends Form im
74、plements CommandListener</p><p> 這是類的聲明,它繼承了Form類,同時派生了一個接口,用來產生按鈕事件。</p><p> Logo(Omok midlet)</p><p><b> {</b></p><p> super("");</p>
75、<p> this.midlet = midlet;</p><p> UserName=new TextField("用戶名","",9,TextField.ANY);</p><p> UserPassword=new TextField("密 碼","",9,TextField.PA
76、SSWORD);</p><p><b> try{</b></p><p> img=new ImageItem("",Image.createImage("/1.png"),ImageItem.LAYOUT_CENTER,"image explorer");}</p><p>
77、 catch(java.io.IOException e){}</p><p> append(img);</p><p> append(UserName);</p><p> append(UserPassword);</p><p> backCommand = new Command("登錄", Comm
78、and.BACK, 1);</p><p> exit = new Command("退出", Command.EXIT, 1);</p><p> addCommand(backCommand);</p><p> // addCommand(exit);</p><p> setCommandListener(
79、this);</p><p><b> }</b></p><p> 這是他的構造方法,創(chuàng)建了2個輸入框,并添加到Form上,并且還加上了2個按鈕。</p><p> Help類的實現(xiàn)和它類似,因此不再詳細介紹。</p><p> 5.4.3游戲畫布類的實現(xiàn)</p><p> 在J2ME
80、游戲編程中,Canvas類是最常用的類之一,該類提供了獲得手機屏幕屬性、繪制界面以及事件處理等很多實用的功能。</p><p> Canvas類是Displayable的子類,在實際的使用過程,一般都通過繼承Canvas來利用該類提供的功能。Canvas類是一個抽象類,繼承該類的時候必須覆蓋paint方法。來看游戲畫面:</p><p> 圖7 游戲運行效果圖</p>&
81、lt;p> 首先先看下它的構造方法:</p><p> public OmokCanvas() {</p><p> board = new OmokBoard();//創(chuàng)建畫板</p><p> cursor = new Cursor();//創(chuàng)建光標</p><p> connector = new ServerConne
82、ctor(this);</p><p> setGameMode(INIT);//設置模式</p><p><b> }</b></p><p> 在它里面,創(chuàng)建了畫板,光標、連接器。并且設置了模式。</p><p> 然后來看具有流程控制作用的setGameMode方法:</p><p>
83、; private void setGameMode(int gameMode) {</p><p> this.gameMode = gameMode;</p><p> switch(gameMode) {</p><p> case INIT : </p><p> id0 = id1 = -1;//設置標記變量初始值<
84、/p><p> row = col = 6;//初始化棋盤大小</p><p> board.init();</p><p><b> break;</b></p><p> case CONNECT : </p><p> Thread cthread = new Thread() <
85、;/p><p><b> {</b></p><p> public void run()</p><p><b> {</b></p><p> repaint();</p><p> if(islogin)</p><p> {connec
86、t();</p><p><b> }</b></p><p><b> else </b></p><p> {loginGame();</p><p><b> }</b></p><p><b> }</b><
87、/p><p><b> };</b></p><p> cthread.start();</p><p><b> break;</b></p><p> case TURN0 :</p><p> cursor.setLocation(row, col);</p
88、><p><b> break;</b></p><p> case TURN1 : </p><p> connector.receiveData(id0);</p><p><b> break;</b></p><p><b> }</b>&
89、lt;/p><p> repaint();</p><p><b> }</b></p><p> 在這里面,定義了4種狀態(tài)時所要處理的事件,在這個程序中的別的方法里,當滿足一定條件的時候,就開始設置那些狀態(tài)變量,從而實現(xiàn)了流程的控制。</p><p> 5.4.4網絡連接類的實現(xiàn)</p><p&
90、gt; 在J2ME中,專門提供了一個網絡連接框架——GCF。它為資源有限的設備提供了一個可擴展的、通用的I/O 框架。GCF 是一組在 javax.microedition.io 包中定義的接口。</p><p> 在 GCF 中共定義了七個接口 ,其中 Connection 是最基本的連接類型,且同時提供了對數(shù)據(jù)包和流連接的支持。沿著層次結構向下派生出提供更多功能的接口。在MIDP 1.0 規(guī)范只要求設備支
91、持 HTTP 連接協(xié)議,而更新的 MIDP 2.0 規(guī)范要求同時支持 HTTP 和 HTTPS,后者提供了對更安全的網絡連接的支持。</p><p> 下面來分析核心代碼:</p><p><b> //打開連接</b></p><p> private String readPage(String url) throws IOExcep
92、tion {</p><p> StringBuffer result = new StringBuffer();</p><p> HttpConnection c = null;</p><p> InputStream is = null;</p><p><b> try {</b></p>
93、<p> c = (HttpConnection)Connector.open(url);</p><p> is = c.openInputStream();</p><p> int ch = 0;</p><p> while ((ch = is.read()) != -1) {</p><p> result.a
94、ppend((char)ch);</p><p><b> }</b></p><p> } finally {</p><p> if (is != null) is.close();</p><p> if (c != null) c.close();</p><p><b&g
95、t; }</b></p><p> return result.toString();</p><p> 在這個方法中,首先建立了一個連接,采用流來得到數(shù)據(jù),當數(shù)據(jù)傳輸完畢后,關閉流,關閉連接。</p><p> 下面的代碼則是發(fā)送數(shù)據(jù)和接收數(shù)據(jù)的時候采用多線程:</p><p> public void sendDat
96、a(final int id1, final String data) {</p><p> Thread thread = new Thread() {</p><p> public void run() {</p><p><b> try {</b></p><p> readPage(URL+"
97、;?command=sendData&id="+id1+</p><p> "&data="+data);</p><p> } catch (IOException e) {</p><p><b> }</b></p><p><b> }</b&
98、gt;</p><p><b> };</b></p><p> thread.start();</p><p><b> }</b></p><p> public void receiveData(final int id0) {</p><p> Thread
99、 thread = new Thread() {</p><p> public void run() {</p><p> receive(id0);</p><p><b> }</b></p><p><b> };</b></p><p> thread.s
100、tart();</p><p><b> }</b></p><p> 在目標設備具有內存小,計算能力弱和電池供電等特點的時候,如何使應用程序高效的運行就成為開發(fā)中的一個大問題.尤其針對手機等移動信息設備時,無線通訊的特點又對我們的程序提出了更高的要求.從代碼優(yōu)化的角度,在網絡編程中引入多線程就顯得十分重要。</p><p> 當程序運行
101、的時候,Application Management Software(應用管理軟件)首先初始化一個MIDlet,然后調用它的startApp()方法使得MIDlet進入active狀態(tài),這條程序分支就是主線程,它執(zhí)行其他的方法后都會返回到這個分支上來繼續(xù)執(zhí)行。然而網絡連接是個可能堵塞的操作,意味著它可能長時間都不返回。</p><p> 在三星公司的無線開發(fā)包WTK中模擬一段網絡連接程序運行時,WTK會提示網
102、絡連接工作可能會堵塞用戶輸入,需要創(chuàng)建另外一個線程去進行聯(lián)網操作。所以針對以上情況,采用多線程進行實現(xiàn)。</p><p> 5.4.5五子棋獲勝算法</p><p> 因為本系統(tǒng)模擬的重點是網絡連接,數(shù)據(jù)交互以及怎樣來初步實現(xiàn)一個簡單的手機網絡游戲,所以對于五子棋游戲的規(guī)則方面并沒有考慮太多,禁手等游戲規(guī)則都沒有考慮,而僅僅實現(xiàn)了五子棋的獲勝算法,這點是這次畢業(yè)設計的很大不足之處。&l
103、t;/p><p> 下面這個方法就是來實現(xiàn)五子棋的獲勝算法:</p><p><b> //檢測是否獲勝</b></p><p> public int checkStones() {</p><p> for (int x = 0;x < 11;x++) {</p><p> for
104、 (int y = 0;y < 11;y++) {</p><p> if (stones[x][y] == EMPTY) continue;</p><p><b> //檢查一行</b></p><p> if (x != 0 && x != 1 && x != 10 && x !
105、= 11 &&</p><p> stones[x][y] == stones[x-2][y] &&</p><p> stones[x][y] == stones[x-1][y] &&</p><p> stones[x][y] == stones[x+1][y] &&</p>&
106、lt;p> stones[x][y] == stones[x+2][y])</p><p> return stones[x][y];</p><p><b> //檢查一列</b></p><p> if (y != 0 && y != 1 && y != 10 && y != 1
107、1 &&</p><p> stones[x][y] == stones[x][y-2] &&</p><p> stones[x][y] == stones[x][y-1] &&</p><p> stones[x][y] == stones[x][y+1] &&</p><
108、p> stones[x][y] == stones[x][y+2])</p><p> return stones[x][y];</p><p> //檢查右下方向一列</p><p> if (x != 0 && x != 1 && x != 10 && x != 11 &&</p
109、><p> y != 0 && y != 1 && y != 10 && y != 11 &&</p><p> stones[x][y] == stones[x+2][y+2] &&</p><p> stones[x][y] == stones[x+1][y+1] &&am
110、p;</p><p> stones[x][y] == stones[x-2][y-2] &&</p><p> stones[x][y] == stones[x-1][y-1])</p><p> return stones[x][y];</p><p> //檢查左下方向一列</p><p>
111、; if (x != 0 && x != 1 && x != 10 && x != 11 &&</p><p> y != 0 && y != 1 && y != 10 && y != 11 &&</p><p> stones[x][y] == stone
112、s[x+2][y-2] &&</p><p> stones[x][y] == stones[x+1][y-1] &&</p><p> stones[x][y] == stones[x-2][y+2] &&</p><p> stones[x][y] == stones[x-1][y+1])</p>
113、<p> return stones[x][y];</p><p><b> }</b></p><p><b> }</b></p><p> return -1;</p><p><b> }</b></p><p> 通過
114、在水平,垂直,斜45度方向上進行檢測,來判斷是否獲勝。</p><p> 6服務器端程序的開發(fā)</p><p> 6.1數(shù)據(jù)庫的設計與實現(xiàn)</p><p> 數(shù)據(jù)庫系統(tǒng)是一個實際可運行的存儲、維護和應用數(shù)據(jù)的軟件系統(tǒng),是存儲介質、處理對象和管理系統(tǒng)的集合體。它通常由軟件、數(shù)據(jù)庫和數(shù)據(jù)管理員組成。其軟件主要包括操作系統(tǒng)、各種宿主語言、實用程序以及數(shù)據(jù)庫管理系統(tǒng)。
115、數(shù)據(jù)庫是依照某種數(shù)據(jù)模型組織起來并存放二級存儲器中的數(shù)據(jù)集合。這些數(shù)據(jù)為多個應用服務,獨立于具體的應用程序。數(shù)據(jù)庫由數(shù)據(jù)庫管理系統(tǒng)統(tǒng)一管理,數(shù)據(jù)的插入、修改和檢索均要通過數(shù)據(jù)庫管理系統(tǒng)進行。數(shù)據(jù)庫管理系統(tǒng)是一種系統(tǒng)軟件,它的主要功能是維護數(shù)據(jù)庫并有效地訪問數(shù)據(jù)庫中任意部分數(shù)據(jù)。對數(shù)據(jù)庫的維護包括保持數(shù)據(jù)的完整性、一致性和安全性。 </p><p> 在本系統(tǒng)中,只建立了一個表users,用來存儲用戶身份信息。&
116、lt;/p><p><b> 表1用戶信息表</b></p><p> 用戶登錄表,包括以下字段:用戶名,密碼。其中用戶名就是系統(tǒng)分配給各個用戶的固定號碼,初始狀態(tài)下其密碼與其用戶名相同。例如:在本系統(tǒng)中,用戶名為“1001”,那密碼也為“1001”。</p><p> 因為本人是第一次編寫聯(lián)網的手機游戲,各方面都處于初學摸索狀態(tài),并且這方面
117、的資料在網上非常少,所以本系統(tǒng)后臺方面功能比較簡單,目前對數(shù)據(jù)庫的操作只有身份驗證這一個功能模塊。</p><p> 6.2 servlet程序的編寫</p><p> 編寫了OmokServlet這個類實現(xiàn)了數(shù)據(jù)的傳輸以及數(shù)據(jù)庫的查詢功能。</p><p> public class OmokServlet extends HttpServlet</p
118、><p> 下面來看doGet方法:</p><p> public synchronized void doGet(HttpServletRequest request,</p><p> HttpServletResponse response) throws IOException {</p><p> String command
119、 =getParameterValue(request, "command");</p><p> String result = "";</p><p><b> //連接</b></p><p> if (command.equals("connect")) {</p&
120、gt;<p> dataMap.remove(String.valueOf(idCount));</p><p> result = String.valueOf(idCount);</p><p> idCount = (idCount > 999) ? 0 : idCount+1;</p><p><b> }</b&
121、gt;</p><p> else if (command.equals("login")) {</p><p> String userid = getParameterValue(request, "UserId");</p><p> String psw = getParameterValue(request
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)論文---五子棋手機網絡對戰(zhàn)游戲的設計與實現(xiàn)
- 畢業(yè)論文范文——五子棋手機網絡對戰(zhàn)游戲的設計與實現(xiàn)
- 畢業(yè)論文范文——五子棋手機網絡對戰(zhàn)游戲的設計與實現(xiàn)
- java五子棋手機網絡對戰(zhàn)游戲的設計與實現(xiàn)(源代碼+論文)
- H2003032016_肖松_五子棋手機網絡對戰(zhàn)游戲的設計與實現(xiàn).doc
- 畢業(yè)論文---網絡五子棋游戲設計
- 五子棋對戰(zhàn)游戲
- 軟件工程畢業(yè)論文-五子棋對戰(zhàn)游戲平臺的設計與實現(xiàn)
- 五子棋游戲的設計與實現(xiàn)【畢業(yè)論文】
- 五子棋游戲設計畢業(yè)論文
- 軟件工程畢業(yè)論文-網絡對戰(zhàn)五子棋平臺的設計與實現(xiàn)
- 網絡五子棋的設計與實現(xiàn)-畢業(yè)論文
- 畢業(yè)論文——五子棋游戲設計
- 網絡對戰(zhàn)五子棋
- 基于vc的五子棋游戲設計與實現(xiàn)【畢業(yè)論文】
- java五子棋游戲畢業(yè)論文
- 基于Android的五子棋游戲設計與實現(xiàn)畢業(yè)論文.doc
- 畢業(yè)設計-- 用java實現(xiàn)五子棋網絡對戰(zhàn)系統(tǒng)
- 畢業(yè)設計---網絡五子棋游戲
- 網絡五子棋五子棋設計與實現(xiàn).doc
評論
0/150
提交評論