版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、 目 錄 1剪刀石頭布游戲設(shè)計(jì)思路闡述22程序概要設(shè)計(jì)22.1功能需求分析22.2性能需求分析22.3程序框圖32.4 JAVA類及自定義類相互繼承的層次關(guān)系32.4.1 Java類及自定義類的說明32.4.2類中成員及作用4String data;/接收數(shù)據(jù)4Socket client = null;/定義套接字4BufferedReader inputs = null;/ 讀取數(shù)據(jù)4BufferedReader key = null;/ 緩沖數(shù)據(jù)4PrintStream outputs = null;/輸出數(shù)據(jù)42.5 程序運(yùn)行效果及存在的問題42.5.1運(yùn)行效果圖42.5.2存在的問題5
2、3程序詳細(xì)設(shè)計(jì)53.1類獲包的加載5import java.io.*;5import .*;53.2自定義類創(chuàng)建服務(wù)器端53.3創(chuàng)建數(shù)據(jù)處理類64測(cè)試運(yùn)行75源代碼清單86總結(jié)10 基于JAVA的剪刀石頭布游戲設(shè)計(jì)1剪刀石頭布游戲設(shè)計(jì)思路闡述 在設(shè)計(jì)游戲時(shí),我們要充分考慮到剪刀石頭布游戲的特性,以及多種技術(shù)的實(shí)現(xiàn):構(gòu)造創(chuàng)建服務(wù)器端和客戶端創(chuàng)建輸入輸出流編寫服務(wù)器端處理數(shù)據(jù)的線程方法繪制游戲界面繪制界面上的提示采用此方法設(shè)計(jì)使程序簡潔明了,使繪制游戲界面時(shí)簡單化,更加易于游戲的實(shí)現(xiàn),程序也更易于讀懂。 如java中得到輸入輸出流的方法:/調(diào)用客戶端的getInputStream()方法Input
3、s=newBufferedReader(new InputStreamReader(client.getInputStream();通過調(diào)用此方法獲取從服務(wù)器得到的數(shù)據(jù)調(diào)用客戶端的getOutputStream()方法,通過此方法把客戶端的數(shù)據(jù)傳輸給服務(wù)器。2程序概要設(shè)計(jì)2.1功能需求分析 一個(gè)剪刀石頭布游戲,根據(jù)一般的常識(shí),首先要有兩個(gè)人,兩個(gè)人同時(shí)出,然后,根據(jù)雙方的出拳,決定誰是贏者,雖然想起來這個(gè)游戲很簡單,但如何實(shí)現(xiàn) ,還是有一定難度的。實(shí)現(xiàn)這個(gè)時(shí)針時(shí)涉及到幾個(gè)技術(shù)問題:1. 雙方如何出拳2. 如何同時(shí)出拳3. 如何判斷哪方贏了4. 如何顯示結(jié)果剪刀石頭布游戲,都是通過兩個(gè)人同時(shí)出拳
4、,然后根據(jù)雙方出的拳,判定哪方是贏家。2.2性能需求分析準(zhǔn)確性:在實(shí)現(xiàn)此的過程中,我們要考慮到,雙方是否能同時(shí)地出拳,還要就是如何去判斷,準(zhǔn)確地知道哪方是贏家.簡潔性:在實(shí)現(xiàn)此的過程中,我們要考慮到,怎樣使游戲界面更簡單,讓人更容易明白它怎樣去玩。2.3程序框圖游戲程序框圖如圖1所示: 圖1 游戲程序框圖2.4 JAVA類及自定義類相互繼承的層次關(guān)系 2.4.1 Java類及自定義類的說明自定義類:類名:SocketServer作用:服務(wù)器類繼承的父類:Thread類實(shí)現(xiàn)的接口:無類名:Service作用: 服務(wù)器類,它是判定勝負(fù)的類繼承的父類:Thread類類中成員: String data
5、; BufferedReader inputs; PrintStream outputs; Socket client;實(shí)現(xiàn)的接口:無類名:Client作用:客戶端類類中的成員: getInputStream(); getOutputStream(); InputStreamReader (); readLine(); 實(shí)現(xiàn)的接口:無自定義類中子類和其父類的繼承關(guān)系如圖2如所示:ThreadServicegetInputStreamStartRunRandomgetOutputStreamReadline 圖2 子類及其父類繼承關(guān)系圖2.4.2類中成員及作用Service類成員:String
6、data; /接收數(shù)據(jù)BufferedReader inputs;/ 讀取數(shù)據(jù)PrintStream outputs;/輸出數(shù)據(jù)Socket client;/定義套接字Client類成員:String data;/接收數(shù)據(jù) Socket client = null;/定義套接字 BufferedReader inputs = null;/ 讀取數(shù)據(jù) BufferedReader key = null;/ 緩沖數(shù)據(jù) PrintStream outputs = null;/輸出數(shù)據(jù)2.5 程序運(yùn)行效果及存在的問題2.5.1運(yùn)行效果圖剪刀石頭布游戲效果如圖3所示:圖3時(shí)鐘效果圖2.5.2存在的問題此
7、游戲界面簡潔明了,但還是有許多問題的,比如說這個(gè)界面不是GUI的,所以操作性不強(qiáng),也不美觀,而且處理數(shù)據(jù)的random函數(shù)也有問題,它可能出現(xiàn)相同的結(jié)果,不能成為真正意義上的隨機(jī),所以這個(gè)小游戲還是有許多問題的,我會(huì)進(jìn)一步的改進(jìn)它。3程序詳細(xì)設(shè)計(jì)3.1類獲包的加載加載剪刀石頭布游戲設(shè)計(jì)中用到的類和包,用于運(yùn)行主程序:import java.io.*; import .*; 3.2自定義類創(chuàng)建服務(wù)器端 使用自定義類ServerSocket繼承父類Thread使用run等方法,構(gòu)造函數(shù)創(chuàng)建一個(gè)服務(wù)器端【5】。程序代碼如下:public class SocketServer extends Thre
8、ad ServerSocket server; public SocketServer() try server = new ServerSocket(6000); catch(IOException e) System.exit(0); this.start(); public void run() try while(true) Socket client = server.accept(); Service ss = new Service(client); catch(IOException e) System.exit(1); public static void main(Stri
9、ng args) new SocketServer(); 3.3創(chuàng)建數(shù)據(jù)處理類 創(chuàng)建一個(gè)用于數(shù)據(jù)處理類使服務(wù)器能準(zhǔn)確處理數(shù)據(jù),獲取數(shù)據(jù),并使用方法run()實(shí)現(xiàn)數(shù)據(jù)處理。實(shí)現(xiàn)代碼如下: /創(chuàng)建數(shù)據(jù)儲(chǔ)存變量 inputs = new BufferedReader(new InputStreamReader(client.getInputStream();outputs = new PrintStream(client.getOutputStream(); /創(chuàng)建一個(gè)Run方法
10、160; public void run() 3.4創(chuàng)建客戶端類 創(chuàng)建一個(gè)用于客戶端接收玩家輸入的數(shù)據(jù)的類,程序?qū)崿F(xiàn)代碼如下: /接收客戶端的數(shù)據(jù)public class Client public static void main(String args) String data; Socket client = null; BufferedReader inputs = null; BufferedReader key = null; PrintStream o
11、utputs = null; try client = new Socket("localhost",6000); inputs = new BufferedReader(new InputStreamReader(client.getInputStream(); outputs = new PrintStream(client.getOutputStream(); key = new BufferedReader(new InputStreamReader(System.in); catch(IOException e) System.out.println("
12、CAN NOT CONN WITH SERVER"); try while(true) System.out.println("-"); System.out.print("請(qǐng)出拳:石頭/剪刀/布 "); data = key.readLine(); outputs.println(data); System.out.println("ECHO: " + inputs.readLine(); catch(IOException e) System.out.println("ERROR IO"); try
13、client.close(); catch(IOException e) System.out.println("can not close it"); 4測(cè)試運(yùn)行 程序編寫好后,用JCreator軟件運(yùn)行,檢測(cè)程序設(shè)計(jì)結(jié)果,執(zhí)行目標(biāo)程序后得到如圖4所示的窗體: 圖4 程序測(cè)試圖 經(jīng)檢測(cè)程序運(yùn)行正常。 5源代碼清單import java.io.*; import .*; public class SocketServer extends Thread ServerSocket server; public SocketServer() try server = new Se
14、rverSocket(6000); catch(IOException e) System.exit(0); this.start(); public void run() try while(true) Socket client = server.accept(); Service ss = new Service(client); catch(IOException e) System.exit(1); public static void main(String args) new SocketServer(); public class Service extends Thread
15、String data; BufferedReader inputs; PrintStream outputs; Socket client; public Service(Socket socket) client = socket; try inputs = new BufferedReader(new InputStreamReader(client.getInputStream(); outputs = new PrintStream(client.getOutputStream(); catch (IOException e) e.printStackTrace(); this.st
16、art(); public void run() try while (true) data = inputs.readLine(); int res = (int) (Math.random() * 3); if (data = null) break; else if (res = 0 && "石頭".equals(data) data = "電腦也是石頭,打平了!" else if (res = 0 && "剪刀".equals(data) data = "電腦是石頭,電腦贏了!&quo
17、t; else if (res = 0 && "布".equals(data) data = "電腦是石頭,恭喜,你贏了!" else if (res = 1 && "石頭".equals(data) data = "電腦是剪刀,恭喜,你贏了!" else if (res = 1 && "剪刀".equals(data) data = "電腦也是剪刀,打平了!" else if (res = 1 && "
18、;布".equals(data) data = "電腦是剪刀,電腦贏了!" else if (res = 2 && "石頭".equals(data) data = "電腦是布,電腦贏了!" else if (res = 2 && "剪刀".equals(data) data = "電腦是布,恭喜,你贏了!" else if (res = 2 && "布".equals(data) data = "電腦也是布
19、,打平了!" else data = "電腦不認(rèn)識(shí)你出的拳" outputs.println(data); catch (IOException e) e.printStackTrace(); try client.close(); catch (IOException e) e.printStackTrace(); public class Client public static void main(String args) String data; Socket client = null; BufferedReader inputs = null; Buf
20、feredReader key = null; PrintStream outputs = null; try client = new Socket("localhost",6000); inputs = new BufferedReader(new InputStreamReader(client.getInputStream(); outputs = new PrintStream(client.getOutputStream(); key = new BufferedReader(new InputStreamReader(System.in); catch(IOException e) System.out.println("CAN NOT CONN WITH SERVER"); try while(true
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度航空貨運(yùn)代理服務(wù)合同正規(guī)范本2篇
- 2025年度智能制造設(shè)備貸款合同4篇
- 2025-2030年中國隔熱耐火磚行業(yè)運(yùn)行態(tài)勢(shì)及投資前景規(guī)劃研究報(bào)告
- 2025-2030年中國鑄銅產(chǎn)品市場發(fā)展?fàn)顩r及投資前景規(guī)劃研究報(bào)告
- 2025-2030年中國鋼塑共擠門窗行業(yè)運(yùn)營狀況及投資前景預(yù)測(cè)報(bào)告
- 2025-2030年中國螺絲刀行業(yè)市場運(yùn)營趨勢(shì)及發(fā)展前景規(guī)劃研究報(bào)告
- 2025-2030年中國營養(yǎng)碘鹽市場發(fā)展前景調(diào)研與投資策略分析報(bào)告
- 2025-2030年中國自動(dòng)絡(luò)筒機(jī)行業(yè)未來發(fā)展趨勢(shì)及前景調(diào)研分析報(bào)告
- 2025-2030年中國聚甲醛(POM)產(chǎn)業(yè)發(fā)展現(xiàn)狀及投資規(guī)劃研究報(bào)告
- 2025-2030年中國綜合肺功能測(cè)定儀市場運(yùn)營現(xiàn)狀及投資前景規(guī)劃研究報(bào)告
- 2025年工程合作協(xié)議書
- 2025年山東省東營市東營區(qū)融媒體中心招聘全媒體采編播專業(yè)技術(shù)人員10人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025年宜賓人才限公司招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- KAT1-2023井下探放水技術(shù)規(guī)范
- 駕駛證學(xué)法減分(學(xué)法免分)題庫及答案200題完整版
- 竣工驗(yàn)收程序流程圖
- 清華經(jīng)管工商管理碩士研究生培養(yǎng)計(jì)劃
- 口腔科診斷證明書模板
- 管溝挖槽土方計(jì)算公式
- 國網(wǎng)浙江省電力公司住宅工程配電設(shè)計(jì)技術(shù)規(guī)定
- 煙花爆竹零售應(yīng)急預(yù)案
評(píng)論
0/150
提交評(píng)論