

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 存檔資料 成績(jī): </p><p> 課 程 設(shè) 計(jì) 報(bào) 告 書(shū)</p><p> 所屬課程名稱(chēng) JAVA課程設(shè)計(jì) </p><p> 題 目 多用途五子棋的實(shí)現(xiàn) </p>
2、<p> 院 (系) 電信分院 </p><p> 班 級(jí) 10級(jí)信管1班 </p><p> 學(xué) 號(hào) </p><p> 學(xué)生姓名 </p><p>
3、 指導(dǎo)教師 </p><p> 輔導(dǎo)教師 </p><p> 2011年 12 月23 日 </p><p><b> 課程設(shè)計(jì)任務(wù)書(shū)</b></p><p> 電信分院 學(xué) 院 10
4、級(jí)信息管理 專(zhuān)業(yè) 1班 班 </p><p> 一、課程設(shè)計(jì)題目 java 課程設(shè)計(jì)《 多用途五子棋 》 </p><p> 二、課程設(shè)計(jì)工作自 11 年 12 月 19日起至 10 年 12 月 25 日止。</p><p> 三、課程設(shè)計(jì) 地點(diǎn): 3號(hào)教學(xué)樓 機(jī)
5、房8 </p><p> 四、課程設(shè)計(jì)內(nèi)容要求:</p><p> 1.本課程設(shè)計(jì)的目的</p><p> ?。?)使學(xué)生鞏固和提高Java編程技術(shù)</p><p> ?。?)培養(yǎng)學(xué)生掌握程序設(shè)計(jì)的基本思路和方法; </p><p> ?。?)加強(qiáng)學(xué)生研發(fā)、調(diào)試程序的能力;<
6、;/p><p> ?。?)培養(yǎng)學(xué)生分析、解決問(wèn)題的能力;</p><p> (5)提高學(xué)生的科技論文寫(xiě)作能力。</p><p> 2.課程設(shè)計(jì)的任務(wù)及要求</p><p><b> 1)課程設(shè)計(jì)任務(wù):</b></p><p> 實(shí)現(xiàn)一個(gè)簡(jiǎn)單的多用戶(hù)五子棋的游戲程序,包括如下兩個(gè)界面</p
7、><p> 設(shè)計(jì)要求:1、五子棋游戲室界面:用戶(hù)可以選擇對(duì)弈桌及角色(執(zhí)黑、執(zhí)</p><p><b> 白、旁觀);</b></p><p> 2、游戲界面:有開(kāi)始、退出、悔棋、判斷勝負(fù);發(fā)言及顯示區(qū);用戶(hù)列表區(qū);棋盤(pán)繪制區(qū);</p><p> 3、使用Socket來(lái)完成服務(wù)端和客戶(hù)端的通信;</p>
8、<p> 4、使用多線程技術(shù)支持多用戶(hù)操作;</p><p> 5、增強(qiáng)功能:支持用戶(hù)注冊(cè)、添加和刪除好友、戰(zhàn)績(jī)顯示、發(fā)送消息、接受消息、多人聊天等功能;使用數(shù)據(jù)庫(kù)保存用戶(hù)信息。</p><p><b> 2)創(chuàng)新要求:</b></p><p> 以上任務(wù)還未完善,悔棋、用戶(hù)列表區(qū)及增強(qiáng)功能板塊未完善。今后,參考資料書(shū),實(shí)現(xiàn)
9、五子棋網(wǎng)絡(luò)對(duì)戰(zhàn)及數(shù)據(jù)庫(kù)的利用。</p><p> 3)課程設(shè)計(jì)論文編寫(xiě)要求</p><p> ?。?)課程設(shè)計(jì)任務(wù)及要求</p><p> (2)設(shè)計(jì)思路--工作原理、功能規(guī)劃</p><p> ?。?)詳細(xì)設(shè)計(jì)---數(shù)據(jù)分析、算法思路、類(lèi)設(shè)計(jì)、功能實(shí)現(xiàn)(含程序流程圖、主要代</p><p> 碼及注釋?zhuān)?、界面?/p>
10、。</p><p> ?。?)運(yùn)行調(diào)試與分析討論---給出運(yùn)行屏幕截圖,分析運(yùn)行結(jié)果,有何改進(jìn)想法等。</p><p> ?。?)設(shè)計(jì)體會(huì)與小結(jié)---設(shè)計(jì)遇到的問(wèn)題及解決辦法,通過(guò)設(shè)計(jì)學(xué)到了哪些新知識(shí),</p><p> 鞏固了哪些知識(shí),有哪些提高。</p><p> ?。?)參考文獻(xiàn)(必須按標(biāo)準(zhǔn)格式列出,可參考教材后面的參考文獻(xiàn)格式)&l
11、t;/p><p> ?。?)報(bào)告按規(guī)定排版打印,要求裝訂平整,否則要求返工;</p><p> ?。?)課設(shè)報(bào)告的裝訂順序如下:封面---任務(wù)書(shū)---中文摘要---目錄----正文---附錄</p><p><b> (代碼及相關(guān)圖片)</b></p><p> 學(xué)生簽名: </p><
12、;p> 11年 12月 23 日</p><p> 課程設(shè)計(jì)(論文)評(píng)審意見(jiàn)</p><p> ?。?)考勤(10分):優(yōu)( )、良( )、中( )、一般(?。⒉睿ā。?; </p><p> ?。?)程序檢查(30分):優(yōu)(?。⒘迹ā。⒅校ā。⒁话悖ā。⒉睿ā。?</p><p> ?。?)課設(shè)答辯(20分):優(yōu)(?。?/p>
13、、良(?。?、中( )、一般(?。?、差(?。?; </p><p> ?。?)課設(shè)報(bào)告(40分):優(yōu)( )、良( )、中( )、一般(?。⒉睿ā。?;</p><p><b> 目 錄</b></p><p> 一、課程設(shè)計(jì)任務(wù)及要求5</p><p><b> 二、需求分析5</b><
14、/p><p> 2.1 棋盤(pán)板塊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è)計(jì)思路5</b><
15、/p><p> 3.1 板塊的顯示5</p><p> 3.2 注冊(cè)監(jiān)聽(tīng)5</p><p> 3.3 ChatServer6</p><p><b> 3.4 下棋6</b></p><p><b> 四、詳細(xì)設(shè)計(jì)6</b></p><p&
16、gt; 4.1 源程序代碼........................................................... ........................... 6</p><p> 4.2 ChatSever類(lèi)13</p><p> 五、運(yùn)行調(diào)試與分析討論13</p><p> 六、設(shè)計(jì)體會(huì)與小結(jié)15<
17、/p><p><b> 七、參考文獻(xiàn)15</b></p><p> 一、課程設(shè)計(jì)任務(wù)及要求</p><p> 1、五子棋游戲室界面:用戶(hù)可以選擇對(duì)弈桌及角色(執(zhí)黑、執(zhí)白、旁觀);</p><p> 游戲界面:有開(kāi)始、退出、悔棋、判斷勝負(fù);發(fā)言及顯示區(qū);用戶(hù)列表 </p><p>
18、;<b> 區(qū);棋盤(pán)繪制區(qū);</b></p><p> 3、使用Socket來(lái)完成服務(wù)端和客戶(hù)端的通信;</p><p> 4、使用多線程技術(shù)支持多用戶(hù)操作;</p><p> 5、增強(qiáng)功能:支持用戶(hù)注冊(cè)、添加和刪除好友、戰(zhàn)績(jī)顯示、發(fā)送消息、接 </p><p> 受消息、多人聊天等功能;使用數(shù)據(jù)庫(kù)保存用
19、戶(hù)信息。</p><p><b> 二、需求分析</b></p><p><b> 2.1 棋盤(pán)板塊</b></p><p> 畫(huà)一個(gè)15×15的棋盤(pán)版面,及兩個(gè)按鈕組。初始化:開(kāi)始、重置、 </p><p> 退出;角色選擇:黑方、白方、旁觀。</p>
20、;<p><b> 2.2 聊天板塊</b></p><p> 聊天信息顯示區(qū),聊天信息輸入?yún)^(qū)。</p><p> 2.3 ChatSever </p><p> 模擬服務(wù)器:用于橋接不同用戶(hù),實(shí)現(xiàn)接收用戶(hù)發(fā)出的信息,然后</p><p> 將信息傳遞到每個(gè)用戶(hù)的聊天窗口。</p>
21、<p><b> 2.4 編譯環(huán)境</b></p><p> Eclipse 實(shí)驗(yàn)室上機(jī) 在宿舍編寫(xiě)</p><p><b> 2.5 參考資料</b></p><p> Java 語(yǔ)言使用教程,百度文庫(kù)資料(五子棋判斷勝負(fù)算法)。</p><p><b> 三、設(shè)計(jì)
22、思路</b></p><p><b> 3.1 板塊的顯示</b></p><p> 畫(huà)棋盤(pán) 調(diào)用public void paint(Graphics g){QiPan(g);}方法</p><p> 畫(huà)一個(gè)15×15的棋盤(pán)面版。</p><p> 初始化 定義兩個(gè)Panel P
23、1、P2,在初始化板塊將JButton 開(kāi)始、</p><p> 重置,退出加入到P1,將黑方、白方、旁觀加入到P2。</p><p> 聊天板塊 在初始化時(shí)定義一個(gè)JTextArea 和一個(gè)JTextField 實(shí)現(xiàn)聊</p><p><b> 天功能</b></p><p> 3.2 注冊(cè)監(jiān)聽(tīng) </
24、p><p> 對(duì)角色選擇按鈕注冊(cè)ActionListener監(jiān)聽(tīng),設(shè)置用戶(hù)的角色。定義黑子int類(lèi)型 0,白子1。</p><p> 對(duì)按鈕開(kāi)始、重置注冊(cè)ActionListener監(jiān)聽(tīng),如果點(diǎn)擊開(kāi)始,用戶(hù)進(jìn) 入下棋狀態(tài),有一方贏了,棋盤(pán)上則不能再點(diǎn)擊棋子。點(diǎn)擊重置,則開(kāi)始新的一輪。</p><p> 對(duì)鼠標(biāo)注冊(cè)mouseClicked監(jiān)聽(tīng),鼠標(biāo)點(diǎn)擊棋盤(pán)時(shí)獲取下棋
25、的位置。</p><p> 對(duì)JTextField注冊(cè)ActionListener,用戶(hù)輸入聊天信息后,通過(guò)Server傳遞給其他用戶(hù),在對(duì)話框JTextArea內(nèi)顯示。</p><p> 3.3 ChatServer</p><p> class ServerThread implements Runnable{ }類(lèi)監(jiān)聽(tīng)線程,監(jiān)聽(tīng)是否有客戶(hù)端法過(guò)信息來(lái)。&
26、lt;/p><p><b> 屬性: </b></p><p> Vector threads 向量存儲(chǔ)線程</p><p> Socket socket 服務(wù)端口</p><p> DataInputStream in 輸入流</p><p> DataOutputStream out
27、輸出流</p><p> int nid 用戶(hù)ID</p><p><b> 方法:</b></p><p> 構(gòu)造器public ServerThread(Socket socket,Vector threads)</p><p> 實(shí)現(xiàn)信息的輸入、輸出</p><p> 實(shí)現(xiàn)pub
28、lic void run()監(jiān)聽(tīng)客戶(hù)端是否發(fā)信息過(guò)來(lái),當(dāng)客戶(hù)離開(kāi)時(shí)向 </p><p> 其他客戶(hù)發(fā)信息,把客戶(hù)端的信息發(fā)給其他客戶(hù)。 </p><p> 服務(wù)器向客戶(hù)端發(fā)信息public void write(String msg)</p><p>
29、; 獲取線程IDpublic int getID()</p><p> 設(shè)置線程IDpublic void setID(int nid)</p><p> 在Chatserver類(lèi)內(nèi)調(diào)用ServerThread 實(shí)現(xiàn)對(duì)所有來(lái)訪客戶(hù)監(jiān)聽(tīng),為來(lái)訪者設(shè)置ID,若有離開(kāi)用戶(hù),則在聊天板塊廣播。</p><p><b> 3.4 下棋</b>&l
30、t;/p><p> 用二維數(shù)組模擬棋盤(pán)chessbody[17][17],黑方下棋,則黑方所下棋位置的值等于旗子的顏色加一,白方類(lèi)似。最后1代表下了黑棋,2表示下了白棋,0表示沒(méi)下棋。</p><p> 從橫向、縱向、斜方向判斷勝負(fù)。下完一步判斷一次,有一個(gè)方向上同色棋子數(shù)超過(guò)5,則勝負(fù)已判斷。</p><p><b> 四、詳細(xì)設(shè)計(jì)</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)識(shí) 0:白子
33、 1:黑子 int intGame_Start=0;//游戲開(kāi)始標(biāo)志 0未開(kāi)始 1游戲中 int intGame_Body[][]=new int[16][16]; //設(shè)置棋盤(pán)棋子狀態(tài) 0 無(wú)子 1 白子 2 黑子 Button b1=new Button("
34、游戲開(kāi)始"); Button b2=new Button("重置游戲"); Label lblWin=new La</p><p> 4.2 ChatSever類(lèi)</p><p> public void run(){</p><p> System.out.println (&
35、quot;Thread is running");</p><p><b> try{</b></p><p> //監(jiān)聽(tīng)客戶(hù)端是否發(fā)消息過(guò)來(lái)</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)某客戶(hù)離開(kāi),給其它客戶(hù)端發(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> //把某客戶(hù)端發(fā)過(guò)來(lái)的發(fā)送到所有客戶(hù)端</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 棋盤(pán)</b></p><p> 圖5—1 棋盤(pán)圖,當(dāng)選擇好黑白角色后點(diǎn)擊開(kāi)
40、始,便可以下棋;點(diǎn)擊重置時(shí)重新開(kāi)始下棋;點(diǎn)擊退出時(shí)結(jié)束游戲,并退出。 該棋盤(pán)未實(shí)現(xiàn)網(wǎng)絡(luò)棋盤(pán),只能自己跟自己下棋。還欠缺悔棋步驟,可以用Vector存儲(chǔ)已下的棋子的信息,調(diào)用repaiant() 然后再畫(huà)除最后一步的棋盤(pán),實(shí)現(xiàn)悔棋操作。由于對(duì)Socket 用法還不熟悉,不能將棋盤(pán)通信與聊天通信區(qū)分開(kāi)來(lái),也就不能實(shí)現(xiàn)聯(lián)網(wǎng)下棋。</p><p> 圖5—2ChatServer</p><p>
41、 如果用戶(hù)登錄則監(jiān)聽(tīng) listening ......、accept a client使用了Socket,和多線程技術(shù)。定義了Vector 存儲(chǔ)用戶(hù)線程,實(shí)現(xiàn)ChatServer將信息傳遞給每個(gè)用戶(hù),接收每個(gè)用戶(hù)的信息。</p><p><b> 圖5—3聊天對(duì)話框</b></p><p> 用戶(hù)4、5進(jìn)入了聊天,對(duì)話。當(dāng)對(duì)話框縮小或關(guān)閉時(shí)ChatServer都
42、會(huì)發(fā)出用戶(hù)離開(kāi)的消息。此對(duì)話框可以允許多個(gè)用戶(hù)群聊,但是少了一個(gè)窗口顯示所有在線用戶(hù)信息。即要求五,增強(qiáng)功能未實(shí)現(xiàn)。不能實(shí)現(xiàn)用戶(hù)注冊(cè),添加好友,查看好有信息,對(duì)于數(shù)據(jù)庫(kù)的使用不太熟悉。</p><p><b> 六、設(shè)計(jì)體會(huì)與小結(jié)</b></p><p> 經(jīng)過(guò)為期一周的課程設(shè)計(jì),感覺(jué)自己所學(xué)遠(yuǎn)遠(yuǎn)不能解決做課設(shè)時(shí)的需求。在熟悉課本和上網(wǎng)搜索后,才算馬馬虎虎的完成了
43、任務(wù)。</p><p> 我曾經(jīng)對(duì)這種傳說(shuō)中KO榜上排名第一的編程語(yǔ)言充滿期待和憧憬,但到了真正實(shí)驗(yàn)的時(shí)候才發(fā)現(xiàn)我的想法是多么幼稚和一廂情愿??赡苁刮覍?duì)它還缺乏足夠的了解,可能我所追求的優(yōu)點(diǎn)正好都是Java的弱項(xiàng),可能我內(nèi)心還存在著一點(diǎn)點(diǎn)對(duì)它的偏見(jiàn),但是在我使用Java的頭幾十個(gè)小時(shí)中,它沒(méi)有表現(xiàn)出任何一點(diǎn)能夠取悅我,讓我眼前一亮的東西——連一點(diǎn)趨勢(shì)都沒(méi)有。我非常認(rèn)可這點(diǎn),就是Java是一種完美的面向?qū)ο蟮木幊?/p>
44、語(yǔ)言,以至于它似乎沒(méi)有面向用戶(hù)什么東西。</p><p> 在畫(huà)棋盤(pán)時(shí),調(diào)用draw方法對(duì)于畫(huà)圖這塊的坐標(biāo)布置,在今后學(xué)畫(huà)其他圖畫(huà)時(shí)能夠得心應(yīng)手。獲取棋子方法的巧妙,注冊(cè)鼠標(biāo),獲取點(diǎn)擊位置,除以棋盤(pán)間隔,去掉不為整數(shù)的一塊,再乘以棋盤(pán)間隔便獲得最臨近點(diǎn)的下棋坐標(biāo),即所要下棋的位置。用二維數(shù)組模擬棋盤(pán),無(wú)棋子的置為0,黑子置為1,白子置為2,以便在判斷勝負(fù)時(shí)利于同色棋子的查找。整個(gè)棋盤(pán)就模擬出來(lái)了,很巧妙,不過(guò)有
45、更好的方法用向量存儲(chǔ)棋子信息,便于悔棋等操作。</p><p> 這次的課程設(shè)計(jì)感覺(jué)不是很成功,平時(shí)學(xué)的東西不能靈活應(yīng)用,頭腦一片漿糊似的,搞不太清楚java程序,今后將多倍學(xué)習(xí)、多加鍛煉、多加積累知識(shí)……</p><p><b> 七、參考文獻(xiàn)</b></p><p> [1]丁振凡. Java語(yǔ)言實(shí)用教程(第2版)[M]. 北京郵電大
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- java五子棋課程設(shè)計(jì)
- java課程設(shè)計(jì)--五子棋
- 五子棋java課程設(shè)計(jì)
- 五子棋java課程設(shè)計(jì)
- java課程設(shè)計(jì)--五子棋游戲
- java課程設(shè)計(jì)--對(duì)戰(zhàn)五子棋
- java課程設(shè)計(jì)-五子棋游戲
- java課程設(shè)計(jì)報(bào)告-五子棋
- java課程設(shè)計(jì)--人機(jī)對(duì)弈五子棋
- 五子棋java語(yǔ)言課程設(shè)計(jì)報(bào)告
- java課程設(shè)計(jì)報(bào)告---java 五子棋游戲設(shè)計(jì)
- 五子棋課程設(shè)計(jì)
- java五子棋畢業(yè)設(shè)計(jì)--java五子棋對(duì)弈程序的設(shè)計(jì)與實(shí)現(xiàn)
- java課程設(shè)計(jì)五子棋(附源代碼)
- java_五子棋小游戲課程設(shè)計(jì)
- 課程設(shè)計(jì)---五子棋游戲的實(shí)現(xiàn)
- 五子棋-課程設(shè)計(jì)報(bào)告
- 課程設(shè)計(jì)---五子棋游戲的實(shí)現(xiàn).docx
- java課程設(shè)計(jì)報(bào)告---單機(jī)版五子棋
- 網(wǎng)絡(luò)五子棋五子棋設(shè)計(jì)與實(shí)現(xiàn).doc
評(píng)論
0/150
提交評(píng)論