java網(wǎng)絡(luò)課程設(shè)計(jì)---網(wǎng)絡(luò)斗地主說明書_第1頁
已閱讀1頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、<p>  課 程 設(shè) 計(jì) 說 明 書</p><p><b>  網(wǎng)絡(luò)編程課程設(shè)計(jì)</b></p><p><b>  系統(tǒng)設(shè)計(jì)</b></p><p><b>  目標(biāo)設(shè)計(jì)</b></p><p>  本次課程設(shè)計(jì)要求我們 按照網(wǎng)絡(luò)編程的基本原理,綜合運(yùn)用所學(xué)的知

2、識,以小組為單位,設(shè)計(jì)開發(fā)一個(gè)基于網(wǎng)絡(luò)的游戲應(yīng)用網(wǎng)絡(luò)斗地主。通過對該系統(tǒng)的分析、設(shè)計(jì)與實(shí)現(xiàn),將原理與應(yīng)用相結(jié)合,使我們能夠?qū)W會(huì)如何把書本上學(xué)到的知識用于解決實(shí)際問題,培養(yǎng)動(dòng)手能力;另一方面,使我們能深入理解和靈活掌握教學(xué)內(nèi)容。</p><p>  按照網(wǎng)絡(luò)協(xié)議規(guī)范,需要采用套接字方式,建立基于網(wǎng)絡(luò)的游戲應(yīng)用。并且,我們將會(huì)提供新建游戲和加入游戲功能;用戶登陸后可以創(chuàng)建新游戲或加入已有游戲,通過客戶端與其它游戲用戶

3、對弈;程序需要采用多線程方式來確保程序功能的正確實(shí)現(xiàn),我們還要保證本程序操作方便、界面友好。</p><p>  1.2 開發(fā)和運(yùn)行環(huán)境</p><p>  開發(fā)工具:MyEclipse</p><p>  運(yùn)行環(huán)境: Windows xp</p><p>  1.3 本人主要工作</p><p>  負(fù)責(zé)設(shè)計(jì)網(wǎng)絡(luò)斗地

4、主的出牌規(guī)則處理和游戲運(yùn)行時(shí)游戲邏輯部分,按照網(wǎng)絡(luò)編程的協(xié)議的規(guī)范,實(shí)現(xiàn)服務(wù)器上對上線用戶的偵聽,以及對多客戶端的支持和對于所有用戶出牌進(jìn)行規(guī)則判斷和對用戶有些行為進(jìn)行處理。在該部分設(shè)計(jì)中,應(yīng)注意一些應(yīng)有的常識性功能是如何實(shí)現(xiàn)的。還要保證協(xié)議和邏輯的正確性與合理性。</p><p>  網(wǎng)絡(luò)斗地主系統(tǒng)概要設(shè)計(jì)</p><p>  網(wǎng)絡(luò)斗地主是采用網(wǎng)絡(luò)協(xié)議為TCP/IP的網(wǎng)上對弈游戲,

5、60;運(yùn)用 “客戶端-服務(wù)器 “(c/s) 網(wǎng)絡(luò)架構(gòu)模式。實(shí)現(xiàn)用戶通過Internt連接在任何地方與不同玩家進(jìn)行對戰(zhàn)。用戶運(yùn)行游戲后新建游戲,則該用戶即成為服務(wù)器端和客戶端的混合體,其他用戶通過加入游戲時(shí)的ip和端口來連接服務(wù)器。 通過使用多線程和網(wǎng)絡(luò)套接字SOCKET來實(shí)現(xiàn)游戲之間的通訊, 它是基于點(diǎn)對點(diǎn)的通 訊。開始讓服務(wù)器初始化建立服務(wù)器套接字SOCKET,基于某個(gè)端口P

