基于JAVA的剪刀石頭布游戲設計_第1頁
基于JAVA的剪刀石頭布游戲設計_第2頁
基于JAVA的剪刀石頭布游戲設計_第3頁
基于JAVA的剪刀石頭布游戲設計_第4頁
基于JAVA的剪刀石頭布游戲設計_第5頁
已閱讀5頁,還剩5頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

第2頁共10頁目錄1剪刀石頭布游戲設計思路闡述 22程序概要設計 22.1功能需求分析 22.2性能需求分析 22.3程序框圖 32.4JAVA類及自定義類相互繼承的層次關系 32.4.1Java類及自定義類的說明 32.4.2類中成員及作用 4Stringdata;//接收數據 4Socketclient=null;//定義套接字 4BufferedReaderinputs=null;//讀取數據 4BufferedReaderkey=null;//緩沖數據 4PrintStreamoutputs=null;//輸出數據 42.5程序運行效果及存在的問題 42.5.1運行效果圖 42.5.2存在的問題 53程序詳細設計 53.1類獲包的加載 5importjava.io.*; 5import.*; 53.2自定義類創建服務器端 53.3創建數據處理類 64測試運行 75源代碼清單 86總結 10基于JAVA的剪刀石頭布游戲設計1剪刀石頭布游戲設計思路闡述在設計游戲時,我們要充分考慮到剪刀石頭布游戲的特性,以及多種技術的實現:⑴構造創建服務器端和客戶端⑵創建輸入輸出流⑶編寫服務器端處理數據的線程方法⑷繪制游戲界面⑸繪制界面上的提示采用此方法設計使程序簡潔明了,使繪制游戲界面時簡單化,更加易于游戲的實現,程序也更易于讀懂。如java中得到輸入輸出流的方法://調用客戶端的getInputStream()方法Inputs=newBufferedReader(newInputStreamReader(client.getInputStream()));通過調用此方法獲取從服務器得到的數據調用客戶端的getOutputStream()方法,通過此方法把客戶端的數據傳輸給服務器。2程序概要設計2.1功能需求分析一個剪刀石頭布游戲,根據一般的常識,首先要有兩個人,兩個人同時出,然后,根據雙方的出拳,決定誰是贏者,雖然想起來這個游戲很簡單,但如何實現,還是有一定難度的。實現這個時針時涉及到幾個技術問題:雙方如何出拳如何同時出拳如何判斷哪方贏了如何顯示結果剪刀石頭布游戲,都是通過兩個人同時出拳,然后根據雙方出的拳,判定哪方是贏家。2.2性能需求分析準確性:在實現此的過程中,我們要考慮到,雙方是否能同時地出拳,還要就是如何去判斷,準確地知道哪方是贏家.簡潔性:在實現此的過程中,我們要考慮到,怎樣使游戲界面更簡單,讓人更容易明白它怎樣去玩。2.3程序框圖游戲程序框圖如圖1所示:圖1游戲程序框圖2.4JAVA類及自定義類相互繼承的層次關系2.4.1Java類及自定義類的說明自定義類:類名:SocketServer作用:服務器類繼承的父類:Thread類實現的接口:無類名:Service作用:服務器類,它是判定勝負的類繼承的父類:Thread類類中成員:Stringdata;BufferedReaderinputs;PrintStreamoutputs;Socketclient;實現的接口:無類名:Client作用:客戶端類類中的成員:getInputStream();getOutputStream();InputStreamReader();readLine();實現的接口:無自定義類中子類和其父類的繼承關系如圖2如所示:ThreadThreadServicegetInputStreamStartRunRandomgetOutputStreamReadline圖2子類及其父類繼承關系圖2.4.2類中成員及作用Service類成員:Stringdata;//接收數據BufferedReaderinputs;//讀取數據PrintStreamoutputs;//輸出數據Socketclient;//定義套接字Client類成員:Stringdata;//接收數據Socketclient=null;//定義套接字BufferedReaderinputs=null;//讀取數據BufferedReaderkey=null;//緩沖數據PrintStreamoutputs=null;//輸出數據2.5程序運行效果及存在的問題2.5.1運行效果圖剪刀石頭布游戲效果如圖3所示:圖3時鐘效果圖2.5.2存在的問題此游戲界面簡潔明了,但還是有許多問題的,比如說這個界面不是GUI的,所以操作性不強,也不美觀,而且處理數據的random函數也有問題,它可能出現相同的結果,不能成為真正意義上的隨機,所以這個小游戲還是有許多問題的,我會進一步的改進它。3程序詳細設計3.1類獲包的加載加載剪刀石頭布游戲設計中用到的類和包,用于運行主程序:importjava.io.*;import.*;3.2自定義類創建服務器端使用自定義類ServerSocket繼承父類Thread使用run等方法,構造函數創建一個服務器端【5】。程序代碼如下:publicclassSocketServerextendsThread{ServerSocketserver;publicSocketServer(){try{server=newServerSocket(6000);}catch(IOExceptione){System.exit(0);}this.start();}publicvoidrun(){try{while(true){Socketclient=server.accept();Servicess=newService(client);}}catch(IOExceptione){System.exit(1);}}publicstaticvoidmain(String[]args){ newSocketServer();}}3.3創建數據處理類創建一個用于數據處理類使服務器能準確處理數據,獲取數據,并使用方法run()實現數據處理。實現代碼如下:

