動(dòng)物換位游戲java課設(shè)_第1頁(yè)
動(dòng)物換位游戲java課設(shè)_第2頁(yè)
動(dòng)物換位游戲java課設(shè)_第3頁(yè)
動(dòng)物換位游戲java課設(shè)_第4頁(yè)
動(dòng)物換位游戲java課設(shè)_第5頁(yè)
已閱讀5頁(yè),還剩15頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、成績(jī)?cè)u(píng)定表學(xué)生姓名班級(jí)學(xué)號(hào)專業(yè)課程設(shè)計(jì)題目基于Java的動(dòng)物換位游戲軟件設(shè)計(jì)評(píng)語(yǔ)組長(zhǎng)簽字:成績(jī)?nèi)掌?013年 月日課程設(shè)計(jì)任務(wù)書(shū)學(xué)院信息學(xué)院專業(yè)學(xué)生姓名班級(jí)學(xué)號(hào)課程設(shè)計(jì)題目基于Java的動(dòng)物換位游戲軟件設(shè)計(jì)實(shí)踐教學(xué)要求與任務(wù):米用java技術(shù)設(shè)計(jì)動(dòng)物換位游戲軟件,設(shè)計(jì)要求如下:(1)程序分為3個(gè)級(jí)別,用戶可以通過(guò)界面上提供的菜單來(lái)選擇“初級(jí)”、“中級(jí)”和“高級(jí)”這三個(gè)級(jí)別。對(duì)于“初級(jí)”級(jí)別,在水平排列的7塊石頭上的左右各有3個(gè)類(lèi)型相同的動(dòng)物,中間的石頭上沒(méi)有動(dòng)物;對(duì)于“中級(jí)”級(jí)別,在水平排列的9塊石頭上的左右各有4個(gè)類(lèi)型相同的動(dòng)物,中間的石頭上沒(méi)有動(dòng)物; 對(duì)于“高級(jí)”級(jí)別,在水平排列的11塊石

2、頭上的左右各有5個(gè)類(lèi)型相同的動(dòng)物, 中間的石頭上沒(méi)有動(dòng)物。(2)用鼠標(biāo)單擊一個(gè)動(dòng)物,如果該動(dòng)物的前方的石頭上沒(méi)有動(dòng)物,該動(dòng)物就跳躍到 該石頭上,如果該動(dòng)物前方的石頭上有其他的動(dòng)物, 但隔位上的石頭沒(méi)有動(dòng)物, 該動(dòng)物就越過(guò)自己前面的動(dòng)物跳躍到石頭上,其他情形時(shí),該動(dòng)物不跳躍(跳 躍時(shí)不能超過(guò)2塊石頭)。(3)左面的動(dòng)物只能向右方跳躍,右面的動(dòng)物只能向左方跳躍。(4)用戶可以通過(guò)單擊界面上提供的按鈕,讓程序自動(dòng)完成動(dòng)物換位。(5)可以隨時(shí)單擊界面上提供的按鈕,重新開(kāi)始當(dāng)前的級(jí)別。(6)用戶通過(guò)菜單選項(xiàng),可以選擇左、右動(dòng)物的圖像。工作計(jì)劃與進(jìn)度安排:第18周:布置課程設(shè)計(jì)任務(wù),查閱資料,分組設(shè)計(jì),程

3、序調(diào)試。第19周:程序調(diào)試,編寫(xiě)課程設(shè)計(jì)報(bào)告,驗(yàn)收,答辯。指導(dǎo)教師:2013年6月20日專業(yè)負(fù)責(zé)人:2013年6月20日學(xué)院教學(xué)副院長(zhǎng):2013年6月20日目錄1. 設(shè)計(jì)目的 42. 設(shè)計(jì)內(nèi)容 43. 課程軟件主要功能 44. 類(lèi)總體設(shè)計(jì) 4類(lèi)組合關(guān)系圖 5主類(lèi) 5其他類(lèi) 55. 類(lèi)詳細(xì)設(shè)計(jì)(畫(huà) UML圖)66. 關(guān)鍵類(lèi)成員函數(shù)流程圖及 代碼 7總體流程圖 7程序代碼 87. 軟件運(yùn)行結(jié)果 148. 結(jié)論 16參考文獻(xiàn) 161.設(shè)計(jì)目的1. 通過(guò)實(shí)驗(yàn),使學(xué)生進(jìn)一步加深面向?qū)ο蟮木幊淘O(shè)計(jì)思想;2. 訓(xùn)練掌握、加深理解并鞏固 Java程序設(shè)計(jì)課程中所學(xué)到的基本概念、編程思路;3. 綜合運(yùn)用Java