6、ORT,服務(wù)器始終處 于監(jiān)聽狀態(tài)。客戶端是動(dòng)作的發(fā)起者,何時(shí)發(fā)出申請由客戶端決定??蛻舳讼蚍?wù)器發(fā) 出申請,服務(wù)器給予響應(yīng)。打開客戶端套接字SOCKET,連接到服務(wù)器端的地址ADDRESS 和端口PORT。連接建立后,創(chuàng)建一個(gè)SOCKET實(shí)例,并開始一個(gè)線程,監(jiān)聽該客戶端請 求。服務(wù)器繼續(xù)監(jiān)聽其它用戶的連接。服務(wù)器通過數(shù)據(jù)輸入流從客戶端接收信息,并且 通過數(shù)據(jù)輸出流把相應(yīng)的信息發(fā)送給客戶

7、端。 客戶端發(fā)送請求和響應(yīng)接收到的各種信息。 在服務(wù)器和客戶端之間傳遞的消息格式是采用“[消息類別]+內(nèi)容“組成的,服務(wù)器和客戶端在傳遞消息的過程,根據(jù)消息的類別來進(jìn)行相關(guān)的操作。</p><p>  2.1系統(tǒng)功能模塊設(shè)計(jì)</p><p>  本工程包含只包含controller,model,view三個(gè)包。其中controller包中有客戶端和服務(wù)器端模塊,mode

8、l包負(fù)責(zé)具體牌局規(guī)則的邏輯承載(如:派牌,比較大小,判斷用戶出牌出牌是否符合規(guī)則),view包具體的客戶端的界面。</p><p><b>  表1 模塊劃分表</b></p><p><b>  2.2系統(tǒng)流程圖</b></p><p><b>  圖1 系統(tǒng)流程圖</b></p>&

9、lt;p>  3.網(wǎng)絡(luò)斗地主系統(tǒng)詳細(xì)設(shè)計(jì)</p><p>  3.1 Poker.java</p><p>  該類為撲克牌類,定義撲克牌具有花色,大小,id號,以及對應(yīng)的圖片 其中id號是每一張牌的唯一標(biāo)示,從系統(tǒng)自動(dòng)分發(fā)撲克,到網(wǎng)絡(luò)傳輸,甚至界面響應(yīng)都用到的是撲克牌的id,在需要用到撲克牌的其他屬性的地方,以id為參數(shù)構(gòu)造一張撲克牌,撲克牌的所有信息存儲在"data/g

10、amedata"文件夾下,對應(yīng)圖片 存放在"res/cards"文件夾下</p><p>  private Integer id;</p><p>  private Integer value;</p><p>  public Poker(Integer id) {</p><p>  this.id =

11、id;</p><p>  if (id == 0) {this.value = 0;</p><p>  } else if (id == 53) {</p><p>  this.value = 499;</p><p>  } else if (id == 54) {this.value = 500;</p><p&

12、gt;  } else if (id > 0 && id < 53) {this.value = (id - 1) / 4 + 3;</p><p><b>  }}</b></p><p><b>  @Override</b></p><p>  public int compareTo(P

13、oker o) {</p><p>  return this.value.compareTo(o.value);}</p><p><b>  @Override</b></p><p>  public boolean equals(Object obj) {</p><p>  Poker poker = (Pok

14、er) obj;</p><p>  if (this.value.equals(poker.value)) {return true;</p><p>  } else {return false; }}</p><p>  public Integer getId() {return id;}</p><p>  public Integ

15、er getValue() {return value;</p><p><b>  }}</b></p><p>  3.2 PokerRules.java</p><p>  該類用于承擔(dān)用戶在進(jìn)行游戲時(shí)對用戶所出牌進(jìn)行大小比較和規(guī)則判斷。</p><p>  public static Boolean canS

16、end(Vector<Poker> lasttime, Vector<Poker> thistime) {</p><p>  if (lasttime.size() == 0) {</p><p>  if (judgePokerType(thistime) != 0) {</p><p>  return true; } else {re

17、turn false; }}</p><p>  else { if (judgePokerType(lasttime) == judgePokerType(thistime)) {</p><p>  if (getMainPokerValue(thistime) > getMainPokerValue(lasttime)) {return true; }else {return

18、false;}}</p><p>  else if (judgePokerType(thistime) == 37) {</p><p>  return true;} else {return false; }}}</p><p>  3.3 GamePanel.java</p><p>  此類為游戲主頁面模塊,用戶再進(jìn)行游戲時(shí)進(jìn)行的