//創建數據儲存變量

inputs=newBufferedReader(newInputStreamReader(client.getInputStream()));outputs=newPrintStream(client.getOutputStream());

//創建一個Run方法

publicvoidrun(){}3.4創建客戶端類創建一個用于客戶端接收玩家輸入的數據的類,程序實現代碼如下:

//接收客戶端的數據publicclassClient{publicstaticvoidmain(String[]args){Stringdata;Socketclient=null;BufferedReaderinputs=null;BufferedReaderkey=null;PrintStreamoutputs=null;try{client=newSocket("localhost",6000);inputs=newBufferedReader(newInputStreamReader(client.getInputStream()));outputs=newPrintStream(client.getOutputStream());key=newBufferedReader(newInputStreamReader(System.in));}catch(IOExceptione){System.out.println("CANNOTCONNWITHSERVER");}try{while(true){System.out.println("");System.out.print("請出拳:石頭/剪刀/布");data=key.readLine();outputs.println(data);System.out.println("ECHO:"+inputs.readLine());}}catch(IOExceptione){System.out.println("ERRORIO");}try{client.close();}catch(IOExceptione){System.out.println("cannotcloseit");}}}4測試運行程序編寫好后,用JCreator軟件運行,檢測程序設計結果,執行目標程序后得到如圖4所示的窗體:圖4程序測試圖經檢測程序運行正常。5源代碼清單importjava.io.*;import.*;publicclassSocketServerextendsThread{ServerSocketserver;publicSocketServer(){try{server=newServerSocket(6000);}catch(IOExceptione){System.exit(0);}this.start();}publicvoidrun(){try{while(true){Socketclient=server.accept();Servicess=newService(client);}}catch(IOExceptione){System.exit(1);}}publicstaticvoidmain(String[]args){ newSocketServer();}}publicclassServiceextendsThread{Stringdata;BufferedReaderinputs;PrintStreamoutputs;Socketclient;publicService(Socketsocket){client=socket;try{inputs=newBufferedReader(newInputStreamReader(client.getInputStream()));outputs=newPrintStream(client.getOutputStream());}catch(IOExceptione){e.printStackTrace();}this.start();}publicvoidrun(){try{while(true){data=inputs.readLine();intres=(int)(Math.random()*3);if(data==null)break;else{if(res==0&&"石頭".equals(data)){data="電腦也是石頭,打平了!!";}elseif(res==0&&"剪刀".equals(data)){data="電腦是石頭,電腦贏了!!";}elseif(res==0&&"布".equals(data)){data="電腦是石頭,恭喜,你贏了!!";}elseif(res==1&&"石頭".equals(data)){data="電腦是剪刀,恭喜,你贏了!!";}elseif(res==1&&"剪刀".equals(data)){data="電腦也是剪刀,打平了!!";}elseif(res==1&&"布".equals(data)){data="電腦是剪刀,電腦贏了!!";}elseif(res==2&&"石頭".equals(data)){data="電腦是布,電腦贏了!!";}elseif(res==2&&"剪刀".equals(data)){data="電腦是布,恭喜,你贏了!!";}elseif(res==2&&"布".equals(data)){data="電腦也是布,打平了!!";}else{data="電腦不認識你出的拳";}outputs.println(data);}}}catch(IOExceptione){e.printStackTrace();}try{client.close();}catch(IOExceptione){e.printStackTrace();}}}publicclassClient{publicstaticvoidmain(String[]args){Stringdata;Socketclient=null;BufferedReaderinputs=null;BufferedReaderkey=null;PrintStreamoutputs=null;try{client=newSocket("localhost",6000);inputs=newBufferedReader(newInputStreamReader(client.getInputStream()));outputs=newPrintStream(clien

溫馨提示

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

評論

0/150

提交評論