4、程序設(shè)計(jì)的編程方法,能夠利用這些程序設(shè)計(jì)方法來(lái)解決工程和科研中常見(jiàn)的 實(shí)際問(wèn)題;4. 培養(yǎng)分析解決問(wèn)題的實(shí)際動(dòng)手能力,進(jìn)一步提高進(jìn)行大型程序設(shè)計(jì)的能力。2. 設(shè)計(jì)要求設(shè)計(jì)GUI界面的動(dòng)物換位游戲,游戲的結(jié)果是讓左右兩組動(dòng)物交換位置。具體內(nèi)容如下:程序分為4個(gè)級(jí)別,用戶可以通過(guò)界面上提供的菜單選擇“初級(jí)”、“中級(jí)”、“高級(jí)”、“自定義”這4個(gè)級(jí)別。對(duì)于“初級(jí)”級(jí)別,在水平排列的7塊石頭上的左右各有 3個(gè)類(lèi)型相同的動(dòng)物,中間的石頭上沒(méi)有動(dòng)物;對(duì)于“中級(jí)”級(jí)別,在水平排列的9塊石頭上的左右各有 4個(gè)類(lèi)型相同的動(dòng)物,中間的石頭上沒(méi)有動(dòng)物;對(duì)于“高級(jí)”級(jí)別,在水平排列的11塊石頭上的左右各有 5個(gè)類(lèi)型相

5、同的動(dòng)物,中間的石頭上沒(méi)有動(dòng)物;對(duì)于“自定義”級(jí)別,用戶可以輸入自己想設(shè)置的一個(gè)動(dòng)物數(shù)量(輸 入的數(shù)必須是偶數(shù)),在水平排列的 N塊石頭上的左右各有(N-1)/2 個(gè)類(lèi)型相同的動(dòng)物,中間的石頭 上沒(méi)有動(dòng)物。3. 課程軟件主要功能程序分為不同的級(jí)別,左右各有動(dòng)物,中間石頭沒(méi)有動(dòng)物,將左右動(dòng)物交換,不可后退。用 鼠標(biāo)單擊一個(gè)動(dòng)物,如果該動(dòng)物前方的石頭上沒(méi)有動(dòng)物,該動(dòng)物就跳躍到該石頭上,如果該動(dòng)物前 方的石頭上有動(dòng)物,但隔位上的石頭沒(méi)有動(dòng)物,該動(dòng)物就越過(guò)自己前面的動(dòng)物躍到石頭上,其他情 形時(shí),該動(dòng)物不能跳躍。如果對(duì)游戲有疑問(wèn)可以點(diǎn)擊幫助,查看游戲規(guī)則。不能持續(xù)玩的可以點(diǎn)自 動(dòng)演示,將自動(dòng)完成游戲,可

6、以幫助游戲者更好的了解系統(tǒng)的主體功能4. 類(lèi)總體設(shè)計(jì)設(shè)計(jì)動(dòng)物換位時(shí)需要編寫(xiě) 10個(gè)Java源文件:、和。動(dòng)物換位除了需要編寫(xiě)上述10個(gè)Java源文件所給出的類(lèi)外,還需要Java系統(tǒng)提供的一些重要的類(lèi),如:Jmenultem、File和Jbutton類(lèi)等。動(dòng)物換位所用到的一些重要的類(lèi)以及之間組合關(guān)系如 圖4-1所示。類(lèi)組合關(guān)系圖以下是10個(gè)Java源文件的總體設(shè)計(jì):圖4-1類(lèi)之間的組合關(guān)系主類(lèi)ChangeAnimaIWindow類(lèi)負(fù)責(zé)創(chuàng)建動(dòng)物換位的主窗口,該類(lèi)含有main方法,程序從該類(lèi)開(kāi)始執(zhí)行。其他類(lèi)Animal類(lèi)是JPanel的一個(gè)子類(lèi),創(chuàng)建的對(duì)象是ChangeAnimaIWindow類(lèi)的重