19、所有操作都由此類承擔(dān)。</p><p>  private int distant = 20; </p><p>  private int height = 600;</p><p>  private Boolean isMyTurn = false;// 是否輪到當(dāng)前玩家出牌</p><p>  private Vector<In

20、teger> lastpokerIDVector = new Vector<Integer>();</p><p>  private Vector<JLabel> lastPokerLabelVector = new Vector<JLabel>(); </p><p>  private Vector<Poker> lastSend

21、edPokerVector = new Vector<Poker>(); </p><p>  private JButton[] lordChooseButton = new JButton[2]; </p><p>  private JLabel lordLabels[] = new JLabel[3];// 地主頭像顯示標(biāo)簽</p><p>  

22、private Vector<Integer> mypokerIDVector = new Vector<Integer>();</p><p>  private Vector<PokerLabel> myPokerLabelVector = new Vector<PokerLabel>(); </p><p>  private Vect

23、or<JLabel> mySendPokerLabelVector = new Vector<JLabel>(); </p><p>  private JButton notSendButton;// 不出按鈕</p><p>  private Integer notSendNum = 2;// 放棄出牌的玩家的個(gè)數(shù)</p><p>  

24、private ObjectOutputStream oos;</p><p>  private Vector<JLabel> otherSendPokerLabelVector = new Vector<JLabel>(); </p><p>  private Vector<Integer> player1pokerIDVector = new V

25、ector<Integer>();</p><p>  private Vector<JLabel> player1PokerLabelVector = new Vector<JLabel>(); </p><p>  private Vector<Integer> player2pokerIDVector = new Vector<I

26、nteger>();</p><p>  private Vector<JLabel> player2PokerLabelVector = new Vector<JLabel>(); </p><p><b>  4.系統(tǒng)測試</b></p><p>  游戲開始后,但沒有單獨(dú)的界面顯示:</p>&

27、lt;p>  圖2.測試信息游戲開始</p><p><b>  圖3 游戲正式開始</b></p><p><b>  圖4 游戲進(jìn)行中</b></p><p>  圖5 游戲中過牌操作</p><p><b>  圖6 游戲結(jié)束</b></p><

28、p><b>  5.個(gè)人體會(huì)</b></p><p>  本次網(wǎng)絡(luò)編程課程設(shè)計(jì),經(jīng)過最初的短期培訓(xùn),是我對曾經(jīng)學(xué)習(xí)過但未很好地掌握的JAVA編程有了一個(gè)更具體的認(rèn)識,并且能夠簡單理解程序編制的基本過程與常用類和方法。相比從前,對于編程的認(rèn)識有了很大的進(jìn)步。通過接下來三周的關(guān)于網(wǎng)絡(luò)五子棋程序的開發(fā)和學(xué)習(xí),我更好地實(shí)踐了記憶中并未很好掌握的相關(guān)知識和技能,對包括套接字,線程等內(nèi)容有了更好的

29、理解??梢赃M(jìn)行簡單的程序閱讀與編譯,提升了自身的能力與技能。相信在以后的工作學(xué)習(xí)生活中,我能夠更好地掌握相關(guān)技能并增加一技之長。</p><p>  對于本次網(wǎng)絡(luò)編程課程設(shè)計(jì),我感到自己的提升很大。對于自身的能力有了一個(gè)更好的認(rèn)知。并且讓我能夠更好地面對未來的工作生活。對于JAVA技術(shù)的基礎(chǔ)掌握也比從前更加扎實(shí)與熟練。本次網(wǎng)絡(luò)斗地主系統(tǒng)雖然有一些基本功能未能很好地實(shí)現(xiàn),但是我們已經(jīng)盡了自己很大的努力,也得到了自身

溫馨提示

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

評論

0/150

提交評論