版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
資料收集于網(wǎng)絡(luò),如有侵權(quán)請(qǐng)聯(lián)系網(wǎng)站刪除課程設(shè)計(jì)報(bào)告課程:面向?qū)ο蟪绦蛟O(shè)計(jì)學(xué)號(hào):姓名:班級(jí):教師:時(shí)間:計(jì)算機(jī)學(xué)院word可編輯資料收集于網(wǎng)絡(luò),如有侵權(quán)請(qǐng)聯(lián)系網(wǎng)站刪除設(shè)計(jì)名稱:模擬馬匹賽跑 日期: 2015年12月24日設(shè)計(jì)內(nèi)容:模擬的是一個(gè)真實(shí)的馬匹賽跑的游戲.采用GUI界面設(shè)計(jì),模擬的是一個(gè)二維的空間場(chǎng)景,有馬匹賽跑的起點(diǎn)和到達(dá)的終點(diǎn),對(duì)于每一匹參加賽跑的馬匹都有一個(gè)屬于自己的跑道,各個(gè)跑道都是等長(zhǎng)和等寬的.保證了馬匹賽跑的公平公正性。并且在界面中有兩個(gè)按鈕,用來控制比賽,相當(dāng)于裁判的哨子。一旦點(diǎn)擊按鈕就會(huì)啟動(dòng)比賽,在比賽的過程中,馬匹跑動(dòng)的速度不是固定的,而是隨機(jī)的,更加真實(shí)地模擬了馬匹賽跑。當(dāng)所有的馬匹到達(dá)了終點(diǎn),比賽就會(huì)結(jié)束。在界面中會(huì)顯示比賽中馬匹的名次和比賽所用的時(shí)間。設(shè)計(jì)目的與要求:一:基本要求1)設(shè)計(jì)GUI界面的馬匹賽跑。在界面中設(shè)置了比賽的起點(diǎn)和終點(diǎn),整個(gè)比賽的道路長(zhǎng)度是固定的。2)在整個(gè)比賽過程中,每個(gè)馬匹都有自己?jiǎn)为?dú)的跑道,各個(gè)馬匹之間的跑道是不會(huì)受到影響的。3)馬匹的跑道是有限的,所對(duì)應(yīng)的馬的數(shù)量也是有限的。因?yàn)榻缑娴拇笮∈怯邢薜摹?)各個(gè)馬匹的速度也是隨機(jī)的,不是恒定不變的。確保比賽公平性。5)在整個(gè)界面中設(shè)置了兩個(gè)按鈕,來控制整個(gè)比賽。6)一旦點(diǎn)擊了比賽開始的按鈕,就不能暫停比賽,只能等到比賽結(jié)束。1.2實(shí)現(xiàn)目的(1)模擬馬匹賽跑的過程,實(shí)現(xiàn)一種動(dòng)態(tài)地過程,而不僅僅是靜態(tài)的過程,只有比賽成績(jī)結(jié)果。(2)由于界面的局部性,造成了馬匹的局部性,因此在比賽的過程,可以設(shè)置參賽馬匹的個(gè)數(shù),使得不同數(shù)目的馬匹賽跑。設(shè)計(jì)環(huán)境或器材、原理與說明:一、設(shè)計(jì)環(huán)境:處理器:IntelCorei3內(nèi)存:8G硬盤空間:500G+120Gssd顯卡:1G獨(dú)顯操作系統(tǒng);window7中文旗艦版開發(fā)平臺(tái):64位jdk-8u45-windows-x64_V8.0.450.14.1429091672eclipse-jee-mars-1-win32-x86_64二、說明:模擬的是一個(gè)真實(shí)的馬匹賽跑的游戲.采用GUI界面設(shè)計(jì),模擬的是一個(gè)二維的空間場(chǎng)景,有馬匹賽跑的起點(diǎn)和到達(dá)的終點(diǎn),對(duì)于每一匹參加賽跑的馬匹都有一個(gè)屬于自己的跑道,各個(gè)跑道都是等長(zhǎng)和等寬的.保證了馬匹賽跑的公平word可編輯資料收集于網(wǎng)絡(luò),如有侵權(quán)請(qǐng)聯(lián)系網(wǎng)站刪除公正性。并且在界面中有兩個(gè)按鈕,用來控制比賽,相當(dāng)于裁判的哨子。一旦點(diǎn)擊按鈕就會(huì)啟動(dòng)比賽,在比賽的過程中,馬匹跑動(dòng)的速度不是固定的,而是隨機(jī)的,更加真實(shí)地模擬了馬匹賽跑。當(dāng)所有的馬匹到達(dá)了終點(diǎn),比賽就會(huì)結(jié)束。在界面中會(huì)顯示比賽中馬匹的名次和比賽所用的時(shí)間。設(shè)計(jì)過程(步驟)或程序代碼 (可以加頁(yè)):需求分析1.1界面及布局設(shè)計(jì)在比賽的界面,使用的是BorderLayout布局,采用了按鈕、面版等組件。按鈕的功能包括開始和重新開始,點(diǎn)擊開始,比賽就會(huì)開始,等到馬匹都跑到終點(diǎn),點(diǎn)擊重新開始,比賽到達(dá)終點(diǎn)的馬匹就會(huì)重新回到起點(diǎn),然后點(diǎn)擊開始,比賽就會(huì)重新開始。并且為按鈕設(shè)置了監(jiān)聽器,點(diǎn)擊按鈕就會(huì)觸發(fā)監(jiān)聽器,執(zhí)行相應(yīng)的動(dòng)作。1.2多線程的實(shí)現(xiàn)馬匹賽跑的過程就是一個(gè)多線程執(zhí)行的過程。每一個(gè)馬匹就是一個(gè)多線程。實(shí)現(xiàn)多線程的方式一般有兩種,一種是繼承Thread類,重寫Thread類里面的run方法,來實(shí)現(xiàn)多線程。另外一種方法是實(shí)現(xiàn)Runnable接口,重寫接口里面的run方法,來實(shí)現(xiàn)多線程。這里我選擇的是第二種,因?yàn)榈诙N方式更適合馬匹賽跑這類題目。類似的還有售票問題,都是應(yīng)用第二種方式來解決多線程問題。1.3馬匹的實(shí)現(xiàn)方法寫了一個(gè)馬匹的類,用來封裝馬匹的屬性。包括馬匹的速度、坐標(biāo)、是否存活、是否開始比賽、是否完成比賽等屬性。每匹馬的速度不是固定的,通過一個(gè)隨機(jī)函數(shù)來實(shí)現(xiàn)馬匹在整個(gè)過程中的動(dòng)態(tài)速度。一開始馬匹的坐標(biāo)是固定的。初始化馬匹是存活的,是開始準(zhǔn)備比賽。通過這樣的一個(gè)類來封裝馬匹的屬性,更加便于我們管理。word可編輯資料收集于網(wǎng)絡(luò),如有侵權(quán)請(qǐng)聯(lián)系網(wǎng)站刪除2:總體設(shè)計(jì)總體功能流程圖設(shè)計(jì)結(jié)果與分析 (可以加頁(yè)):運(yùn)行程序選擇參與比賽馬匹數(shù)量word可編輯資料收集于網(wǎng)絡(luò),如有侵權(quán)請(qǐng)聯(lián)系網(wǎng)站刪除選擇馬匹的個(gè)數(shù) 5個(gè)后點(diǎn)擊確定馬匹準(zhǔn)備賽跑時(shí)準(zhǔn)備界面word可編輯資料收集于網(wǎng)絡(luò),如有侵權(quán)請(qǐng)聯(lián)系網(wǎng)站刪除點(diǎn)擊開始,馬匹開始比賽比賽結(jié)束,彈出對(duì)話框顯示比賽結(jié)果附錄:程序代碼部分代碼 horse類如下:importjava.text.SimpleDateFormat;importjava.util.Date;importjava.util.Random;importjavax.swing.Icon;importjavax.swing.ImageIcon;importjavax.swing.JOptionPane;word可編輯資料收集于網(wǎng)絡(luò),如有侵權(quán)請(qǐng)聯(lián)系網(wǎng)站刪除/**這是接口Runnable的實(shí)現(xiàn)類Horse@author@versionV1.02015/12/20*/publicclassHorseimplementsRunnable{privateintx;privateinty;privateintspeed=0;privatebooleanisLive=true;// 是否存活的標(biāo)志privatelongstart;privatelongend;staticintrank=0;staticStringBuffersbf=newStringBuffer(); // 打印最后成績(jī)信息privateRandomrand=newRandom();Iconicon=newImageIcon("images/jieshu.gif");/**@return返回馬獲得的速度*/publicintgetSpeed(){returnspeed;}/**@paramspeed設(shè)置馬的速度*/publicvoidsetSpeed(intspeed){this.speed=speed;}/**@return返回boolean型,得到馬是否存活*/publicbooleangetIsLive(){returnisLive;}/**@paramisLive設(shè)置馬的是否存活*/word可編輯資料收集于網(wǎng)絡(luò),如有侵權(quán)請(qǐng)聯(lián)系網(wǎng)站刪除publicvoidsetIsLive(booleanisLive){this.isLive=isLive;}/**@return返回long型,得到比賽開始時(shí)間*/publiclonggetStart(){returnstart;}/**@paramstart設(shè)置比賽開始時(shí)間*/publicvoidsetStart(longstart){this.start=start;}/**@return返回long型,得到比賽結(jié)束時(shí)間*/publiclonggetEnd(){returnend;}/**@paramend設(shè)置比賽結(jié)束時(shí)間*/publicvoidsetEnd(longend){this.end=end;}/**這是Horse無參構(gòu)造函數(shù)*/publicHorse(){}/**這是Horse有參構(gòu)造函數(shù)@paramx設(shè)置馬的橫坐標(biāo)@paramy設(shè)置馬的縱坐標(biāo)*/publicHorse(intx,inty){super();this.x=x;this.y=y;}word可編輯資料收集于網(wǎng)絡(luò),如有侵權(quán)請(qǐng)聯(lián)系網(wǎng)站刪除/***@return 返回int 型,得到馬的橫坐標(biāo) x*/publicintgetX(){returnx;}/**@paramx設(shè)置馬的橫坐標(biāo)x*/publicvoidsetX(intx){this.x=x;}/***@return 返回int 型,得到馬的縱坐標(biāo) y*/publicintgetY(){returny;}/***@paramy 設(shè)置馬的縱坐標(biāo)y*/publicvoidsetY(inty){this.y=y;}/**重寫run()方法,實(shí)現(xiàn)馬奔跑的多線程*/publicvoidrun(){MyHorseRacing.reStaBut.setVisible(false);this.setStart(System.currentTimeMillis());while(true){try{Thread.sleep(50);}catch(InterruptedExceptione){e.printStackTrace();}this.speed=rand.nextInt(15);x+=this.speed;this.setX(x);System.out.println(Thread.currentThread()+"x="+this.getX()+"y="+this.getY()+" isLive="+this.getIsLive());word可編輯資料收集于網(wǎng)絡(luò),如有侵權(quán)請(qǐng)聯(lián)系網(wǎng)站刪除synchronized(this){ //操作共享數(shù)據(jù)引入同步if(this.getX()>=1200){this.setEnd(System.currentTimeMillis());this.setIsLive(false);++Horse.rank;break;}}}MyHorseRacing.staBut.setVisible(true);MyHorseRacing.reStaBut.setVisible(true);Datedate=newDate((this.getEnd()-this.getStart()));SimpleDateFormatsdf=newSimpleDateFormat("ss.SSS");Stringstr=sdf.format(date);System.out.println(Thread.currentThread().getName()+" 花費(fèi)的時(shí)間為:"+str+"s");System.out.println(Thread.currentThread().getName()+" 名次為:"+Horse.rank);Horse.sbf.append(Thread.currentThread().getName()+" 名次為:"+Horse.rank).append("\n 花費(fèi)的時(shí)間為:"+str+"s\n");if(Horse.rank==MyHorseRacing.horsNum){JOptionPane.showMessageDialog(null,Horse.sbf,"比賽成績(jī)",JOptionPane.INFORMATION_MESSAGE,this.icon);}}}設(shè)計(jì)體會(huì)與建議:word可編輯資料收集于網(wǎng)絡(luò),如有侵權(quán)請(qǐng)聯(lián)系網(wǎng)站刪除設(shè)計(jì)體會(huì):這次的課程設(shè)計(jì)的完成,花費(fèi)了兩個(gè)星期的時(shí)間。雖然做的不是很好,但是也能基本的完成功能,能夠正確地運(yùn)行。在設(shè)計(jì)的過程中,遇到了很多的問題。比如說,在設(shè)計(jì)GUI界面的時(shí)候,沒有把握住布局管理器的特點(diǎn),不能夠準(zhǔn)確的設(shè)計(jì),特別是在將組件添加到容器中、設(shè)計(jì)容器和組件的大小的時(shí)候,不能使得界面之間看起來更和諧,也是對(duì)組件這一塊了解的不夠多。實(shí)際上,馬匹賽跑就是一個(gè)多線程的問題。模擬馬匹賽跑的過程就是多線程執(zhí)行的過程。為了搞好這個(gè)小游戲,特地學(xué)習(xí)了Java中的多線程,了解其相關(guān)的知識(shí)。過程雖然很辛苦,但是結(jié)果是可
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 廚房設(shè)備維修服務(wù)合同
- 2024年運(yùn)維軟件項(xiàng)目合作計(jì)劃書
- 創(chuàng)新模式下的安置房建設(shè)項(xiàng)目可行性探究
- 小學(xué)暑假安全教育教案
- 新高考語文一輪復(fù)習(xí)古詩(shī)文默寫+閱讀闖關(guān)練習(xí)第2篇 《勸學(xué)》(解析版)
- 酒駕以案為鏡心得體會(huì)范文5篇
- 人教版九年級(jí)上冊(cè)數(shù)學(xué)期中考試試題及答案
- 2024年農(nóng)業(yè)及生物工程技術(shù)推廣服務(wù)合作協(xié)議書
- 電梯承攬合同范本
- 2024年諧波減速設(shè)備合作協(xié)議書
- 脛骨高位截骨術(shù)課件
- 農(nóng)作物種植與農(nóng)業(yè)生產(chǎn)項(xiàng)目風(fēng)險(xiǎn)評(píng)估報(bào)告
- 教案網(wǎng)線制作教案
- 關(guān)于大型體育場(chǎng)館鋼結(jié)構(gòu)工程造價(jià)控制的報(bào)告
- 云南少數(shù)民族服飾賞析課件
- 《裝配式建筑構(gòu)造與識(shí)圖》考試復(fù)習(xí)題庫(kù)(含答案)
- 血液運(yùn)輸物流服務(wù)投標(biāo)方案
- 心電監(jiān)護(hù)儀故障應(yīng)急預(yù)案
- 整式加減2-去括號(hào)、添括號(hào)-課件
- 退休后單位繼續(xù)留用協(xié)議書
- 化學(xué)混凝法課件
評(píng)論
0/150
提交評(píng)論