7、要成員之一,用來(lái)表示“動(dòng)物”。Point類(lèi)負(fù)責(zé)創(chuàng)建確定位置的對(duì)象,使用Point對(duì)象,可以確定Animal以及Stone對(duì)象在窗體中的位置。Stone類(lèi)是JButton的一個(gè)子類(lèi),創(chuàng)建的對(duì)象表示“石頭”HandleMouse類(lèi)所創(chuàng)建的對(duì)象負(fù)責(zé)處理鼠標(biāo)事件。AutoMoveAnimal類(lèi)所創(chuàng)建的對(duì)象使用算法完成動(dòng)物的自動(dòng)換位。Customdig類(lèi)所創(chuàng)建的對(duì)象用來(lái)設(shè)置自定義”級(jí)別的動(dòng)物數(shù)量。People對(duì)象圭寸裝用戶的名字和成績(jī),以便ShowRecordDialog對(duì)象可以排序。Record類(lèi)是包中JDialog對(duì)話框的子類(lèi),當(dāng)用戶成功完成相應(yīng)級(jí)別的游戲時(shí),Record創(chuàng)建的對(duì)象負(fù)責(zé)保存用戶的名字

8、和成績(jī)到相應(yīng)的級(jí)別文件中。ShowRecordDialog類(lèi)是包中JDialog 對(duì)話框的子類(lèi),當(dāng)用戶單擊查看相應(yīng)的級(jí)別排行榜時(shí),ShowRecordDialog創(chuàng)建的對(duì)象負(fù)責(zé)顯示用戶的成績(jī)。5. 類(lèi)詳細(xì)設(shè)計(jì)(畫(huà)UML圖)ChangeAnimaIWindow類(lèi)是包中的 JFrame的一個(gè)子類(lèi),并實(shí)現(xiàn)了 ActionListener接口,標(biāo)明該類(lèi)的主要成員變量和方法的UML圖如圖5-1所示。以下是UML圖中有關(guān)數(shù)據(jù)和方法的詳細(xì)說(shuō)明:圖 5-1ChangeAnimaIWindow 類(lèi)的 UML 圖6. 關(guān)鍵類(lèi)成員函數(shù)流程圖及代碼總體流程圖是是否選擇級(jí)別否杲否選擇動(dòng)物團(tuán)目動(dòng)演示游我結(jié)m圖6-1總體流

9、程圖輸人游我者信/撤銷(xiāo)游進(jìn)人所選級(jí)別等進(jìn)入選擇動(dòng) 物團(tuán)像界面進(jìn)入游戲界面游殲開(kāi)始繼續(xù)游程序代碼import .*;import .*;import .*;import class Cha ngeA nimaIWi ndow exte nds JFrame impleme nts Actio nListe ner int amoun tOfA ni mal=6;int dista nce=80;Ani mal an imal;Poin t point;Stone stone;Han dleMouse han dleMouse;AutoMoveA ni mal autoMoveA ni mal;F

10、ile leftlmageFile,rightlmageFile;JButt on ren ew,quit,autoButt on=n ull;JMe nuBar bar;JMe nu men uGrade,me nul mage;JMe nultem on eGradeltem,twoGradeltem,threeGradeltem;JMe nultem leftlamge,rightlamge,defaultlmage;JPa nel pCe nter;Cha ngeA ni maIWi ndow()pCe nter=new JPa nel();J(nu ll);han dleMouse=

