java課程設(shè)計--多用途五子棋的實現(xiàn)_第1頁
已閱讀1頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p>  存檔資料 成績:  </p><p>  課 程 設(shè) 計 報 告 書</p><p>  所屬課程名稱 JAVA課程設(shè)計 </p><p>  題 目 多用途五子棋的實現(xiàn) </p>

2、<p>  院 (系) 電信分院 </p><p>  班 級 10級信管1班 </p><p>  學(xué)  號 </p><p>  學(xué)生姓名 </p><p>

3、  指導(dǎo)教師 </p><p>  輔導(dǎo)教師 </p><p>  2011年 12 月23 日 </p><p><b>  課程設(shè)計任務(wù)書</b></p><p>  電信分院  學(xué)  院   10

4、級信息管理 專業(yè)  1班  班   </p><p>  一、課程設(shè)計題目   java 課程設(shè)計《 多用途五子棋 》   </p><p>  二、課程設(shè)計工作自 11 年 12 月 19日起至 10 年 12 月 25 日止。</p><p>  三、課程設(shè)計 地點: 3號教學(xué)樓 機(jī)

5、房8 </p><p>  四、課程設(shè)計內(nèi)容要求:</p><p>  1.本課程設(shè)計的目的</p><p> ?。?)使學(xué)生鞏固和提高Java編程技術(shù)</p><p>  (2)培養(yǎng)學(xué)生掌握程序設(shè)計的基本思路和方法; </p><p> ?。?)加強(qiáng)學(xué)生研發(fā)、調(diào)試程序的能力;<

6、;/p><p> ?。?)培養(yǎng)學(xué)生分析、解決問題的能力;</p><p>  (5)提高學(xué)生的科技論文寫作能力。</p><p>  2.課程設(shè)計的任務(wù)及要求</p><p><b>  1)課程設(shè)計任務(wù):</b></p><p>  實現(xiàn)一個簡單的多用戶五子棋的游戲程序,包括如下兩個界面</p

7、><p>  設(shè)計要求:1、五子棋游戲室界面:用戶可以選擇對弈桌及角色(執(zhí)黑、執(zhí)</p><p><b>  白、旁觀);</b></p><p>  2、游戲界面:有開始、退出、悔棋、判斷勝負(fù);發(fā)言及顯示區(qū);用戶列表區(qū);棋盤繪制區(qū);</p><p>  3、使用Socket來完成服務(wù)端和客戶端的通信;</p>

8、<p>  4、使用多線程技術(shù)支持多用戶操作;</p><p>  5、增強(qiáng)功能:支持用戶注冊、添加和刪除好友、戰(zhàn)績顯示、發(fā)送消息、接受消息、多人聊天等功能;使用數(shù)據(jù)庫保存用戶信息。</p><p><b>  2)創(chuàng)新要求:</b></p><p>  以上任務(wù)還未完善,悔棋、用戶列表區(qū)及增強(qiáng)功能板塊未完善。今后,參考資料書,實現(xiàn)

9、五子棋網(wǎng)絡(luò)對戰(zhàn)及數(shù)據(jù)庫的利用。</p><p>  3)課程設(shè)計論文編寫要求</p><p> ?。?)課程設(shè)計任務(wù)及要求</p><p> ?。?)設(shè)計思路--工作原理、功能規(guī)劃</p><p> ?。?)詳細(xì)設(shè)計---數(shù)據(jù)分析、算法思路、類設(shè)計、功能實現(xiàn)(含程序流程圖、主要代</p><p>  碼及注釋)、界面等

10、。</p><p> ?。?)運(yùn)行調(diào)試與分析討論---給出運(yùn)行屏幕截圖,分析運(yùn)行結(jié)果,有何改進(jìn)想法等。</p><p> ?。?)設(shè)計體會與小結(jié)---設(shè)計遇到的問題及解決辦法,通過設(shè)計學(xué)到了哪些新知識,</p><p>  鞏固了哪些知識,有哪些提高。</p><p>  (6)參考文獻(xiàn)(必須按標(biāo)準(zhǔn)格式列出,可參考教材后面的參考文獻(xiàn)格式)&l

