




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、更多計(jì)算機(jī)類課程設(shè)計(jì)、畢業(yè)設(shè)計(jì)、論文請(qǐng)?jiān)L問(wèn):課程設(shè)計(jì)(論文)任務(wù)書 軟 件 學(xué) 院 學(xué)院 軟件+電子商務(wù) 專業(yè) 2 班 一、課程設(shè)計(jì)(論文)題目 華容道一個(gè)傳統(tǒng)的智力游戲 二、課程設(shè)計(jì)(論文)工作自 2010 年 12 月 20 日起至 2010 年 12 月 24 日止。三、課程設(shè)計(jì)(論文) 地點(diǎn): 軟 件 學(xué) 院 實(shí) 訓(xùn) 中 心 四、課程設(shè)計(jì)(論文)內(nèi)容要求:1本課程設(shè)計(jì)的目的(1)掌握java語(yǔ)言的程序設(shè)計(jì)方法; (2)理論聯(lián)系實(shí)際,進(jìn)一步提高學(xué)生的軟件開(kāi)發(fā)技術(shù);(3)培養(yǎng)學(xué)生分析、解決問(wèn)題的能力;(4)提高學(xué)生實(shí)踐論文撰寫能力。2課程設(shè)計(jì)的任務(wù)及要求1)課程設(shè)計(jì)任務(wù):用java語(yǔ)言編寫
2、一個(gè)華容道小游戲2)創(chuàng)新要求:在基本要求達(dá)到后,可進(jìn)行創(chuàng)新設(shè)計(jì)3)課程設(shè)計(jì)論文編寫要求(1)課程設(shè)計(jì)任務(wù)及要求(2)設(shè)計(jì)思路-工作原理、功能規(guī)劃(3)詳細(xì)設(shè)計(jì)-數(shù)據(jù)分析、算法思路、類設(shè)計(jì)、功能實(shí)現(xiàn)(含程序流程圖、主要代碼及注釋)、界面等。(4)運(yùn)行調(diào)試與分析討論-給出運(yùn)行屏幕截圖,分析運(yùn)行結(jié)果,有何改進(jìn)想法等。(5)設(shè)計(jì)體會(huì)與小結(jié)-設(shè)計(jì)遇到的問(wèn)題及解決辦法,通過(guò)設(shè)計(jì)學(xué)到了哪些新知識(shí),鞏固了哪些知識(shí),有哪些提高。(6)參考文獻(xiàn)(必須按標(biāo)準(zhǔn)格式列出,可參考教材后面的參考文獻(xiàn)格式)(7)報(bào)告按規(guī)定排版打印,要求裝訂平整,否則要求返工;(8)課設(shè)報(bào)告的裝訂順序如下:封面-任務(wù)書-中文摘要-目錄-正文-
3、附錄(代碼及相關(guān)圖片)(9) 嚴(yán)禁抄襲,如有發(fā)現(xiàn),按不及格處理。4)課程設(shè)計(jì)評(píng)分標(biāo)準(zhǔn): (1)學(xué)習(xí)態(tài)度:10分;(2)系統(tǒng)設(shè)計(jì):20分;(3)編程調(diào)試:20分;(4)回答問(wèn)題:20分;(5)論文撰寫:30分。5)參考文獻(xiàn):(1)丁振凡. java語(yǔ)言實(shí)用教程(第2版)m. 北京郵電大學(xué)出版社. 2008.1 (2)丁振凡. java語(yǔ)言實(shí)用教程實(shí)驗(yàn)指導(dǎo)(第2版)m. 北京郵電大學(xué)出版社. 2008.1(3)楊樹(shù)林等. java語(yǔ)言最新實(shí)用案例教程(第2版)m. 清華大學(xué)出版社. 2010.76)課程設(shè)計(jì)進(jìn)度安排1準(zhǔn)備階段(4學(xué)時(shí)):選擇設(shè)計(jì)題目、了解設(shè)計(jì)目的要求、查閱相關(guān)資料2程序模塊設(shè)計(jì)分析
4、階段(4學(xué)時(shí)):程序總體設(shè)計(jì)、詳細(xì)設(shè)計(jì)3代碼編寫調(diào)試階段(8學(xué)時(shí)):程序模塊代碼編寫、調(diào)試、測(cè)試4撰寫論文階段(4學(xué)時(shí)):總結(jié)課程設(shè)計(jì)任務(wù)和設(shè)計(jì)內(nèi)容,撰寫課程設(shè)計(jì)論文學(xué)生簽名: 2010 年 12 月 20 日課程設(shè)計(jì)(論文)評(píng)審意見(jiàn)(1)學(xué)習(xí)態(tài)度(10分):優(yōu)()、良()、中()、一般()、差(); (2)系統(tǒng)設(shè)計(jì)(20分):優(yōu)( )、良()、中()、一般()、差(); (3)編程調(diào)試(20分):優(yōu)()、良()、中()、一般()、差();(4)回答問(wèn)題(20分):優(yōu)()、良()、中()、一般()、差();(5)論文撰寫(30分):優(yōu)()、良()、中()、一般()、差(); 評(píng)閱人: 職稱:
5、講師 2010 年 12 月 25 日中文摘要華容道,古老的中國(guó)游戲,以其變化多端、百玩不厭的特點(diǎn)與魔方、獨(dú)立鉆石棋一起被國(guó)外智力專家并稱為“智力游戲界的三個(gè)不可思議”。游戲就是依照“曹瞞兵敗走華容,正與關(guān)公狹路逢,只為當(dāng)初恩義重,放開(kāi)金鎖走蛟龍”這一故事情節(jié)設(shè)計(jì),受到很多玩家的喜愛(ài)。該程序用java語(yǔ)言編寫 ,棋盤上有10個(gè)不一樣大小的按鈕,分別代表曹操、張飛、趙云、馬超、黃忠和關(guān)羽,還有四個(gè)兵。棋盤最下方有兩個(gè)空著的小方格,代表曹操逃出的位置,可以實(shí)現(xiàn)通過(guò)鼠標(biāo)或者鍵盤移動(dòng)界面上的按鈕,最終使曹操移動(dòng)到棋盤最下方,代表曹操逃出華容道。 目錄一、課程設(shè)計(jì)任務(wù)及要求1二、需求分析2三、設(shè)計(jì)思路3
6、四、詳細(xì)設(shè)計(jì)4五、運(yùn)行調(diào)試與分析討論14六、設(shè)計(jì)體會(huì)與小結(jié)16七、參考文獻(xiàn)17一、課程設(shè)計(jì)任務(wù)及要求 1、 本程序主要練習(xí)使用布局管理器設(shè)計(jì)一個(gè)華容道游戲界面,并練習(xí)使用事件監(jiān)聽(tīng)器(鼠標(biāo)事件、鍵盤事件和焦點(diǎn)事件)實(shí)現(xiàn)按鈕的移動(dòng)。 2、編寫一個(gè)按鈕的子類,使用該子類創(chuàng)建的對(duì)象代表華容道中的人物。通過(guò)焦點(diǎn)事件控制人物顏色,當(dāng)人物獲得焦點(diǎn)時(shí)顏色為紅色,當(dāng)失去焦點(diǎn)時(shí)顏色為黃色。 3、通過(guò)鍵盤事件和鼠標(biāo)事件來(lái)實(shí)現(xiàn)曹操、關(guān)羽等人物的移動(dòng)。當(dāng)人物上發(fā)生鼠標(biāo)事件或鍵盤事件時(shí),如果鼠標(biāo)指針的位置是在人物的下方(也就是組件的下半部分)或按下鍵盤的“鍵,該人物向下移動(dòng)。向左、向右和向上的移動(dòng)原理類似。 4、點(diǎn)擊“重
7、新開(kāi)始”可以使各個(gè)按鈕復(fù)位,重新開(kāi)始游戲。二、需求分析要滿足的容道游戲的基本操作:1 各人物按鈕按相應(yīng)的順序和大小排列,按鈕上標(biāo)注人物名字,界面美觀。2 通過(guò)焦點(diǎn)事件控制人物按鈕的顏色,得到焦點(diǎn)呈紅色,失去焦點(diǎn)為淡黃色。3 可以通過(guò)鍵盤控制各個(gè)按鈕的移動(dòng):按“”鍵,人物按鈕向下移動(dòng)其它方向類似。4 可以通過(guò)鼠標(biāo)點(diǎn)擊來(lái)控制各個(gè)人物按鈕的移動(dòng):如果點(diǎn)擊的位置在按鈕的上半部分則向上移動(dòng),如果點(diǎn)擊按鈕的下半部分則向下,左右原理類似。5 有“重新開(kāi)始按鈕” 點(diǎn)擊重新開(kāi)始按鈕各個(gè)人物按鈕復(fù)位,能重新開(kāi)始游戲。6 小程序能夠自由的縮小,放大,關(guān)閉。三、設(shè)計(jì)思路 1.首先是界面設(shè)計(jì),該界面主要包括十個(gè)人物按鈕
8、(馬、曹操、關(guān)羽等)以及旁邊的四個(gè)邊框按鈕和重新開(kāi)始按鈕。對(duì)于人物按鈕,創(chuàng)建button按鈕的子類,在該類中定義按鈕的一些新的屬性和焦點(diǎn)事件監(jiān)聽(tīng)器,如:按鈕的標(biāo)簽名、按鈕的顏色、按鈕的排號(hào)(如這里有十個(gè)人物按鈕,從1排到十,在程序中可以依靠這個(gè)屬性區(qū)分人物按鈕)、按鈕顏色、按鈕獲得或失去焦點(diǎn)事件。同時(shí)在設(shè)計(jì)該界面時(shí)要考慮到各個(gè)按鈕的位置、大小等情況。 2.對(duì)界面上的各人物按鈕添加相應(yīng)的相應(yīng)事件焦點(diǎn)事件:通過(guò)焦點(diǎn)事件各個(gè)按鈕的是焦點(diǎn)。鼠標(biāo)事件、鍵盤事件:通過(guò)這兩種事件去完成界面上各人物按鈕的移動(dòng)。對(duì)重新開(kāi)始按鈕定義動(dòng)作事件(actionevent)完成界面初始化功能也 就是各人物按鈕重新歸位。四
9、、詳細(xì)設(shè)計(jì)1.類的設(shè)計(jì)本程序總共有3個(gè)類(1)moveexample 類public class moveexample public static void main(string args)/定義主方法 new hua_rong_road();/創(chuàng)建一個(gè)hua_rong_road對(duì)象 (2)person 類 增加焦點(diǎn)事件監(jiān)視器:addfocuslistener(事件監(jiān)聽(tīng)器)當(dāng)組件具有焦點(diǎn)監(jiān)視器后,如果組件從無(wú)輸入焦點(diǎn)變成有輸入焦點(diǎn)或從有輸入焦點(diǎn)到無(wú)輸入焦點(diǎn)都會(huì)觸發(fā)focusevent事件。創(chuàng)建監(jiān)視器的類必須要實(shí)現(xiàn)focuslistener接口,該接口有兩個(gè)方法:public void fo
10、cusgained(final focusevent e) /獲得焦點(diǎn)觸發(fā)public void focuslost(final focusevent e) /失去焦點(diǎn)觸發(fā)當(dāng)組件從無(wú)輸入焦點(diǎn)變成有輸入焦點(diǎn)并觸發(fā)focusevent事件時(shí),監(jiān)視器調(diào)用類實(shí)現(xiàn)的接口方法focusgained(focusevent e);當(dāng)組件從有輸入焦點(diǎn)變成無(wú)輸入焦點(diǎn)并觸發(fā)focusevent事件時(shí),監(jiān)視器調(diào)用類實(shí)現(xiàn)方法focuslost(focusevent e)。 class person extends button implements focuslistener int number; color c=n
11、ew color(255,245,170);/設(shè)置顏色/preson 方法 public person(final int number,final string s) super(s); setbackground(c);/背景色 this.number=number; c=getbackground(); addfocuslistener(this);/事件焦點(diǎn)監(jiān)聽(tīng) public void focusgained(final focusevent e) /獲得焦點(diǎn)觸發(fā) setbackground(color.red);/獲得焦點(diǎn)的顏色 public void focuslost(final
12、 focusevent e) /失去焦點(diǎn)觸發(fā) setbackground(c); (3)hua_rong_road 類 游戲界面主要包括十個(gè)人物按鈕馬、曹操、關(guān)羽等。對(duì)于人物按鈕,在該類中定義按鈕的一些新的屬性和焦點(diǎn)事件監(jiān)聽(tīng)器,如:按鈕的標(biāo)簽名、按鈕的顏色、按鈕的排號(hào)(如這里有十個(gè)人物按鈕,從1排到十,在程序中可以依靠這個(gè)屬性區(qū)分人物按鈕)、按鈕顏色、按鈕獲得或失去焦點(diǎn)事件。同時(shí)在設(shè)計(jì)該界面時(shí)要考慮到各個(gè)按鈕的位置、大小等情況。class hua_rong_road extends frame implements mouselistener,keylistener,actionlistene
13、r person person=new person10; button left,right,above,below; button restart=new button(重新開(kāi)始);/添加重新開(kāi)始按鈕 hua_rong_road()方法設(shè)置容器 public hua_rong_road() init();/設(shè)置按鈕 setbounds(100,100,320,360);/組件在容器上的起點(diǎn)和長(zhǎng)寬 setvisible(true);/ 像控件中添加元素 validate();/刷新 addwindowlistener(new windowadapter()/注冊(cè)窗口事件監(jiān)聽(tīng) public v
14、oid windowclosing(windowevent e)/關(guān)閉 system.exit(0); ); init()方法 設(shè)置10個(gè)按鈕 public void init() setlayout(null);/設(shè)置布局默認(rèn) add(restart);/添加重新開(kāi)始 restart.setbounds(100,320,120,25);/按鈕大小 restart.addactionlistener(this);/注冊(cè)監(jiān)聽(tīng) string name=曹操,關(guān)羽,張飛,劉備,趙云,黃忠,兵 ,兵,兵,兵; for(int k=0;kh/2) go(man,below); if(yh/2) go(m
15、an,above); if(xw/2) go(man,right); 用 go方法控制人物按鈕上下左右移動(dòng):鼠標(biāo)點(diǎn)擊想要移動(dòng)的人物,使用鍵盤上,下,左,右來(lái)控制人物的移動(dòng)。(需要鼠標(biāo)以及鍵盤的響應(yīng))。通過(guò)向上的響應(yīng)來(lái)使得人物向上走,并判斷是否與其他人物重疊,若重疊則返回上單元,若不重疊的繼續(xù)。通過(guò)向上的響應(yīng)來(lái)使得人物向下走,并判斷是否與其他人物重疊,若重疊則返回上單元,若不重疊的繼續(xù)。通過(guò)向上的響應(yīng)來(lái)使得人物向左走,并判斷是否與其他人物重疊,若重疊則返回上單元,若不重疊的繼續(xù)。當(dāng)前人物向上與其他人物不重疊,則向上前進(jìn)五十單元。當(dāng)前人物向下與其他人物不重疊,則向下前進(jìn)五十單元。當(dāng)前人物向左與其他
16、人物不重疊,則向左前進(jìn)五十單元。通過(guò)向上的響應(yīng)來(lái)使得人物向右走,并判斷是否與其他人物重疊,若重疊則返回上單元,若不重疊的繼續(xù)。當(dāng)前人物向右與其他人物不重疊,則向右前進(jìn)五十單元。 public void go(person man,button direction) boolean move=true; rectangle manrect=man.getbounds(); int x=man.getbounds().x; int y=man.getbounds().y; if(direction=below)/向各個(gè)方向上的移動(dòng) y=y+50; else if(direction=above)
17、y=y-50; else if(direction=left) x=x-50; else if(direction=right) x=x+50; manrect.setlocation(x,y); rectangle directionrect=direction.getbounds(); for(int k=0;k10;k+) rectangle personrect=personk.getbounds();if(manrersects(personrect)&(man.number!=k)/如果覆蓋就不移動(dòng) move=false; if(manrersects(
18、directionrect) move=false; if(move=true) /移動(dòng)到新的位置 man.setlocation(x,y); 發(fā)生操作時(shí)調(diào)用: public void actionperformed(actionevent e) dispose(); new hua_rong_road(); 2. 流程圖如圖二:圖二:流程圖五、運(yùn)行調(diào)試與分析討論運(yùn)行結(jié)果1. 運(yùn)行小程序如圖3所示: 圖三2. 點(diǎn)擊按鈕使按鈕獲得焦點(diǎn)如圖四所示: 圖四3.用鼠標(biāo)或者鍵盤移動(dòng)人物按鈕如圖五: 圖五4. 點(diǎn)擊重新開(kāi)始按鈕后如圖六所示: 圖六 第 16 頁(yè) 6、 設(shè)計(jì)體會(huì)與小結(jié) 通過(guò)本程序,我練習(xí)使用
19、布局管理器設(shè)計(jì)了一個(gè)華容道游戲界面,并且練習(xí)使用事件監(jiān)聽(tīng)器監(jiān)聽(tīng)焦點(diǎn)的得失,首先增加焦點(diǎn)事件監(jiān)視器:addfocuslistener(事件監(jiān)聽(tīng)器),當(dāng)組件具有焦點(diǎn)監(jiān)視器后,如果組件從無(wú)輸入焦點(diǎn)變成有輸入焦點(diǎn)或從有輸入焦點(diǎn)到無(wú)輸入焦點(diǎn)都會(huì)觸發(fā)focusevent事件。創(chuàng)建監(jiān)視器的類必須要實(shí)現(xiàn)focuslistener接口,該接口有兩個(gè)方法:public void focusgained(focusevent e) /獲得焦點(diǎn)觸發(fā)public void focuslost(focusevent e) /失去焦點(diǎn)觸發(fā) 練習(xí)了通過(guò)鼠標(biāo)事件實(shí)現(xiàn)按鈕的移動(dòng),鼠標(biāo)事件的類型是mouseevent,即組件觸發(fā)鼠
20、標(biāo)時(shí),mouseevent類自動(dòng)創(chuàng)建一個(gè)事件對(duì)象。java分別使用mouselistener接口與mousemotionlistener接口來(lái)處理鼠標(biāo)事件。mouselistener接口可以處理5種鼠標(biāo)事件:?jiǎn)螕?、按下、釋放、進(jìn)入和退出。mousemotionlistener接口可以處理2種鼠標(biāo)事件:拖動(dòng)、移動(dòng)。 練習(xí)了通過(guò)鍵盤事件實(shí)現(xiàn)按鈕的移動(dòng),當(dāng)按下、釋放或敲擊鍵盤上一個(gè)鍵時(shí)就發(fā)生了鍵盤事件,當(dāng)一個(gè)組件處于激活狀態(tài)時(shí)(獲得焦點(diǎn)),敲擊鍵盤上一個(gè)鍵就導(dǎo)致了這個(gè)組件發(fā)生了鍵盤事件。事件源使用addkeylistener方法獲得監(jiān)視器。keyevent為鍵盤事件的類型,keylistener是事
21、件監(jiān)視器實(shí)現(xiàn)的接口,其中有三種相應(yīng)事件:按鍵、釋放鍵、按下和釋放的組合事件。public void keypressed(keyevent e)public void keytyped(keyevent e)public void keyreleased(keyevent e) 用keyevent類的public int getkeycode()方法和public char getkeychar()判斷哪個(gè)鍵被按下、敲擊或釋放。七、參考文獻(xiàn)1 作者:丁振凡 . 參考書籍名稱m:java語(yǔ)言實(shí)用教程. 出版地: 北京郵電大學(xué)出版社.出版年限:2007.2 作者:耿祥義 . 參考書籍名稱m: ja
22、va基礎(chǔ)教程 . 出版地: 清華大學(xué)出版社.出版年限:2009. 附錄(源碼清單)import java.awt.*;import java.awt.event.*;public class moveexample public static void main(string args) new hua_rong_road(); class person extends button implements focuslistener int number; color c = new color(255,245,170); person(int number,string s) super(s
23、); setbackground(c); this.number = number; c = getbackground(); addfocuslistener(this); public void focusgained(focusevent e) setbackground(color.red); public void focuslost(focusevent e) setbackground(c); class hua_rong_road extends frame implements mouselistener,keylistener,actionlistener person p
24、erson = new person10; button left,right,above,below; button restart = new button(重新開(kāi)始); public hua_rong_road() init(); setbounds(100,100,320,360); setvisible(true); validate(); addwindowlistener( new windowadapter() public void windowclosing(windowevent e) system.exit(0); ); public void init() setlayout(null); add(restart); restart.setbounds(100,320,120,25); restart.addactionlistener(this); string name = 曹操,關(guān)羽,張飛,劉備,趙云,黃忠,兵,兵,兵,兵; for(int k = 0;kh/2) go(man,below); if(yh/2) go(man,above); if(xw/2) go(man,righ
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 科技產(chǎn)品用戶體驗(yàn)設(shè)計(jì)案例分析
- 科技企業(yè)如何高效運(yùn)營(yíng)社交媒體
- 2025年中國(guó)礦用隔爆變壓器行業(yè)市場(chǎng)調(diào)查研究及投資前景展望報(bào)告
- 物流行業(yè)科技發(fā)展對(duì)商業(yè)環(huán)境的影響
- 科技展覽中網(wǎng)絡(luò)直播的技術(shù)要點(diǎn)
- 科技前沿如何實(shí)施高效移動(dòng)銷售管理
- 知識(shí)產(chǎn)權(quán)糾紛的預(yù)防與應(yīng)對(duì)策略
- 投資決策的系統(tǒng)性風(fēng)險(xiǎn)分析考核試卷
- 科技企業(yè)職場(chǎng)新人文化適應(yīng)手冊(cè)
- 2025年度辦事處分銷渠道管理合作協(xié)議
- 新教材青島版六三制四年級(jí)下冊(cè)科學(xué)全冊(cè)教案(教學(xué)設(shè)計(jì))
- DB11-T 825-2021綠色建筑評(píng)價(jià)標(biāo)準(zhǔn)
- 醫(yī)院招聘醫(yī)護(hù)人員報(bào)名登記表
- 完整解讀2022年《義務(wù)教育課程方案》2022年《義務(wù)教育課程方案(2022版)》新課標(biāo)PPT
- 央企最新版員工手冊(cè)vvv
- 新生兒科出科考試試卷試題
- 信息化教學(xué)設(shè)計(jì)教案大學(xué)語(yǔ)文
- 植物的營(yíng)養(yǎng)器官:根、莖、葉匯總
- 會(huì)議、匯報(bào)材料排版格式
- 華為公司產(chǎn)品線獎(jiǎng)金分配暫行辦法
- 兒童能力評(píng)估量表(PEDI拍迪)
評(píng)論
0/150
提交評(píng)論