11、new Han dleMouse();autoMoveA ni mal=new AutoMoveA ni mal();leftImageFile=new File();rightlmageFile=new File();in it();bar=new JMe nuBar();menuGrade=new JMenu(選擇級(jí)別);menulmage=new JMenu(選擇動(dòng)物圖像(JPGGIF);on eGradeItem=new JMe nultem( 初級(jí));twoGradeItem=new JMe nultem(中級(jí)); threeGradeltem=n ew JMe nultem (高級(jí)

12、); leftlamge=new JMenultem(”左面動(dòng)物的圖像); rightlamge=new JMenultem(”右面動(dòng)物的圖像); defaultlmage=new JMenultem(左右面動(dòng)物的默認(rèn)圖像);(on eGradeltem);(twoGradeltem); (threeGradeltem); (leftlamge);(rightlamge);(defaultimage);(men uGrade);(menul mage);setJMe nuBar(bar);(this);(this);(this);(this);(this);(this);renew=new J

13、Button(重新開(kāi)始);(this);autoButton=new JButton(” 自動(dòng)演示);(this);quit=new JButto n(” 撤消);(this);JPa nel n orth=new JPa nel();(ren ew);(quit);(autoButto n);String mess=互換左右動(dòng)物位置;JLabel hin tMess=new JLabel(mess,; (hi ntMess);add( north,; add(pCe nter,;JPa nel south=new JPa nel();(ha ndleMouse); add(south,;se

14、tVisible(true);setBou nds(60,60,710,300);validate();setDefaultCloseOperati on;public void in it()ani mal=new An imalamou ntOfA nimal;point=new Poi ntamou ntOfA nimal+1; stone=new Ston eam oun tOfA ni mal+1; int space=dista nee;for(i nt i=0;i;i+)poi nti=new Poi nt(space,100);space=space+dista nee;for

15、(i nt i=0;i;i+)ani mali=new Ani mal();ani mali.addMouseListe ner(ha ndleMouse);if(i2)ani mali.setlsLeft(true);elseani mali.setlsLeft(false);for(i nt i=0;i;i+)ston ei=new Ston e();(st on ei);sto nei.setSize(dista nce*8/9,18);int w=st on ei.getBo un ds().width;int h=st on ei.getBo un ds().height;sto n

16、ei.setLocatio n( poi nti.getX()-w/2,poi nti.getY();poi nti.setThisSt on e(sto nei);for(i nt i=0;i;i+)an imali.setSize(dista nce*6/7,dista nce*3/4);int w=a ni mali.getBo un ds().width;int h=a nimali.getBo un ds().height;(a ni mali);if(i=2&m%2=0)amou ntOfA nimal=m;public void removeA ni malA ndSt on e

17、() for(i nt i=0;i;i+)if(poi nti.getThisA nimal()!=null)(poi nti.getThisA nimal();for(i nt i=0;i step=(); int len gth=();int start=-1,e nd=-1; if(le ngth=2) en d=(le ngth-1); start=(le ngth-2);(le ngth-1);(le ngth-2);Animal ani=poi nte nd.getThisA ni mal(); int w=().width;int h=().height;(poi ntstart

18、.getX()-w/2,poi ntstart.getY()-h);(poi ntstart);poi ntstart.setThisA ni mal(a ni); poi ntstart.setlsHaveA nimal(true); poi nte nd.setlsHaveA ni mal(false);else if()=leftlamge)JFileChooser chooser =new JFileChooser();FileNameExte nsionF ilter filter = new FileNameExte nsionF ilter( JPG & GIF Images,

19、jpg, gif);(filter);int state=( null);File file=();if(file!=null&state=leftImageFile=file;for(i nt i=0;i;i+)if(an imali.getlsLeft()=true)ani mali.setLeftlmage(leftlmageFile);ani mali.repai nt();else if()=rightIamge)JFileChooser chooser =new JFileChooser();FileNameExte nsionF ilter filter = new FileNa

20、meExte nsionF ilter(JPG & GIF Images, jpg, gif);(filter);int state=( null);File file=();if(file!=null&state=rightImageFile=file;for(i nt i=0;i;i+)if(an imali.getlsLeft()=false)an imali.setRightlmage(rightlmageFile);ani mali.repai nt();else if()=defaultlmage)leftImageFile=new File();rightlmageFile=ne

21、w File();for(i nt i=0;i;i+)if(an imali.getlsLeft()=true)ani mali.setLeftlmage(leftlmageFile);elsean imali.setRightlmage(rightlmageFile); ani mali.repai nt();validate。;public static void mai n(Stri ng args) new Cha ngeA nimaIWi ndow();7. 軟件運(yùn)行結(jié)果進(jìn)入游戲主界面:圖7-1主界面圖當(dāng)用戶不知怎么游戲時(shí),可以按下自動(dòng)演示,可以幫助用戶更好的了解,當(dāng)用 戶按下自動(dòng)演示時(shí)如圖所示:圖7-2自動(dòng)演示按鈕調(diào)試圖選擇級(jí)別菜單調(diào)試如圖所示:圖7-3選擇難度中級(jí)圖用戶覺(jué)得動(dòng)物圖像太單調(diào)時(shí),本系統(tǒng)可以有一個(gè)選擇不同動(dòng)物圖像的功能,根據(jù)用戶需求,可以選擇左邊圖像或右邊圖像,當(dāng)然也可以恢復(fù)默認(rèn)圖像,根據(jù)多變的選擇如圖所示:圖7-4選擇左邊動(dòng)物圖8. 結(jié)論這此課程設(shè)計(jì)我們做的是“動(dòng)物換位”游戲,主要是讓左右兩邊相同數(shù)量的

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論