五子棋手機網絡對戰游戲的設計與實現 畢業論文_第1頁
五子棋手機網絡對戰游戲的設計與實現 畢業論文_第2頁
五子棋手機網絡對戰游戲的設計與實現 畢業論文_第3頁
五子棋手機網絡對戰游戲的設計與實現 畢業論文_第4頁
五子棋手機網絡對戰游戲的設計與實現 畢業論文_第5頁
已閱讀5頁,還剩25頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

五子棋手機網絡對戰游戲的設計與實現論文作者姓名:申請學位專業:網絡工程申請學位類別:工學學士論文提交日期:五子棋手機網絡對戰游戲的設計與實現摘要在現代社會中,手機及其它無線設備越來越多的走進普通老百姓的工作和生活。隨著3G技術的普及與應用,基于Java開發的軟件在手機上的使用非常的廣泛,手機增值服務的內容也是越來越多,對豐富人們的生活內容、提供快捷的資訊起著不可忽視的作用。本文基于J2ME技術,以計算機網絡游戲的運行流程為基礎,分模塊開發一款網絡五子棋游戲軟件。本文對以下幾點內容做了重點研究和探討:系統整體結構。根據設計目標,結合普通網絡游戲的運行流程,給出了系統總體設計方案,并探討了系統設計時需要用到的關鍵技術。手機MIDP客戶端的實現。MIDP客戶端是游戲的唯一客戶端,主要功能包括連接服務器進行身份驗證、進行游戲并不斷的與服務器交換數據。后臺系統的設計與實現。后臺用來處理與數據庫的互聯來驗證用戶身份、處理由客戶端發送過來的數據。由于受到客觀條件的限制,本系統的測試是在三星手機模擬器上完成的,但它仍不失具一定的實用價值。關鍵詞:J2ME;手機游戲;servlet

ThedesignandimplementationofgobangbattlecellphonenetworkgamesAbstractInmodernsociety,moreandmorecellphonesandotherwirelessdevicescomeintotheworkandlifeofordinarypeople.Withthepopularizationandapplicationofthe3rdGenerationofDigitalcommunicationtechnology,thedevelopmentofJava-basedsoftwareintheuseofmobilephonesisverybroad,mobilevalue-addedservicesaremoreandmore.Itplaysanimportroletoenrichpeople'slivesandprovideeasieraccesstoinformation.BasedonJ2MEtechnologyandacomputernetworkrunninggameflow,sub-moduledevelopinggobanggamesoftwareon-line.Inthispaper,thefollowingpointsasafocusofstudyandresearch:1、Theoverallsystemstructure.Accordingtothedesigngoals,withthegeneraloperationofthenetworkgameflow,givesthesystemdesign,andexploresthekeytechnology,whichisusedbythedesignofthissystem.2、TherealizationofthephoneMIDPclient.MIDPclientistheonlygameclient,themainfunctionsincludeconnectingtheservertocheckthestatus,playinggamesandkeepingtheexchangeofdatawiththeserver.3.、Theimplementationanddesignofbackgroundsystem.BackgroundistodealwiththeInternetdatabasetoverifytheidentityofusers,processingthedata,whicharesentbytheclients.Duetotherestrictionsofobjectiveconditions,thesystem'stestcompletedintheSamsunghandsetsimulator.Butitiscontrastedwithacertaindegreeofpracticalvalue..Keywords:J2ME;handsetgame;servlet

