版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
PAGE22《JAVA游戲開發(fā)》課程設(shè)計(jì)報告題目網(wǎng)絡(luò)益智游戲姓名:云紅衛(wèi)學(xué)號:081012130專業(yè):軟件技術(shù)班級:軟件082計(jì)算機(jī)科學(xué)與技術(shù)系2009年6月目錄TOC\o"1-2"\h\z\u1實(shí)踐過程概述 42課程設(shè)計(jì)題目描述 43系統(tǒng)需求分析與設(shè)計(jì) 43.1系統(tǒng)需求分析 43.2系統(tǒng)設(shè)計(jì) 44系統(tǒng)測試和使用說明 74.1系統(tǒng)測試 74.2系統(tǒng)使用說明 85課程設(shè)計(jì)總結(jié) 85.1遇到的問題和解決方法 85.2心得體會 96參考文獻(xiàn) 97附錄 10
網(wǎng)絡(luò)益智游戲1實(shí)踐過程概述此次軟件技術(shù)專業(yè)JAVA游戲開發(fā)課程設(shè)計(jì)于2009年6月在實(shí)驗(yàn)樓三樓機(jī)房進(jìn)行,持續(xù)時間為兩周。本次課程設(shè)計(jì)主要是利用所學(xué)的面向?qū)ο蟪绦蛟O(shè)計(jì)語言——JAVA來編寫程序,實(shí)現(xiàn)特定功能,以加深對JAVA的理解。2課程設(shè)計(jì)題目描述我們設(shè)計(jì)的網(wǎng)絡(luò)益智游戲:是一臺計(jì)算機(jī)做服務(wù)器產(chǎn)生一個隨機(jī)數(shù)和隨機(jī)字母,另一臺計(jì)算機(jī)做客戶端來猜。3系統(tǒng)需求分析與設(shè)計(jì)3.1系統(tǒng)需求分析隨著現(xiàn)在生活節(jié)奏的不斷加快,現(xiàn)在許多的人們在工作之余,需要通過一些益智小游戲,來調(diào)節(jié)一下自己的情緒,釋放一下自己的疲勞。而網(wǎng)絡(luò)益智游戲正好符合人們的要求,它不需要你過多的去思考答案,只是輕松一下緊張的神經(jīng),放松一下心情,就像開心農(nóng)場一樣,在人們的工作之余調(diào)節(jié)一下。3.2系統(tǒng)設(shè)計(jì)3.2.1系統(tǒng)總體設(shè)計(jì)系統(tǒng)功能分析本系統(tǒng)要用到以下的Java編程技術(shù)實(shí)現(xiàn)的功能:①網(wǎng)絡(luò)功能:這一程序?qū)⒂梢粋€服務(wù)器程序和一個客戶端程序構(gòu)成??蛻舳擞脕聿聹y隨機(jī)字母和隨機(jī)數(shù)的大小。服務(wù)器用來產(chǎn)生隨機(jī)字母和隨機(jī)數(shù),來確定是否猜中。②多線程功能:當(dāng)客戶端要求與服務(wù)器端建立連接時,服務(wù)器端就將用到多線程功能,為每一個建立起來的連接創(chuàng)建一個線程。3.2.2程序詳細(xì)設(shè)計(jì)(1)程序框架本系統(tǒng)的程序框架主要包括服務(wù)器端和客戶端兩部分。服務(wù)器端服務(wù)器端通過類和方法來產(chǎn)生隨機(jī)字母和隨機(jī)數(shù),來判斷客戶端送過來的答案是否正確??蛻舳丝蛻舳送ㄟ^類和方法來連接服務(wù)器,并把猜測的答案發(fā)送到服務(wù)器,并接受服務(wù)器判斷之后的結(jié)果?;绢惖脑O(shè)計(jì):Server類Server服務(wù)器類,其中定義了6個成員變量和5個成員方法。serv變量用于存儲套接字,port變量存儲端口號,info數(shù)組存放接收到的數(shù)據(jù)包中的信息,rec變量存儲接收到的數(shù)據(jù)包,snd變量存儲要發(fā)送的數(shù)據(jù)包,msg變量存儲要發(fā)送或提取出的信息。main()方法是主方法,用于創(chuàng)建套接字,選擇要進(jìn)行的游戲;guessZimu()方法用于進(jìn)行猜字母游戲;guessPro()方法用于進(jìn)行猜大小游戲;judge()方法用于判斷試猜答案的匹配情況,并將結(jié)果返回給客戶端;getZimu()方法是用來生成隨機(jī)字母。在main()方法中,首先將參數(shù)轉(zhuǎn)化為端口號,據(jù)此創(chuàng)建一個套接字。然后等待客戶端的數(shù)據(jù)包,收到的第1個數(shù)據(jù)包中包含的是該客戶端的IP地址,將其輸出。接著,就開始與客戶端進(jìn)行交互。先發(fā)送消息,讓客戶端選擇要玩的游戲,客戶端將作出的選擇封裝在數(shù)據(jù)包中發(fā)回。如果客戶但回復(fù)的是“quit”指令,則終止程序,關(guān)閉套接字;如果是“1”,代表選擇猜字母游戲,調(diào)用guessZimu()方法;如果是“2”,代表選擇猜大小游戲,調(diào)用guessPro()方法。GuessZimu()方法是進(jìn)行猜數(shù)字的游戲,先調(diào)用getZimu()方法,生成一個隨機(jī)字母,并輸出。游戲者有10次試猜機(jī)會,每次接收到包含試猜答案的數(shù)據(jù)包后,都先把試猜答案輸出,再調(diào)用judge()方法判斷答案的匹配情況。如果答案完全匹配,返回答案正確的提示信息,否則繼續(xù)進(jìn)行游戲。如果超過10次未猜對,也結(jié)束游戲,并向客戶端返回正確答案。judge()方法是判斷試猜答案與正確答案匹配情況的方法,組合答案匹配情況的信息,存儲到字符串msg中,并封裝到數(shù)據(jù)包發(fā)送給客戶端。如果答案完全匹配,則返回1,否則返回0。getZimu()方法是用來生成隨機(jī)數(shù)序列的,它創(chuàng)建了一個Random類對象,并調(diào)用它的nextInt()方法來生成隨機(jī)數(shù)。每次生成的隨機(jī)數(shù),都要與已生成隨機(jī)數(shù)比較,如果有重復(fù),則重新生成,直到不與已生成的隨機(jī)數(shù)重復(fù)。guessPro()方法是用來進(jìn)行猜大小游戲的,它創(chuàng)建了一個Random類對象,并調(diào)用它的nextInt()方法來生成一個0~100之間的隨機(jī)數(shù),存放到num變量中,并輸出。游戲者有10次試猜機(jī)會,每次接收到包含試猜答案的數(shù)據(jù)包后,都先把試猜答案輸出,再將其轉(zhuǎn)化為int型數(shù)與num比較大小,根據(jù)大小情況向客戶端返回相應(yīng)提示信息,同時也在服務(wù)器端輸出。如果答案完全匹配,返回答案正確的提示信息,否則繼續(xù)進(jìn)行游戲。如果超過10次未猜對,也結(jié)束游戲,并向客戶端返回正確答案。Client類Client類其中定義了10個成員變量和4個成員方法。serv變量用于存儲套接字,port變量存儲端口號,info數(shù)組存放接收到的數(shù)據(jù)包中的信息,rec變量存儲接收到的數(shù)據(jù)包,snd變量存儲要發(fā)送的數(shù)據(jù)包,msg變量存儲要發(fā)送或提取出的信息,localHost變量存儲本地主機(jī)的IP地址,host變量存儲服務(wù)器的IP地址,IP變量是服務(wù)器IP地址的字符串形式,IPAddr數(shù)組是服務(wù)器IP地址的字節(jié)數(shù)組形式。main()方法是主方法,用于創(chuàng)建套接字,選擇游戲,控制程序的終止;playGuessZimu()方法是進(jìn)行猜字母游戲的方法;playGuessPro()方法是進(jìn)行猜大小游戲的方法;toIPAddr()方法用于將字符串形式的IP地址轉(zhuǎn)換為字節(jié)數(shù)組形式。在main()方法中,首先調(diào)用toIPAddr()方法,將存儲服務(wù)器IP地址第1個參數(shù),轉(zhuǎn)存到字節(jié)數(shù)組中,再把第2個參數(shù)轉(zhuǎn)化為端口后,據(jù)此創(chuàng)建一個套接字和存儲服務(wù)器地址的InetAddress類對象host。然后調(diào)用InetAddress類對象的getLocalHost()方法,獲得本機(jī)IP地址,并傳送給服務(wù)器,告知服務(wù)器要加入游戲。然后,接收服務(wù)器發(fā)來的數(shù)據(jù)包,根據(jù)其中的提示信息,選擇游戲或退出程序。如果輸入的是“quit”指令,則終止程序,關(guān)閉套接字;如果輸入的是1,選擇玩猜字母游戲,調(diào)用playGuessZimu()方法;如果輸入的是2,選擇玩猜大小游戲,調(diào)用playGuessPro()方法。playGuessZimu()方法負(fù)責(zé)猜字母游戲的發(fā)送和接收,每次試猜,它都完成以下過程:將鍵盤鍵入的數(shù)據(jù)封裝到數(shù)據(jù)包,發(fā)送給服務(wù)器,再接收服務(wù)器的回復(fù)。提取其中的匹配情況信息,并輸出,再把存儲試猜次數(shù)的cnt變量加1。如果完全匹配,輸出答案正確的提示信息,終止游戲,否則繼續(xù)游戲。如果已經(jīng)試猜10次,將服務(wù)器返回的正確答案輸出,再終止游戲。playGuessPro()方法負(fù)責(zé)猜大小游戲的發(fā)送和接收,其運(yùn)行與處理過程與playGuessZimu()方法類似。toIPAddr()方法將一個存儲IP地址的字符串轉(zhuǎn)化為字節(jié)數(shù)組。它從字符串的尾部開始向前搜索,在遇到“.”號前所搜索到的數(shù)字都是屬于IP地址的某一段,將它累加到變量t中。直到遇到“.”號,將t清零后重新開始累加。4系統(tǒng)測試和使用說明4.1系統(tǒng)測試使用JDK運(yùn)行程序時,將server子目錄和client子目錄下分別放在兩臺計(jì)算機(jī)上。分別用來做服務(wù)器和客戶端。在服務(wù)器端的計(jì)算機(jī)上打開一個DOS窗口,使用命令:JavacServer.java用來編譯服務(wù)器上的源代碼。使用命令:javaServer6666運(yùn)行服務(wù)器程序Server,啟動服務(wù)器端,DOS窗口顯示:網(wǎng)絡(luò)益智游戲——服務(wù)器,如圖5所示:圖5服務(wù)器運(yùn)行界面在另一臺客戶端的計(jì)算機(jī)上打開另一個DOS窗口,輸入命令:javacClient.java進(jìn)行編譯然后輸入命令:javaClient26666運(yùn)行第客戶端程序,Client執(zhí)行后,windows窗口會顯示如圖6所示:圖6客戶端程序的運(yùn)行界面4.2系統(tǒng)使用說明由于字母和數(shù)字都是隨機(jī)產(chǎn)生的,我們猜測字母的時候只能依靠我們子的運(yùn)氣去隨機(jī)猜測,猜數(shù)字大小的時候,我們可以根據(jù)服務(wù)器給我們發(fā)過來的信息,來猜測。5課程設(shè)計(jì)總結(jié)5.1遇到的問題和解決方法在用JAVA編寫程序時,我遇到了很多困難,如怎樣用Socket類實(shí)現(xiàn)客戶端和服務(wù)器端的通信,怎樣來把字符串轉(zhuǎn)換為一個個的字符。通過查閱相關(guān)書籍以及在網(wǎng)上搜索資料,我們了解到要使用類中的MessageListenning來負(fù)責(zé)偵聽客戶端的消息,使用Thread類創(chuàng)建線程接收客戶端發(fā)出的消息,使用MulticastSendingThreas類向客戶端廣播消息。在本系統(tǒng)中,我們用到了前者。設(shè)計(jì)是以Java獨(dú)立應(yīng)用程序來實(shí)現(xiàn)的,程序中要捕獲異常,就要用到多種捕獲異常類,這些類是在J2SE編程環(huán)境下自動引入的java.lang包類的異常類。5.2心得體會在這次的面向?qū)ο蟪绦蛟O(shè)計(jì)中,我主要運(yùn)用了JAVA語言的多線程、異常處理、網(wǎng)絡(luò)傳輸?shù)?,綜合運(yùn)用了JAVA語言。我深刻感受到了面向?qū)ο笳Z言中類庫的強(qiáng)大功能,掌握了運(yùn)用JAVA中的類實(shí)現(xiàn)某些基本功能,并學(xué)會了自己查詢使用類的方法,為以后的面向?qū)ο笳Z言的自學(xué)奠定了基礎(chǔ)。這次設(shè)計(jì)中,再一次讓我感受到了網(wǎng)絡(luò)通信中服務(wù)器和客戶相互通信的特點(diǎn),同時也加深了對網(wǎng)絡(luò)通信知識的理解。通過這次為時二周的課程設(shè)計(jì),我學(xué)到了很多的東西,下面就這在這次課程設(shè)計(jì)中的心得體會總結(jié)如下:在這次的面向?qū)ο蟪绦蛟O(shè)計(jì)中,主要是運(yùn)用JAVA語言來編寫,并可運(yùn)用其他的技術(shù)。在我的系統(tǒng)中,還采用了多線程、異常處理、網(wǎng)絡(luò)傳輸?shù)燃夹g(shù),而這些知識都是我們沒有學(xué)過的,這就要求我們?nèi)ゲ殚喯嚓P(guān)書籍。正因?yàn)檫@樣,才鍛煉了我的自學(xué)能力,為以后的學(xué)習(xí)打下了基礎(chǔ)。這次設(shè)計(jì)中,我深刻感受到了面向?qū)ο笳Z言中類庫的強(qiáng)大功能,掌握了運(yùn)用JAVA中的類實(shí)現(xiàn)某些基本功能,并學(xué)會了自己查詢使用類的方法,為以后的面向?qū)ο笳Z言的自學(xué)奠定了基礎(chǔ)。同時,我也感受到了網(wǎng)絡(luò)通信中服務(wù)器和客戶相互通信的特點(diǎn),加深了對網(wǎng)絡(luò)通信知識的理解,拓寬了我的知識面。通過二周的努力,這次課程設(shè)計(jì)圓滿的結(jié)束了,在這個過程中,我學(xué)到了很多的知識,同時也非常感謝杭志老師幫助與指導(dǎo)。在以后的學(xué)習(xí)中,我會更加努力的學(xué)好專業(yè)知識,并將所學(xué)知識用于實(shí)踐當(dāng)中去,以便牢固掌握知識。6參考文獻(xiàn)[1]陸光義,先鋒.Java游戲編程導(dǎo)學(xué).北京:清華大學(xué)出版社,2004[2]飛思科技產(chǎn)品研發(fā)中心.精通Java.北京:電子工業(yè)出版社,2004[3]朱福喜等.Java項(xiàng)目設(shè)計(jì)與開發(fā)范例.電子工業(yè)出版社,2005[4]RobertC.Martin著,黃曉春譯.UMLFORJAVAPROGRAMMERS.清華大學(xué)出版社,20047附錄(1)基本類的程序代碼:①Server類的代碼:import.*;importjava.io.*;importjava.util.*;importjava.lang.String.*;//服務(wù)器類publicclassServer{ //存儲套接字 staticDatagramSocketserv; //存儲端口號 staticintport; //存放接收到的數(shù)據(jù)包中的信息 staticbyte[]info=newbyte[1000]; //存儲接收到的數(shù)據(jù)包 staticDatagramPacketrec=newDatagramPacket(info,info.length); //存儲要發(fā)送的數(shù)據(jù)包 staticDatagramPacketsnd; //存儲要發(fā)送或提取出的信息 staticStringmsg; //主方法 publicstaticvoidmain(String[]args){ System.out.println("網(wǎng)絡(luò)益智游戲——服務(wù)器"); try{ //將第1個參數(shù)轉(zhuǎn)化為端口號 port=(int)Float.parseFloat(args[0]); //創(chuàng)建套接字 serv=newDatagramSocket(port); //等待客戶端連接 serv.receive(rec); //輸出加入游戲的計(jì)算機(jī)的IP地址 msg=newString(rec.getData(),0,rec.getLength()); System.out.println(msg+"加入游戲"); while(true){ //發(fā)送消息,讓客戶端選擇要玩的游戲 msg="請選擇游戲:1.猜字母2.猜大小"; //數(shù)據(jù)封裝 byte[]buf=msg.getBytes(); snd=newDatagramPacket(buf,buf.length,rec.getAddress(),rec.getPort()); serv.send(snd); //發(fā)送 serv.receive(rec); //接收客戶端的回復(fù) msg=newString(rec.getData(),0,rec.getLength()); //如果是“quit”指令,終止程序 if(pareTo("quit")==0){ break; } //如果是“1”,選擇猜數(shù)字游戲 if(pareTo("1")==0){ guessZimu(); } //是“2”,選擇猜大小游戲 else{ guessPro(); } } //關(guān)閉套接字 System.out.println("斷開連接……"); serv.close(); }catch(SocketExceptionse){ se.printStackTrace(); }catch(IOExceptionie){ ie.printStackTrace(); } } //猜字母游戲的方法staticvoidguessZimu(){//儲存生成的隨機(jī)字母charzimu;//儲存客戶端發(fā)送來的答案charans=0;inti;System.out.println("開始進(jìn)行猜字母游戲……");//生成隨機(jī)的字母zimu=getZimu();//輸出生成的隨機(jī)字母System.out.println(zimu+"");System.out.println(ans+"");//進(jìn)行游戲for(i=1;i<=10;i++){//接受客戶端發(fā)來的數(shù)據(jù)包try{serv.receive(rec);}catch(IOExceptionie){ie.printStackTrace();}//數(shù)據(jù)包中提取答案msg=newString(rec.getData(),0,rec.getLength());char[]chars=msg.toCharArray();ans=chars[0];//輸出答案System.out.println("第"+i+"次的答案:");System.out.println(ans+"");//調(diào)用judge()方法判斷答案的匹配情況if(judge(zimu,ans)==1){//如果答案完全匹配,返回正確的提示信息msg="恭喜你猜對了!";System.out.println("答案正確");byte[]buf=msg.getBytes();snd=newDatagramPacket(buf,buf.length,rec.getAddress(),rec.getPort());try{serv.send(snd);}catch(IOExceptionie){ie.printStackTrace();}break;}}//如果超過10次未猜對,結(jié)束游戲if(i>10){//生成正確的答案char[]n=newchar[1];Stringstr=newString(n);//返回游戲結(jié)束的提示信息msg="沒機(jī)會了,正確答案是:"+str;System.out.println("游戲結(jié)束");byte[]buf=msg.getBytes();snd=newDatagramPacket(buf,buf.length,rec.getAddress(),rec.getPort());try{serv.send(snd);}catch(IOExceptionie){ie.printStackTrace();}}}//猜大小游戲的方法 staticvoidguessPro(){ intnum,i,j,t; System.out.println("開始進(jìn)行猜大小游戲……"); Randomrnd=newRandom(); //生成一個0~100的隨機(jī)數(shù)(不含100) num=rnd.nextInt(100); //輸出生成的隨機(jī)數(shù) System.out.println("生成的隨機(jī)數(shù):"+num); try{ //進(jìn)行游戲 for(i=1;i<=10;i++){ //接收客戶端發(fā)來的數(shù)據(jù)包 serv.receive(rec); //提取其中的答案 msg=newString(rec.getData(),0,rec.getLength()); //將其轉(zhuǎn)化為整數(shù)形式 t=(int)Float.parseFloat(msg); //輸出答案 System.out.print("第"+i+"次的答案:"+msg+""); //根據(jù)不同情況,返回相應(yīng)的信息 if(t<num){ msg="小了,再大點(diǎn)!"; } elseif(t>num){ msg="大了,再小點(diǎn)!"; } else{ msg="恭喜你猜對了!"; } System.out.println("結(jié)果:"+msg); //數(shù)據(jù)封裝 byte[]buf=msg.getBytes(); snd=newDatagramPacket(buf,buf.length,rec.getAddress(),rec.getPort()); //發(fā)送 serv.send(snd); //如果答案正確,輸出提示信息,終止游戲 if(t==num){ System.out.println("答案正確"); break; } } //如果超過10次未猜對,也終止游戲 if(i>10){ //生成正確答案 char[]n=newchar[2]; n[0]=(char)(num/10+48); n[1]=(char)(num%10+48); Stringstr=newString(n); msg="沒有機(jī)會了,正確答案是:"+str; System.out.println("游戲結(jié)束"); byte[]buf=msg.getBytes(); snd=newDatagramPacket(buf,buf.length,rec.getAddress(),rec.getPort()); serv.send(snd); } }catch(IOExceptionie){ ie.printStackTrace(); } }//判斷答案匹配情況的方法staticcharjudge(charzimu,charans){inta=2;if(ans==zimu){a--;}else{msg="你答錯了";byte[]buf=msg.getBytes();snd=newDatagramPacket(buf,buf.length,rec.getAddress(),rec.getPort());try{serv.send(snd);}catch(IOExceptionie){ie.printStackTrace();}}//如果答案匹配,則返回1if(a==1){return1;}//否則返回0else{return0;}} //生成隨機(jī)數(shù)的方法 staticchargetZimu(){ //zimu數(shù)組存儲生成的隨機(jī)數(shù) Randomrandom=newRandom(); intr=0;r=random.nextInt(57)+65;while(r>90&&r<97||r==0)r=random.nextInt(57)+65;charzimu=(char)r;returnzimu;}} ②Client類的代碼:import.*;importjava.io.*;//客戶端類publicclassClient{ //存儲套接字 staticDatagramSocketclient; //存儲端口號 staticintport; //存放接收到的數(shù)據(jù)包中的信息 staticbyte[]info=newbyte[1000]; //存儲接收到的數(shù)據(jù)包 staticDatagramPacketrec=newDatagramPacket(info,info.length); //存儲要發(fā)送的數(shù)據(jù)包 staticDatagramPacketsnd; //存儲要發(fā)送或提取出的信息 staticStringmsg; //localHost變量存儲本地主機(jī)的IP地址 //host變量存儲服務(wù)器的IP地址 staticInetAddresslocalHost,host; //服務(wù)器IP地址的字符串形式 staticStringIP; //服務(wù)器IP地址的字節(jié)數(shù)組形式 staticbyte[]IPAddr=newbyte[4]; //主方法 publicstaticvoidmain(String[]args){ System.out.println("網(wǎng)絡(luò)益智游戲——客戶端"); try{ //第1個參數(shù)為服務(wù)器IP地址,將其轉(zhuǎn)存到字節(jié)數(shù)組中 IP=args[0]; toIPAddr(); port=(int)Float.parseFloat(args[1]); //獲得服務(wù)器IP地址 host=InetAddress.getByAddress(IPAddr); //獲得本機(jī)IP地址 localHost=InetAddress.getLocalHost(); //創(chuàng)建套接字 client=newDatagramSocket(port); //將本機(jī)IP地址傳送給服務(wù)器 msg=localHost.getHostAddress(); //數(shù)據(jù)封裝 byte[]buf=msg.getBytes(); snd=newDatagramPacket(buf,buf.length,host,port); //發(fā)送 client.send(snd); while(true){ //接收服務(wù)器的發(fā)送來的數(shù)據(jù)包 client.receive(rec); //從數(shù)據(jù)包中提取消息并輸出 msg=newString(rec.getData(),0,rec.getLength()); System.out.println(msg); //選擇要玩的游戲,并告知服務(wù)器 BufferedReaderbufRdr=newBufferedReader(newInputStreamReader(System.in)); System.out.print("請輸入:"); msg=bufRdr.readLine(); buf=msg.getBytes(); snd=newDatagramPacket(buf,buf.length,host,port); client.send(snd); //如果輸入的是“quit”指令,終止程序 if(pareTo("quit")==0){ break; } //如果輸入的是1,選擇玩猜字母游戲 if(pareTo("1")==0){ playGuessZimu(); } //如果輸入的是2,選擇玩猜大小游戲 else{ playGuessPro(); } } //關(guān)閉套接字 System.out.println("斷開連接……"); client.close(); }catch(UnknownHostExceptionue){ ue.printStackTrace(); }catch(SocketExceptionse){ se.printStackTrace(); }catch(IOExceptionie){ ie.printStackTrace(); } } //進(jìn)行猜字母游戲的方法 staticvoidplayGuessZimu(){ System.out.println("開始進(jìn)行猜數(shù)字游戲……"); //記錄試猜的次數(shù) intcnt=0; try{ do{ //輸入本次試猜的答案 BufferedReaderbufRdr=newBufferedReader(newInputStreamReader(System.in)); System.out.print("第"+(cnt+1)+"次試猜:"); msg=bufRdr.readLine(); //數(shù)據(jù)封裝 byte[]buf=msg.getBytes(); snd=newDatagramPacket(buf,buf.length,host,port); //發(fā)送 client.send(snd); //接收服務(wù)器的回復(fù) client.receive(rec); //提取答案匹配情況 msg=newString(rec.getData(),0,rec.getLength()); //輸出答案匹配情況 System.out.println("結(jié)果:"+msg); //試猜次數(shù)加1 cnt++; //如果完全匹配,輸出答案正確的提示信息,終止游戲 if(pareTo("恭喜你猜對了!")==0){ if(cnt<=3){ System.out.println("你真是個天才!"); } elseif(cnt<=6){ System.out.println("還不錯,是個人才!"); } elseif(cnt<=8){ System.out.println("還將就,你贏了!"); }else{ System.out.println(); } break; } //如果已經(jīng)試猜10次,也終止游戲 elseif(cnt==10){ client.receive(rec); msg=newString(rec.getData(),0,rec.getLength()); System.out.println(msg); break; } }while(true); }catch(IOExceptionie){ ie.printStackTrace(); } } //進(jìn)行猜大小游戲的方法 staticvoidplayGuessPro(){ System.out.printl
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度BIM在歷史文化遺址保護(hù)合同范本3篇
- 專項(xiàng)2024民用爆破器材供應(yīng)及服務(wù)協(xié)議版
- 個人工程承包合同(2024版)版B版
- 2024年節(jié)能減排服務(wù)協(xié)議
- 2025年度劇本改編權(quán)授權(quán)合同3篇
- 2024音樂噴泉景區(qū)旅游紀(jì)念品開發(fā)與銷售合同3篇
- 二零二五年度線上線下整合營銷方案合作協(xié)議2篇
- 2025年度廠房裝修工程臨時用電及安全管理合同4篇
- 2025年現(xiàn)代化廠房購置及安裝服務(wù)合同范本二3篇
- 2025年度新能源設(shè)備買賣合同規(guī)范范本4篇
- 高考詩歌鑒賞專題復(fù)習(xí):題畫抒懷詩、干謁言志詩
- 2023年遼寧省交通高等??茖W(xué)校高職單招(英語)試題庫含答案解析
- GB/T 33688-2017選煤磁選設(shè)備工藝效果評定方法
- GB/T 304.3-2002關(guān)節(jié)軸承配合
- 漆畫漆藝 第三章
- CB/T 615-1995船底吸入格柵
- 光伏逆變器一課件
- 貨物供應(yīng)、運(yùn)輸、包裝說明方案
- (完整版)英語高頻詞匯800詞
- 《基礎(chǔ)馬來語》課程標(biāo)準(zhǔn)(高職)
- IEC61850研討交流之四-服務(wù)影射
評論
0/150
提交評論