11、t;/p><p> ?。?)報告按規(guī)定排版打印,要求裝訂平整,否則要求返工;</p><p> ?。?)課設(shè)報告的裝訂順序如下:封面---任務(wù)書---中文摘要---目錄----正文---附錄</p><p><b>  (代碼及相關(guān)圖片)</b></p><p>  學(xué)生簽名: </p><

12、;p>  11年 12月 23 日</p><p>  課程設(shè)計(論文)評審意見</p><p> ?。?)考勤(10分):優(yōu)(?。?、良( )、中(?。⒁话悖ā。?、差( ); </p><p> ?。?)程序檢查(30分):優(yōu)( )、良(?。?、中(?。?、一般(?。?、差( ); </p><p> ?。?)課設(shè)答辯(20分):優(yōu)(?。?/p>

13、、良(?。?、中(?。⒁话悖ā。?、差(?。?; </p><p>  (4)課設(shè)報告(40分):優(yōu)(?。?、良(?。?、中(?。?、一般( )、差(?。?lt;/p><p><b>  目 錄</b></p><p>  一、課程設(shè)計任務(wù)及要求5</p><p><b>  二、需求分析5</b><

14、/p><p>  2.1 棋盤板塊5</p><p>  2.2 聊天板塊5</p><p>  2.3 ChatSever5</p><p>  2.4 編譯環(huán)境5</p><p>  2.5 參考資料5</p><p><b>  三、設(shè)計思路5</b><

15、/p><p>  3.1 板塊的顯示5</p><p>  3.2 注冊監(jiān)聽5</p><p>  3.3 ChatServer6</p><p><b>  3.4 下棋6</b></p><p><b>  四、詳細(xì)設(shè)計6</b></p><p&

16、gt;  4.1 源程序代碼........................................................... ........................... 6</p><p>  4.2 ChatSever類13</p><p>  五、運(yùn)行調(diào)試與分析討論13</p><p>  六、設(shè)計體會與小結(jié)15<

17、/p><p><b>  七、參考文獻(xiàn)15</b></p><p>  一、課程設(shè)計任務(wù)及要求</p><p>  1、五子棋游戲室界面:用戶可以選擇對弈桌及角色(執(zhí)黑、執(zhí)白、旁觀);</p><p>  游戲界面:有開始、退出、悔棋、判斷勝負(fù);發(fā)言及顯示區(qū);用戶列表 </p><p>

18、;<b>  區(qū);棋盤繪制區(qū);</b></p><p>  3、使用Socket來完成服務(wù)端和客戶端的通信;</p><p>  4、使用多線程技術(shù)支持多用戶操作;</p><p>  5、增強(qiáng)功能:支持用戶注冊、添加和刪除好友、戰(zhàn)績顯示、發(fā)送消息、接 </p><p>  受消息、多人聊天等功能;使用數(shù)據(jù)庫保存用

19、戶信息。</p><p><b>  二、需求分析</b></p><p><b>  2.1 棋盤板塊</b></p><p>  畫一個15×15的棋盤版面,及兩個按鈕組。初始化:開始、重置、 </p><p>  退出;角色選擇:黑方、白方、旁觀。</p>

20、;<p><b>  2.2 聊天板塊</b></p><p>  聊天信息顯示區(qū),聊天信息輸入?yún)^(qū)。</p><p>  2.3 ChatSever </p><p>  模擬服務(wù)器:用于橋接不同用戶,實現(xiàn)接收用戶發(fā)出的信息,然后</p><p>  將信息傳遞到每個用戶的聊天窗口。</p>

21、<p><b>  2.4 編譯環(huán)境</b></p><p>  Eclipse 實驗室上機(jī) 在宿舍編寫</p><p><b>  2.5 參考資料</b></p><p>  Java 語言使用教程,百度文庫資料(五子棋判斷勝負(fù)算法)。</p><p><b>  三、設(shè)計

22、思路</b></p><p><b>  3.1 板塊的顯示</b></p><p>  畫棋盤 調(diào)用public void paint(Graphics g){QiPan(g);}方法</p><p>  畫一個15×15的棋盤面版。</p><p>  初始化 定義兩個Panel P

23、1、P2,在初始化板塊將JButton 開始、</p><p>  重置,退出加入到P1,將黑方、白方、旁觀加入到P2。</p><p>  聊天板塊 在初始化時定義一個JTextArea 和一個JTextField 實現(xiàn)聊</p><p><b>  天功能</b></p><p>  3.2 注冊監(jiān)聽 </

24、p><p>  對角色選擇按鈕注冊ActionListener監(jiān)聽,設(shè)置用戶的角色。定義黑子int類型 0,白子1。</p><p>  對按鈕開始、重置注冊ActionListener監(jiān)聽,如果點擊開始,用戶進(jìn) 入下棋狀態(tài),有一方贏了,棋盤上則不能再點擊棋子。點擊重置,則開始新的一輪。</p><p>  對鼠標(biāo)注冊mouseClicked監(jiān)聽,鼠標(biāo)點擊棋盤時獲取下棋

25、的位置。</p><p>  對JTextField注冊ActionListener,用戶輸入聊天信息后,通過Server傳遞給其他用戶,在對話框JTextArea內(nèi)顯示。</p><p>  3.3 ChatServer</p><p>  class ServerThread implements Runnable{ }類監(jiān)聽線程,監(jiān)聽是否有客戶端法過信息來。&

26、lt;/p><p><b>  屬性: </b></p><p>  Vector threads 向量存儲線程</p><p>  Socket socket 服務(wù)端口</p><p>  DataInputStream in 輸入流</p><p>  DataOutputStream out

27、輸出流</p><p>  int nid 用戶ID</p><p><b>  方法:</b></p><p>  構(gòu)造器public ServerThread(Socket socket,Vector threads)</p><p>  實現(xiàn)信息的輸入、輸出</p><p>  實現(xiàn)pub

28、lic void run()監(jiān)聽客戶端是否發(fā)信息過來,當(dāng)客戶離開時向 </p><p>  其他客戶發(fā)信息,把客戶端的信息發(fā)給其他客戶。 </p><p>  服務(wù)器向客戶端發(fā)信息public void write(String msg)</p><p>

29、;  獲取線程IDpublic int getID()</p><p>  設(shè)置線程IDpublic void setID(int nid)</p><p>  在Chatserver類內(nèi)調(diào)用ServerThread 實現(xiàn)對所有來訪客戶監(jiān)聽,為來訪者設(shè)置ID,若有離開用戶,則在聊天板塊廣播。</p><p><b>  3.4 下棋</b>&l

30、t;/p><p>  用二維數(shù)組模擬棋盤chessbody[17][17],黑方下棋,則黑方所下棋位置的值等于旗子的顏色加一,白方類似。最后1代表下了黑棋,2表示下了白棋,0表示沒下棋。</p><p>  從橫向、縱向、斜方向判斷勝負(fù)。下完一步判斷一次,有一個方向上同色棋子數(shù)超過5,則勝負(fù)已判斷。</p><p><b>  四、詳細(xì)設(shè)計</b>

31、</p><p><b>  4.1源程序代碼</b></p><p>  //wuziqi.java   import java.applet.*;   import java.awt.*;   import java.awt.event.*;   import java.applet.Applet;   impor

32、t java.awt.Color;     public class wuziqi extends Applet implements ActionListener,MouseListener,MouseMotionListener,ItemListener   {   int color_Qizi=0;//旗子的顏色標(biāo)識 0:白子

33、 1:黑子   int intGame_Start=0;//游戲開始標(biāo)志 0未開始 1游戲中   int intGame_Body[][]=new int[16][16]; //設(shè)置棋盤棋子狀態(tài) 0 無子 1 白子 2 黑子   Button b1=new Button("

34、游戲開始");   Button b2=new Button("重置游戲");   Label lblWin=new La</p><p>  4.2 ChatSever類</p><p>  public void run(){</p><p>  System.out.println (&

35、quot;Thread is running");</p><p><b>  try{</b></p><p>  //監(jiān)聽客戶端是否發(fā)消息過來</p><p>  while(true){</p><p>  String receive = in.readUTF();</p><p&g

36、t;  if(receive == null)</p><p><b>  return;</b></p><p>  //當(dāng)某客戶離開,給其它客戶端發(fā)消息</p><p>  if(receive.equals("leave")){</p><p>  for(int i=0;i < thre

37、ads.size();i++){</p><p>  ServerThread st = (ServerThread)threads.elementAt(i);</p><p>  st.write("***"+getID()+"leaving...***");</p><p><b>  }</b>&l

38、t;/p><p><b>  }else{</b></p><p>  //把某客戶端發(fā)過來的發(fā)送到所有客戶端</p><p>  for(int i=0;i < threads.size();i++){</p><p>  ServerThread st = (ServerThread)threads.element

39、At(i);</p><p>  st.write("<"+getID()+">: "+receive);}</p><p>  五、運(yùn)行調(diào)試與分析討論</p><p><b>  圖 5—1 棋盤</b></p><p>  圖5—1 棋盤圖,當(dāng)選擇好黑白角色后點擊開

40、始,便可以下棋;點擊重置時重新開始下棋;點擊退出時結(jié)束游戲,并退出。 該棋盤未實現(xiàn)網(wǎng)絡(luò)棋盤,只能自己跟自己下棋。還欠缺悔棋步驟,可以用Vector存儲已下的棋子的信息,調(diào)用repaiant() 然后再畫除最后一步的棋盤,實現(xiàn)悔棋操作。由于對Socket 用法還不熟悉,不能將棋盤通信與聊天通信區(qū)分開來,也就不能實現(xiàn)聯(lián)網(wǎng)下棋。</p><p>  圖5—2ChatServer</p><p>

41、  如果用戶登錄則監(jiān)聽 listening ......、accept a client使用了Socket,和多線程技術(shù)。定義了Vector 存儲用戶線程,實現(xiàn)ChatServer將信息傳遞給每個用戶,接收每個用戶的信息。</p><p><b>  圖5—3聊天對話框</b></p><p>  用戶4、5進(jìn)入了聊天,對話。當(dāng)對話框縮小或關(guān)閉時ChatServer都

42、會發(fā)出用戶離開的消息。此對話框可以允許多個用戶群聊,但是少了一個窗口顯示所有在線用戶信息。即要求五,增強(qiáng)功能未實現(xiàn)。不能實現(xiàn)用戶注冊,添加好友,查看好有信息,對于數(shù)據(jù)庫的使用不太熟悉。</p><p><b>  六、設(shè)計體會與小結(jié)</b></p><p>  經(jīng)過為期一周的課程設(shè)計,感覺自己所學(xué)遠(yuǎn)遠(yuǎn)不能解決做課設(shè)時的需求。在熟悉課本和上網(wǎng)搜索后,才算馬馬虎虎的完成了

43、任務(wù)。</p><p>  我曾經(jīng)對這種傳說中KO榜上排名第一的編程語言充滿期待和憧憬,但到了真正實驗的時候才發(fā)現(xiàn)我的想法是多么幼稚和一廂情愿??赡苁刮覍λ€缺乏足夠的了解,可能我所追求的優(yōu)點正好都是Java的弱項,可能我內(nèi)心還存在著一點點對它的偏見,但是在我使用Java的頭幾十個小時中,它沒有表現(xiàn)出任何一點能夠取悅我,讓我眼前一亮的東西——連一點趨勢都沒有。我非常認(rèn)可這點,就是Java是一種完美的面向?qū)ο蟮木幊?/p>

44、語言,以至于它似乎沒有面向用戶什么東西。</p><p>  在畫棋盤時,調(diào)用draw方法對于畫圖這塊的坐標(biāo)布置,在今后學(xué)畫其他圖畫時能夠得心應(yīng)手。獲取棋子方法的巧妙,注冊鼠標(biāo),獲取點擊位置,除以棋盤間隔,去掉不為整數(shù)的一塊,再乘以棋盤間隔便獲得最臨近點的下棋坐標(biāo),即所要下棋的位置。用二維數(shù)組模擬棋盤,無棋子的置為0,黑子置為1,白子置為2,以便在判斷勝負(fù)時利于同色棋子的查找。整個棋盤就模擬出來了,很巧妙,不過有

45、更好的方法用向量存儲棋子信息,便于悔棋等操作。</p><p>  這次的課程設(shè)計感覺不是很成功,平時學(xué)的東西不能靈活應(yīng)用,頭腦一片漿糊似的,搞不太清楚java程序,今后將多倍學(xué)習(xí)、多加鍛煉、多加積累知識……</p><p><b>  七、參考文獻(xiàn)</b></p><p>  [1]丁振凡. Java語言實用教程(第2版)[M]. 北京郵電大

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論