目錄論文總頁數:24頁TOC\o"1-3"\h\z1引言 12系統綜述 13手機游戲的現狀和關鍵技術介紹 23.1軟件現狀 23.2J2ME概況 23.2.1J2ME的由來 23.2.2J2ME的3層體系結構及MIDP簡介 33.3tomcat服務器介紹 43.4servlet技術介紹 54開發環境介紹 74.1開發環境 74.2關于SAMSUNGWirelessToolKit 75客戶端模塊的開發 75.1綜述 75.2程序的類結構 75.3游戲的功能流程圖 85.4游戲的實現 95.4.1主類Omok的實現 95.4.2游戲登錄界面以及操作說明界面的實現 105.4.3游戲畫布類的實現 125.4.4網絡連接類的實現 145.4.5五子棋獲勝算法 156服務器端程序的開發 176.1數據庫的設計與實現 176.2servlet程序的編寫 177改進建議和措施 207.1關于圖片問題 207.2軟件測試 207.2.1測試前的準備工作 207.2.2進行測試 217.2.3有待添加和完善的功能 22結論 22參考文獻 22致謝 23聲明 24第25頁共24頁1引言Java語言是美國SunMicrosystem的JamesGosling、PratrickNaughton及MikeSheridan等人于1991年精心設計出來的計算機編程語言,其構想在于實現使用同一種編程語言所寫出來的程序可以在不同的平臺上運作。這種架構對于消費性電子產品而言是具有革命性的,因為在消費性電子產品中的處理器及操作系統各不相同,要在這些平臺上開發程序必須要了解各個平臺的特性,以及其提供的API使用方式,分別開發不同的版本才能執行,影響應用程序的普及性。近幾年,由于微處理器性能的大幅提升,加上無線通訊技術的突破,手持式移動設備開始受到大眾的青睞。短短幾年內,手機已經升級了幾代產品,普及率逐年攀升,生產效率不斷上升,產品價格比個人電腦的摩爾定律有更驚人的下調,以至手機是大多是城市居民不可缺少的一件隨身設備。繼短信、彩信等服務之后,中國移動提供基于Java的百寶箱業務,應用產品遍及商務應用、信息獲取、英漢互譯、游戲娛樂等多媒體領域。為了適應移動數據的發展,推動無線電子商務等業務的發展,J2ME(Java2MicroEdition)既用于嵌入式系統的Java被引入無線領域。J2ME的出現實際上是Java技術的回歸。作為Java2平臺的一部分,J2ME與J2SE、J2EE一起,為無線應用的客戶端和服務器端建立了完整的開發、部署環境。隨著J2ME的應用,它為移動互聯引入了一種新的模型,既允許手機可以從互聯網上下載各種應用程序,并在手機創造可執行環境離線運行這些程序。由于定義了可執行下載的標準,并在手機上創立了可執行環境和程序開發語言,由此,在移動通信業第一次為軟件開發商創造了巨大的商業機會,手機用戶在得到豐富應用體驗的同時,也大大提高了運營商的網絡流量。2系統綜述本系統采用C/S結構,包括手機客戶端和服務器后臺兩個部分??蛻舳瞬捎胘2memidp1.0函數編寫,保證了非常好的可移植性。服務器端采用了tomcat作為http服務器,免費并且具有非常強大的功能,中間件采用javaservlet進行中間過程的處理,具有很好的穩定性和可移植性,采用的數據庫則是sqlserver2000。用戶需要運行本系統客戶端軟件,輸入用戶名和密碼進行身份驗證,如果驗證成功,則可以進入游戲界面,和其他已經登錄的玩家進行游戲;如果驗證不成功,說明輸入的用戶名或者密碼錯誤,需要重新進行輸入,否則不會進入到游戲界面。系統分為三層,包括數據庫服務器層、功能層和表示層。數據庫服務器層主體是SQL2000,功能層由Tomcat+servlet技術實現,表示層為前臺手機操作客戶端.總體結構如下圖所視: 圖1總體結構圖3手機游戲的現狀和關鍵技術介紹3.1軟件現狀在信息社會中,手機及其他無線設備越來越多的走進普通百姓的工作和生活,隨著信息網絡化的不斷進展,手機及其他無線設備上網絡勢在必行。但是傳統手機存在以下弊端:1.傳統手機出廠時均由硬件廠商固化程序,程序不能增加、刪除,有了錯誤也不能更新、修改,若要增加新功能必須另換一部手機。2.傳統手機訪問互聯網是通過WAP(WirelessApplicationProtocal),所有網絡資源必須接通網絡才能在線訪問,非常耗時、費用亦很高。而Java技術在無線應用方面的優勢非常明顯:1.應用程序可按需下載,而不是購買由硬件商提供的套件,可升級空大。2.Java技術提供了一個類庫,它使的應用開發商可以創建更為直覺、豐富的用戶界面(GUI);3.Java技術使網絡帶寬的應用更為有效,因為應用程序可以下載到器件上,并在本地運行,僅僅是在連接到服務器時才會占用網絡帶寬。3.2J2ME概況3.2.1J2ME的由來Java的最大目標和特點,就是"一次編寫,到處運行"的平臺無關性。但是,一套標準無法適應各種不同的需求。因此,Java技術目前共有三套,分別針對不同的平臺和應用。StandardEdition(J2SE,標準版):針對桌面端PC和工作站的個人和低端商務應用。EnterpriseEdition(J2EE,企業版):針對服務器端企業級應用,支持Servlets,JSP和XML等等。MicroEdition(J2ME,袖珍版):針對有限內存,顯示和處理能力的設備,主要是消費電子和嵌入式設備領域(這實際正是Java語言設計最初的目標領域)。圖2java總體架構圖在消費電子和嵌入式設備領域,內存從幾百K到幾十M,從沒有屏幕到Web-TV,CPU從低功耗的嵌入式處理器到206MHz的RISC處理器,硬件條件的差異是相當大的。這就使得J2ME的標準需要有不同的層次和類別來適應這個復雜的領域,因此相比之下J2ME就比J2SE和J2EE的標準要復雜得多。因此,清楚的理解J2ME的體系結構的劃分才能更好的理解和掌握J2ME。3.2.2J2ME的3層體系結構及MIDP簡介J2ME的3層體系結構依照各種設備的資源特性,將J2ME技術構架分為簡表(Profile)、配置(Configuration)和JavaVirtualMachine(JVM)3層,然后再進一步細分,這使J2ME能夠在每一類設備的限制下工作,而同時提供最低限度的Java語言功能性。關于J2ME的體系結構,可以這樣來進行總結:Configuration的分類是根據計算能力的不同來劃分的,同類設備的計算能力相近。Configuration是一個規范,定義了這類設備的共同Java平臺,定義與設備無關的Java虛擬機和核心庫,是平臺相容性的基礎。Profile的分類是根據設備功能劃分的,同類功能的設備其他各種硬件條件和需求也相近。Profile是一組API,在某一Configuration的基礎上擴展了針對設備特定功能的API,使得標準能夠完全適應特殊的設備,徹底發揮設備的功能。J2ME體系的一般結構是:由Configuration定義的Java虛擬機運行于設備的宿主操作系統之上,構成整個平臺的基礎。Configuration提供了基本的語言特性,Profile提供針對設備的特殊功能API和擴展類庫。應用程序的運行環境需要一個Configuration和至少一個Profile,多個Profile可以共存,也可以疊加。MIDP(MobileInformationDeviceProfile)定義了針對移動信息處理設備(主要指智能手機和一部分具有無線通信功能的PDA)的圖形界面,輸入和時間處理,持久性存儲,無線電話網絡連接之上的一些消息處理(例如短消息),安全等等API,并且考慮到了移動信息設備的屏幕和內存限制。類似于J2SE中的Applet框架,MIDP提供了基于javax.microedition.midlet包的MIDlet應用程序框架。應為MIDP提出較的比較早,目前重要的智能手機和PDA操作系統上都已有了相應的實現,而且應用的也比較廣泛。3.3tomcat服務器介紹Tomcat是一個免費的開源的Serlvet容器,它是Apache基金會的Jakarta項目中的一個核心項目,由Apache,Sun和其它一些公司及個人共同開發而成。由于有了Sun的參與和支持,最新的Servlet和Jsp規范總能在Tomcat中得到體現。Tomcat被JavaWorld雜志的編輯選為2001年度最具創新的java產品,可見其在業界的地位。由于Java的跨平臺特性,基于Java的Tomcat也具有跨平臺性。與傳統的桌面應用程序不同,Tomcat中的應用程序是一個WAR(WebArchive)文件。WAR是Sun提出的一種Web應用程序格式,與JAR類似,也是許多文件的一個壓縮包。這個包中的文件按一定目錄結構來組織:通常其根目錄下包含有Html和Jsp文件或者包含這兩種文件的目錄,另外還會有一個WEB-INF目錄,這個目錄很重要。通常在WEB-INF目錄下有一個web.xml文件和一個classes目錄,web.xml是這個應用的配置文件,而classes目錄下則包含編譯好的Servlet類和Jsp或Servlet所依賴的其它類(如JavaBean)。通常這些所依賴的類也可以打包成JAR放到WEB-INF下的lib目錄下,當然也可以放到系統的CLASSPATH中,但那樣移植和管理起來不方便。在Tomcat中,應用程序的部署很簡單,你只需將你的WAR放到Tomcat的webapp目錄下,Tomcat會自動檢測到這個文件,并將其解壓。你在瀏覽器中訪問這個應用的Jsp時,通常第一次會很慢,因為Tomcat要將Jsp轉化為Servlet文件,然后編譯。編譯以后,訪問將會很快。另外Tomcat也提供了一個應用:manager,訪問這個應用需要用戶名和密碼,用戶名和密碼存儲在一個xml文件中。通過這個應用,輔助于Ftp,你可以在遠程通過Web部署和撤銷應用。當然本地也可以。Tomcat不僅僅是一個Servlet容器,它也具有傳統的Web服務器的功能:處理Html頁面。但是與Apache相比,它的處理靜態Html的能力就不如Apache。我們可以將Tomcat和Apache集成到一塊,讓Apache處理靜態Html,而Tomcat處理Jsp和Servlet。這種集成只需要修改一下Apache和Tomcat的配置文件即可。基于Tomcat的開發其實主要是Jsp和Servlet的開發,開發Jsp和Servlet非常簡單,你可以用普通的文本編輯器或者IDE,然后將其打包成WAR即可。Tomcat確實是一個很好的工具,不僅僅因為其免費,功能強大,更因為其開放性。3.4servlet技術介紹Servlet是用Java編寫的Server端程序,它與協議和平臺無關。Servlet運行于Java-enabledWebServer中。JavaServlet可以動態地擴展Server的能力,并采用請求-響應模式提供Web服務。最早支持Servlet技術的是JavaSoft的JavaWebServer。此后,一些其它的基于Java的WebServer開始支持標準的ServletAPI。一、Servlet的特點Servlet是Java技術對CGI編程的回答。Servlet程序在服務器端運行,動態地生成Web頁面。與傳統的CGI和許多其他類似CGI的技術相比,JavaServlet具有更高的效率,更容易使用,功能更強大,具有更好的可移植性,更節省投資。1、高效在傳統的CGI中,每個請求都要啟動一個新的進程,如果CGI程序本身的執行時間較短,啟動進程所需要的開銷很可能反而超過實際執行時間。而在Servlet中,每個請求由一個輕量級的Java線程處理(而不是重量級的操作系統進程)。在傳統CGI中,如果有N個并發的對同一CGI程序的請求,則該CGI程序的代碼在內存中重復裝載了N次;而對于Servlet,處理請求的是N個線程,只需要一份Servlet類代碼。在性能優化方面,Servlet也比CGI有著更多的選擇,比如緩沖以前的計算結果,保持數據庫連接的活動,等等。2、方便Servlet提供了大量的實用工具例程,例如自動地解析和解碼HTML表單數據、讀取和設置HTTP頭、處理Cookie、跟蹤會話狀態等。3、功能強大在Servlet中,許多使用傳統CGI程序很難完成的任務都可以輕松地完成。例如,Servlet能夠直接和Web服務器交互,而普通的CGI程序不能。Servlet還能夠在各個程序之間共享數據,使得數據庫連接池之類的功能很容易實現。4、可移植性好Servlet用Java編寫,ServletAPI具有完善的標準。因此,為I-PlanetEnterpriseServer寫的Servlet無需任何實質上的改動即可移植到Apache、MicrosoftIIS或者WebStar。幾乎所有的主流服務器都直接或通過插件支持Servlet。5、節省投資不僅有許多廉價甚至免費的Web服務器可供個人或小規模網站使用,而且對于現有的服務器,如果它不支持Servlet的話,要加上這部分功能也往往是免費的(或只需要極少的投資)。二、Servlet的主要功能Servlet的主要功能在于交互式地瀏覽和修改數據,生成動態Web內容。這個過程為:客戶端發送請求至服務器端;服務器將請求信息發送至Servlet;Servlet生成響應內容并將其傳給Server。響應內容動態生成,通常取決于客戶端的請求;服務器將響應返回給客戶端;Servlet看起來像是通常的Java程序。Servlet導入特定的屬于JavaServletAPI的包。因為是對象字節碼,可動態地從網絡加載,可以說Servlet對Server就如同Applet對Client一樣,但是,由于Servlet運行于Server中,它們并不需要一個圖形用戶界面。從這個角度講,Servlet也被稱為FacelessObject。三、JAVAServlet的優勢Servlet可以和其他資源(文件、數據庫、Applet、Java應用程序等)交互,以生成返回給客戶端的響應內容。如果需要,還可以保存請求-響應過程中的信息。采用Servlet,服務器可以完全授權對本地資源的訪問(如數據庫),并且Servlet自身將會控制外部用戶的訪問數量及訪問性質。Servlet可以是其它服務的客戶端程序,例如,它們可以用于分布式的應用系統中,可以從本地硬盤,或者通過網絡從遠端硬盤激活Servlet。采用ServletTag技術,可以在HTML頁面中動態調用Servlet。ServletAPI與協議無關。它并不對傳遞它的協議有任何假設。像所有的Java程序一樣,Servlet擁有面向對象Java語言的所有優勢Servlet提供了Java應用程序的所有優勢——可移植、穩健、易開發。使用Servlet的Tag技術,Servlet能夠生成嵌于靜態HTML頁面中的動態內容。一個Servlet被客戶端發送的第一個請求激活,然后它將繼續運行于后臺,等待以后的請求。每個請求將生成一個新的線程,而不是一個完整的進程。多個客戶能夠在同一個進程中同時得到服務。一般來說,Servlet進程只是在WebServer卸載時被卸載。4開發環境介紹4.1開發環境操作系統:MicrosoftWindowsXP程序語言:Java2開發平臺:Java2MicroEdition+Tomcat5.0開發工具:SAMSUNGWirelessToolKit2.1+eclipse關于SAMSUNGWirelessToolKitSAMSUNGWTK(SAMSUNGWirelessToolKit)是SAMSUNG公司針對J2ME推出的用于手機和Palm等移動設備的軟件開發包,它通用性高,開發出的應用程序可保證能運行在大部分設備上,具有強大的功能和完善的調試手段,它提供了運行模擬器的最基本組件,是其他IDE需集成采用的必備元素,也可以單獨使用。5客戶端模塊的開發5.1綜述客戶端部分主要劃分為3個界面:菜單界面,登錄界面、游戲界面。具體實現的功能為:1、菜單界面:有如下選項:進入游戲——進入到用戶登錄界面;操作說明——進入說明界面,說明游戲軟件的操作方法;2、登錄界面:得到用戶輸入的用戶名和密碼,向服務器提交,如果身份驗證成功,界面則跳轉到游戲界面,如果身份驗證失敗,則彈出警告窗口,說明登錄失敗原因。3、游戲界面:用戶游戲時看到的界面,負責根據需要畫圖。5.2程序的類結構程序一共有7個類,程序的類結構如圖所示:OmokCanvas:CanvasOmokCanvas:CanvasOmok.:MIDletServerConnectorServerConnectorOmokBoard:CanvasCursor:CanvasOmokBoard:CanvasCursor:CanvasLogo:FormHelp:Form圖3類結構圖5.3游戲的功能流程圖進入游戲后,首先顯示的是菜單,有2個命令選項:進入游戲和操作說明;一個按鈕:退出程序。選擇進入游戲這個命令,則進入到用戶登錄窗口,如果登錄成功,則跳轉到游戲界面,如果登錄失敗,則跳出警告窗口,3秒后返回到登錄窗口。也可以從登錄窗口退出程序。如果選擇操作說明命令,則顯示操作說明界面,按返回按鈕,又回來主菜單。游戲的功能流程如圖所示菜單菜單進入游戲進入游戲操作說明退出退出警告窗口登錄窗口游戲說明警告窗口登錄窗口游戲說明Back游戲游戲圖4功能流程圖5.4游戲的實現5.4.1主類Omok的實現MIDlet是最核心的類。MIDlet程序有三種狀態:1、暫停狀態2、運行狀態3、銷毀狀態J2ME程序都是從MIDlet類開始執行。系統在執行MIDlet程序時,首先構造一個MIDlet類型的對象,然后使程序進入到暫停狀態,按照生命周期的規定,系統會自動調用MIDlet對象的startApp方法使程序進入到運行狀態,開始程序的執行。圖5開始界面首先,先要創建MIDlet類型的對象,下面來看對象的構造方法:publicOmok(){startCmd=newCommand("Start",Command.SCREEN,2);exitCmd=newCommand("Exit",Command.EXIT,3);theCanvas=newOmokCanvas();theOne=newmain();display=Display.getDisplay(this);help=newHelp(this);logo=newLogo(this);instance=this;}在這個構造器中,創建了一個Display對象用于顯示,然后,又創建了一個畫布的實例。Display類有兩個最主要的作用:1、獲得屏幕的屬性。例如屏幕是否是彩色的,以及支持的顏色數量等信息。2、控制屏幕的顯示。例如使屏幕顯示某個指定界面或者獲得當前的顯示界面等。其中,特別是第二個作用使用的更加頻繁。當程序啟動的時候,則調用了程序的startApp方法,用來顯示畫面:publicvoidstartApp(){theCanvas.addCommand(startCmd);theCanvas.addCommand(exitCmd);theCanvas.setCommandListener(this);display.setCurrent(theOne);}這個方法的作用是把在構造器中創建的畫布對象設置為當前屏幕上需要顯示的畫面。當調用destroyApp這個方法的時候,則退出程序。publicvoiddestroyApp(booleanunconditional){exit();}publicvoidexit(){System.gc();notifyDestroyed();}退出程序的時候,要實行垃圾回收,釋放掉不再使用的內存。5.4.2游戲登錄界面以及操作說明界面的實現這兩個類的實現都是繼承了Form類,來添加各種組件的。下面是效果圖:圖6Form界面效果圖下面先來分析logo類:classLogoextendsFormimplementsCommandListener這是類的聲明,它繼承了Form類,同時派生了一個接口,用來產生按鈕事件。Logo(Omokmidlet){super("");this.midlet=midlet;UserName=newTextField("用戶名","",9,TextField.ANY); UserPassword=newTextField("密碼","",9,TextField.PASSWORD); try{ img=newImageItem("",Image.createImage("/1.png"),ImageItem.LAYOUT_CENTER,"imageexplorer");} catch(java.io.IOExceptione){} append(img); append(UserName); append(UserPassword);backCommand=newCommand("登錄",Command.BACK,1); exit=newCommand("退出",Command.EXIT,1);addCommand(backCommand);//addCommand(exit);setCommandListener(this);}這是他的構造方法,創建了2個輸入框,并添加到Form上,并且還加上了2個按鈕。Help類的實現和它類似,因此不再詳細介紹。5.4.3游戲畫布類的實現在J2ME游戲編程中,Canvas類是最常用的類之一,該類提供了獲得手機屏幕屬性、繪制界面以及事件處理等很多實用的功能。Canvas類是Displayable的子類,在實際的使用過程,一般都通過繼承Canvas來利用該類提供的功能。Canvas類是一個抽象類,繼承該類的時候必須覆蓋paint方法。來看游戲畫面:圖7游戲運行效果圖首先先看下它的構造方法:publicOmokCanvas(){board=newOmokBoard();//創建畫板cursor=newCursor();//創建光標connector=newServerConnector(this);setGameMode(INIT);//設置模式}在它里面,創建了畫板,光標、連接器。并且設置了模式。然后來看具有流程控制作用的setGameMode方法:privatevoidsetGameMode(intgameMode){this.gameMode=gameMode;switch(gameMode){caseINIT: id0=id1=-1;//設置標記變量初始值row=col=6;//初始化棋盤大小board.init();break;caseCONNECT: Threadcthread=newThread() { publicvoidrun() { repaint(); if(islogin) {connect(); }else {loginGame(); }}};cthread.start();break;caseTURN0: cursor.setLocation(row,col);break;caseTURN1: connector.receiveData(id0);break;}repaint();}在這里面,定義了4種狀態時所要處理的事件,在這個程序中的別的方法里,當滿足一定條件的時候,就開始設置那些狀態變量,從而實現了流程的控制。5.4.4網絡連接類的實現在J2ME中,專門提供了一個網絡連接框架——GCF。它為資源有限的設備提供了一個可擴展的、通用的I/O框架。GCF是一組在javax.microedition.io包中定義的接口。在GCF中共定義了七個接口,其中Connection是最基本的連接類型,且同時提供了對數據包和流連接的支持。沿著層次結構向下派生出提供更多功能的接口。在MIDP1.0規范只要求設備支持HTTP連接協議,而更新的MIDP2.0規范要求同時支持HTTP和HTTPS,后者提供了對更安全的網絡連接的支持。下面來分析核心代碼://打開連接privateStringreadPage(Stringurl)throwsIOException{StringBufferresult=newStringBuffer();HttpConnectionc=null;InputStreamis=null;try{c=(HttpConnection)Connector.open(url);is=c.openInputStream();intch=0;while((ch=is.read())!=-1){result.append((char)ch);}}finally{if(is!=null)is.close();if(c!=null)c.close();}returnresult.toString();在這個方法中,首先建立了一個連接,采用流來得到數據,當數據傳輸完畢后,關閉流,關閉連接。下面的代碼則是發送數據和接收數據的時候采用多線程:publicvoidsendData(finalintid1,finalStringdata){Threadthread=newThread(){publicvoidrun(){try{readPage(URL+"?command=sendData&id="+id1+"&data="+data);}catch(IOExceptione){}}};thread.start();}publicvoidreceiveData(finalintid0){Threadthread=newThread(){publicvoidrun(){receive(id0);}};thread.start();}在目標設備具有內存小,計算能力弱和電池供電等特點的時候,如何使應用程序高效的運行就成為開發中的一個大問題.尤其針對手機等移動信息設備時,無線通訊的特點又對我們的程序提出了更高的要求.從代碼優化的角度,在網絡編程中引入多線程就顯得十分重要。當程序運行的時候,ApplicationManagementSoftware(應用管理軟件)首先初始化一個MIDlet,然后調用它的startApp()方法使得MIDlet進入active狀態,這條程序分支就是主線程,它執行其他的方法后都會返回到這個分支上來繼續執行。然而網絡連接是個可能堵塞的操作,意味著它可能長時間都不返回。在三星公司的無線開發包WTK中模擬一段網絡連接程序運行時,WTK會提示網絡連接工作可能會堵塞用戶輸入,需要創建另外一個線程去進行聯網操作。所以針對以上情況,采用多線程進行實現。5.4.5五子棋獲勝算法因為本系統模擬的重點是網絡連接,數據交互以及怎樣來初步實現一個簡單的手機網絡游戲,所以對于五子棋游戲的規則方面并沒有考慮太多,禁手等游戲規則都沒有考慮,而僅僅實現了五子棋的獲勝算法,這點是這次畢業設計的很大不足之處。下面這個方法就是來實現五子棋的獲勝算法://檢測是否獲勝publicintcheckStones(){for(intx=0;x<11;x++){for(inty=0;y<11;y++){if(stones[x][y]==EMPTY)continue; //檢查一行if(x!=0&&x!=1&&x!=10&&x!=11&&stones[x][y]==stones[x-2][y]&&stones[x][y]==stones[x-1][y]&&stones[x][y]==stones[x+1][y]&&stones[x][y]==stones[x+2][y])returnstones[x][y]; //檢查一列if(y!=0&&y!=1&&y!=10&&y!=11&&stones[x][y]==stones[x][y-2]&&stones[x][y]==stones[x][y-1]&&stones[x][y]==stones[x][y+1]&&stones[x][y]==stones[x][y+2])returnstones[x][y]; //檢查右下方向一列if(x!=0&&x!=1&&x!=10&&x!=11&&y!=0&&y!=1&&y!=10&&y!=11&&stones[x][y]==stones[x+2][y+2]&&stones[x][y]==stones[x+1][y+1]&&stones[x][y]==stones[x-2][y-2]&&stones[x][y]==stones[x-1][y-1])returnstones[x][y]; //檢查左下方向一列if(x!=0&&x!=1&&x!=10&&x!=11&&y!=0&&y!=1&&y!=10&&y!=11&&stones[x][y]==stones[x+2][y-2]&&stones[x][y]==stones[x+1][y-1]&&stones[x][y]==stones[x-2][y+2]&&stones[x][y]==stones[x-1][y+1])returnstones[x][y];}}return-1;}通過在水平,垂直,斜45度方向上進行檢測,來判斷是否獲勝。6服務器端程序的開發6.1數據庫的設計與實現數據庫系統是一個實際可運行的存儲、維護和應用數據的軟件系統,是存儲介質、處理對象和管理系統的集合體。它通常由軟件、數據庫和數據管理員組成。其軟件主要包括操作系統、各種宿主語言、實用程序以及數據庫管理系統。數據庫是依照某種數據模型組織起來并存放二級存儲器中的數據集合。這些數據為多個應用服務,獨立于具體的應用程序。數據庫由數據庫管理系統統一管理,數據的插入、修改和檢索均要通過數據庫管理系統進行。數據庫管理系統是一種系統軟件,它的主要功能是維護數據庫并有效地訪問數據庫中任意部分數據。對數據庫的維護包括保持數據的完整性、一致性和安全性。在本系統中,只建立了一個表users,用來存儲用戶身份信息。表1用戶信息表表名描述Users用戶登錄表用戶登錄表,包括以下字段:用戶名,密碼。其中用戶名就是系統分配給各個用戶的固定號碼,初始狀態下其密碼與其用戶名相同。例如:在本系統中,用戶名為“1001”,那密碼也為“1001”。因為本人是第一次編寫聯網的手機游戲,各方面都處于初學摸索狀態,并且這方面的資料在網上非常少,所以本系統后臺方面功能比較簡單,目前對數據庫的操作只有身份驗證這一個功能模塊。6.2servlet程序的編寫編寫了OmokServlet這個類實現了數據的傳輸以及數據庫的查詢功能。publicclassOmokServletextendsHttpServlet下面來看doGet方法:publicsynchronizedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsIOException{Stringcommand=getParameterValue(request,"command");Stringresult=""; //連接 if(command.equals("connect")){ dataMap.remove(String.valueOf(idCount));result=String.valueOf(idCount);idCount=(idCount>999)?0:idCount+1;}elseif(command.equals("login")){ Stringuserid=getParameterValue(request,"UserId");Stringpsw=getParameterValue(request,"Psw");System.out.println(userid);System.out.println(psw); Stringsql="select*fromuserswhereid='"+userid+"'"; try { ResultSetresult0=ExecuteQuery(sql); if(result0.next()) { Stringpassword=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 { result=String.valueOf(-1); }}catch(Exceptione){System.out.println("訪問數據庫出錯");}}//斷開elseif(command.equals("disconnect")){Stringid=getParameterValue(request,"id");dataMap.put(id,"E");}//發送數據elseif(command.equals("sendData")){Stringid=getParameterValue(request,"id");Stringdata=getParameterValue(request,"data");dataMap.put(id,data);}//接收數據elseif(command.equals("receiveData")){Stringid=getParameterValue(request,"id");if(dataMap.containsKey(id)){result=(String)dataMap.remove(id);}}PrintWriterpw=response.getWriter();pw.print(result);//返回分配給每個客戶

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論