版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 《面向?qū)ο蟪绦蛟O(shè)計》</p><p><b> 課程設(shè)計報告</b></p><p><b> 計算機與信息工程系</b></p><p> 2014年 6 月 6 日</p><p> 題目:大魚吃小魚</p><p> 專業(yè):網(wǎng)絡(luò)工程</
2、p><p> 班級:網(wǎng)絡(luò)工程12(2)</p><p><b> 目 錄</b></p><p> 第一章 設(shè)計的目的與要求............................................................................2</p><p> 1.1設(shè)計目的..
3、....................................................................................................2</p><p> 1.2設(shè)計要求.........................................................................................
4、.............2</p><p> 1.3實現(xiàn)功能......................................................................................................2</p><p> 1.4界面設(shè)計...........................................
5、...........................................................2</p><p> 第二章 開發(fā)平臺與技術(shù)...................................................................................3</p><p> 2.1java語言..........
6、..........................................................................................3</p><p> 2.2greenfoot..............................................................................................
7、......4</p><p> 2.3環(huán)境配置.....................................................................................................5</p><p> 模塊具體實現(xiàn)和主要動畫觸發(fā).............................................
8、..........7</p><p> 小結(jié)........................................................................................................................8</p><p> 參考文獻....................................
9、...........................................................................8</p><p> 附錄.......................................................................................................................
10、.9</p><p><b> 大魚吃小魚</b></p><p> 第一章 設(shè)計目的與要求</p><p><b> 1.1 設(shè)計目的</b></p><p> 通過用greenfoot來設(shè)計“大魚吃小魚”這個游戲,來熟悉</p><p> 并學(xué)會運用green
11、foot這個軟件的同時鞏固我們專業(yè)課java知識。</p><p><b> 1.2 設(shè)計要求</b></p><p> 1.熟悉GreenFoot平臺;</p><p> 2.對游戲中所需類進行設(shè)計;</p><p> 3.寫出源程序文件;</p><p> 4.對游戲進行調(diào)試和分析
12、。</p><p><b> 1.3 實現(xiàn)功能</b></p><p> 敵方有三類魚(鯊魚、藍魚和小黃魚),每一類魚的對象出現(xiàn)后,在游戲中處于隨機自由移動狀態(tài),敵方大魚能吃小魚;主角為紅魚且紅魚只有一條,玩家通過鍵盤方向鍵控制移動,紅魚有兩級狀態(tài),初始時處于低級狀態(tài),只能吃黃魚,能被藍魚或鯊魚吃掉。初級狀態(tài)的紅魚經(jīng)過重重險惡且吃掉一定數(shù)量的黃魚升級后,能吃黃魚
13、和藍魚,但還是能被鯊魚吃。</p><p> 吃掉一定數(shù)量的魚,則顯示成功信息,結(jié)束游戲;若紅魚被鯊魚或藍魚吃掉,則顯示失敗信息。</p><p><b> 1.4 界面設(shè)計</b></p><p> 紅魚是主角,玩家通過鍵盤方向鍵控制移動,紅魚有兩級狀態(tài):初級狀態(tài)只能吃小黃魚,會被藍魚和鯊魚吃掉;吃掉20條小黃魚后回升級即長大,能吃掉
14、藍魚,但還是能被鯊魚吃掉。紅魚升級后,吃黃魚數(shù)量達到40,藍魚數(shù)量達到20,顯示成功信息,結(jié)束游戲;若紅魚被鯊魚或藍魚吃掉,顯示失敗信息。</p><p> 敵方大魚能吃小魚,即鯊魚吃藍魚和黃魚,藍魚吃黃魚。</p><p> 第二章 開發(fā)平臺和技術(shù)</p><p> 2.1 Java語言</p><p> 簡單性:Java最初是
15、為對家用電器進行集成控制而設(shè)計的一種語言,因此它必須簡單明了。Java語言的簡單性主要體現(xiàn)在以下三個方面: </p><p> Java的風格類似于C++,但是Java摒棄了C++中容易引發(fā)程序錯誤的地方,如指針和內(nèi)存管理。 </p><p> Java提供了豐富的類庫。 </p><p> Java自身的基本系統(tǒng)所占用空間小于2
16、50KB(即編譯器和解釋器),它實現(xiàn)了垃圾自動收集,簡化了內(nèi)存的管理工作。</p><p> 可靠性和安全性:Java不支持指針,這杜絕了內(nèi)存的非法訪問。</p><p> Java的自動單元收集防止了內(nèi)存丟失等動態(tài)內(nèi)存分配導(dǎo)致的問題。</p><p> Java解釋器運行時實施檢査,可以發(fā)現(xiàn)數(shù)組和宇符串訪問的越界;Java提供了異常處理機制,以便從錯誤處理任
17、務(wù)恢復(fù)。</p><p> Java通過自己的安全機制防止了病毒程序的產(chǎn)生和下載程序?qū)Ρ镜叵到y(tǒng)的威脅破壞。當Java字節(jié)碼進進入解釋器時,首先必須經(jīng)過字節(jié)碼校驗器的檢查,然后Java解釋器將決定程序中類的內(nèi)存布局,隨后,類裝載器負責把來自網(wǎng)絡(luò)的類裝載到單獨的內(nèi)存區(qū)域。</p><p><b> 跨平臺性:</b></p><p> 面向?qū)?/p>
18、象:把程序?qū)崿F(xiàn)的每一個具體功能作為類,然后用類來構(gòu)成對象。</p><p> 優(yōu)點是代碼可重用、系統(tǒng)易擴展。</p><p> 多線程:通過使用多線程,程序設(shè)計者可以分別用不同的線程完成特定的行為,提高系統(tǒng)的運行效率。</p><p> 分布性:分布式包括數(shù)據(jù)分布和操作分布。數(shù)據(jù)分布是指數(shù)據(jù)可以分散在網(wǎng)絡(luò)的不同主機上;操作分布是指把一個計箅分散在不同主機上處理
19、。它支持以上兩種分布性。</p><p> 對于前者,Java提供了一個叫做URL的對象,利用這個對象,可以訪問Internet上的所有網(wǎng)絡(luò)資源;對于后者,Java提供的基于流套接字的網(wǎng)絡(luò)編程接口,為實現(xiàn)網(wǎng)絡(luò)的應(yīng)用和Web應(yīng)用提供了方便。</p><p> 豐富的類庫和API文檔</p><p> 2.2 GreenFoot</p><
20、p> Greenfoot是由肯特大學(xué)的Michael和Martin開發(fā)的一款游戲程序設(shè)計平臺,主要用于程序設(shè)計的輔助教學(xué)。它是一個功能完整的開發(fā)環(huán)境,可以方便地編寫游戲和進行游戲模擬。Greenfoot也可看做是一個二維圖形程序框架和集成開發(fā)環(huán)境的結(jié)合體,它支持面向?qū)ο蟪绦蛟O(shè)計的全部特性,特別適;合進行基于組件的可視化編程。</p><p> Greenfoot具備以下幾個特點:</p>
21、<p> 可視化程序設(shè)計界面 </p><p> ?。?)游戲案例作為項目單元 </p><p> (3)良好的社區(qū)支持</p><p> 2.3 環(huán)境配置 </p><p><b> 開發(fā)運行環(huán)境:</b></p><p> JDK(Java Development
22、 Kit)+文本編輯器( UltraEdit ) </p><p> JDK是java開發(fā)工具包,包括java類庫、java編譯器、java解釋器、java</p><p> 運行環(huán)境和java命令行工具。</p><p> http://www.oracle.com/technetwork/java/javase/downloads/index.html&l
23、t;/p><p> IDE:集成開發(fā)工具</p><p> JCreator (Xinox) www.jcreator.com</p><p> JBuilder (Borland) www.borland.com/jbuilder/</p><p> Visual J++(MicroSoft)</p>&l
24、t;p> VisualAge for Java(IBM)</p><p> www-3.ibm.com/software/vajava/about/index.html</p><p> NetBeans www.netbeans.org</p><p> Eclipse http://www.eclipse.org/downl
25、oads</p><p><b> JDK的安裝</b></p><p> 安裝:和一般應(yīng)用程序相似,有向?qū)е敢?lt;/p><p><b> 環(huán)境變量的設(shè)置:</b></p><p> Path使得系統(tǒng)可以在任何路徑下識別java命令。</p><p> Class
26、path為java加載類(class or lib)路徑,只有類在classpath中,java命令才能識別。</p><p> JDK的安裝路徑:C:\Java\jdk</p><p> path路徑為:C:\Java\jdk\bin</p><p> classpath路徑為:. ; C:\Java\jdk\lib</p><p>
27、 Greenfoot安裝:</p><p> Greenfoot軟件直接在自己的pc機上安裝即可用。</p><p> 模塊具體實現(xiàn)和主要動畫觸發(fā)</p><p><b> 涉及的類及類名</b></p><p> 本實驗中world類中有一個子類sea,actor類中有十個子類,分別是主角類即紅魚類Redfi
28、sh,黃魚兩個類yellowfish1與yellowfish2,藍魚兩個類bluefish1與bluefish2,鯊魚類shark,水泡類blister,一個計數(shù)器Counter,一個Scoreboard,一個success。</p><p><b> 各類實現(xiàn)的效果</b></p><p> sea類:添加了一個紅魚的對象即主角;計數(shù)器的兩個對象分別是用于計數(shù)吃
29、掉黃魚的數(shù)量和吃掉藍魚的數(shù)量;黃魚與藍魚在世界里處于隨機出現(xiàn)自由移動狀態(tài);實現(xiàn)計數(shù)器加一的方法;游戲結(jié)束的方法;游戲成功的方法;背景音樂循環(huán)播放。</p><p> Redfish類:紅魚設(shè)置四種狀態(tài),在構(gòu)造方法中設(shè)置了其初始狀態(tài),然后通過if判斷語句來限制它的狀態(tài);在act方法中設(shè)置了關(guān)聯(lián)鍵盤向左移游戲動作;吃黃魚藍魚動作,具體實現(xiàn)通過if語句控制;魚升級及游戲成功也是在act方法中用if語句來限定。<
30、/p><p> yellowfish1與yellowfish2類:黃魚在邊界消失。</p><p> bluefish1與bluefish2類:藍魚在邊界消失;在其act方法里設(shè)置了吃黃魚,通過if語句,并調(diào)用sea類的getCount()方法,其數(shù)值小于等于20情況下可以吃紅魚。</p><p> shark類:鯊魚在邊界消失;在act方法中設(shè)置了吃黃魚,藍魚,
31、紅魚,并且當吃到紅魚,游戲結(jié)束,調(diào)用sea類的gameover方法。</p><p> blister類:水泡在邊界消失。</p><p> ScoreBoard與success類:主要是繪制分數(shù)界面背景。</p><p> Counter類:用于計數(shù)的類。</p><p><b> 小結(jié)</b></p&g
32、t;<p> 此次課程設(shè)計,使我更扎實的掌握了本學(xué)期專業(yè)課java知識。當然,設(shè)計過程中遇到了一些困難和問題,實在想不出來的問同學(xué)或請教老師,終于游逆而解。</p><p> 課程設(shè)計體現(xiàn)出自己綜合運用知識的能力,體會了學(xué)以致用、突出自己勞動成果的喜悅心情,從中發(fā)現(xiàn)自己平時學(xué)習(xí)的不足和薄弱之處。</p><p> 實踐出真知,通過親自設(shè)計,使我們掌握的知識不再是是紙上談
33、兵。說實話,本次課程設(shè)計花了不少時間,時間主要花在游戲設(shè)計即代碼上,游戲做好后,感覺所花時間是值得的,個人對自己設(shè)計游戲較滿意,雖然不是做得那么精致,還存在些許需要改進的地方,我想以后有機會繼續(xù)完善它。</p><p> 我認為,在這次課程設(shè)計中,不僅培養(yǎng)了獨立思考、動手操作的能力,在各種其它能力上也都有了提高。更重要的是,在實驗中,我學(xué)會了很多學(xué)習(xí)的方法。而這是日后最實用的,真的是受益匪淺。要面對社會的挑戰(zhàn),
34、只有不斷的學(xué)習(xí)、實踐,再學(xué)習(xí)、再實踐。這對于我們的將來也有很大的幫助。以后,不管有多苦,我想我們都能變苦為樂,找尋有趣的事情,發(fā)現(xiàn)其中珍貴的事情。就像中國提倡的艱苦奮斗一樣,我們都可以在實驗結(jié)束之后變的更加成熟,會面對需要面對的事情。此次設(shè)計也讓我明白了思路即出路,有什么不懂不明白的地方要及時請教或上網(wǎng)查詢,只要認真鉆研,動腦思考,動手實踐,就沒有弄不懂的知識。</p><p><b> 參考文獻:&
35、lt;/b></p><p> Greenfoot官方網(wǎng)站;</p><p> Java程序設(shè)計教程(牛曉太 主編)。</p><p><b> 附錄:(部分代碼)</b></p><p><b> sea類:</b></p><p> import gree
36、nfoot.*; </p><p> public class sea extends World</p><p><b> {</b></p><p> Counter mycounter;</p><p> Counter mycounter1;</p><p> Greenfoo
37、tSound music;</p><p> public sea()</p><p><b> { </b></p><p> super(800, 600, 1); </p><p> addObject(new Redfish(),400,300);</p><p> myc
38、ounter=new Counter("吃掉的yellowfish數(shù)量:");</p><p> mycounter1=new Counter("吃掉的blue數(shù)量:");</p><p> addObject(mycounter,100,20);</p><p> addObject(mycounter1,300,20
39、);</p><p> music=new GreenfootSound("justin bieber - mistletoe.mp3");</p><p><b> }</b></p><p> public void act(){</p><p> music.playLoop();<
40、;/p><p> if(Greenfoot.getRandomNumber(100)<3)</p><p> {addObject(new yellowfish1(),0,Greenfoot.getRandomNumber(600));</p><p> addObject(new yellowfish2(),800,Greenfoot.getRandomN
41、umber(600));</p><p><b> }</b></p><p> if(Greenfoot.getRandomNumber(100)<1)</p><p> { addObject(new bluefish1(),0,Greenfoot.getRandomNumber(600));</p><p
42、> addObject(new bluefish2(),800,Greenfoot.getRandomNumber(600));</p><p> addObject(new shark(),0,Greenfoot.getRandomNumber(600));</p><p> addObject(new blister(),Greenfoot.getRandomNumber(
43、800),600);</p><p><b> }</b></p><p><b> }</b></p><p> public void countChange(){</p><p> mycounter.setValue(mycounter.getValue()+1);</p>
44、;<p><b> }</b></p><p> public void countChange1(){</p><p> mycounter1.setValue(mycounter1.getValue()+1);</p><p><b> }</b></p><p> pu
45、blic int getCount(){</p><p> return mycounter.getValue();}</p><p> public int getCount1(){</p><p> return mycounter1.getValue();}</p><p> public void gameOver()<
46、/p><p> {addObject(new ScoreBoard(10*(mycounter.getValue())+20*(mycounter1.getValue())), getWidth()/2, getHeight()/2);</p><p><b> }</b></p><p> public void gameWin()<
47、/p><p> {addObject(new success(10*(mycounter.getValue())+20*(mycounter1.getValue())),getWidth()/2, getHeight()/2);</p><p><b> }</b></p><p><b> }</b></p>
48、;<p><b> Redfish類:</b></p><p> import greenfoot.*; </p><p> public class Redfish extends Actor</p><p> { GreenfootImage smallL=new GreenfootImage("Z1L.pn
49、g");</p><p> GreenfootImage smallR=new GreenfootImage("Z1R.png");</p><p> GreenfootImage oldL=new GreenfootImage("Z2L.png");</p><p> GreenfootImage oldR=
50、new GreenfootImage("Z2R.png");</p><p> public Redfish()</p><p> {setImage(smallL);</p><p><b> }</b></p><p> public void act() </p><
51、p> {if(Greenfoot.isKeyDown("right")){</p><p> if(((sea)getWorld()).getCount()>20 ){</p><p> setImage(oldR);}</p><p> else {setImage(smallR);}</p><p&g
52、t;<b> move(5);}</b></p><p> if(Greenfoot.isKeyDown("left")){</p><p> if(((sea)getWorld()).getCount()>20 ){</p><p> setImage(oldL);}</p><p>
53、 else {setImage(smallL);}</p><p><b> move(-5);</b></p><p><b> }</b></p><p> if(Greenfoot.isKeyDown("up"))</p><p> {setLocation(ge
54、tX(),getY()-5);</p><p><b> }</b></p><p> if(Greenfoot.isKeyDown("down"))</p><p> {setLocation(getX(),getY()+5);</p><p><b> }</b>&l
55、t;/p><p> if(((sea)getWorld()).getCount()>20 )</p><p> {if(getImage()==smallL)</p><p> { setImage(oldL);}</p><p> if(getImage()==smallR)</p><p> { set
56、Image(oldR);}</p><p> getbluefish(); </p><p><b> }</b></p><p> getyellowfish(); </p><p> if(((sea)getWorld()).getCount()>40&&((sea)getWorld(
57、)).getCount1()>20){</p><p> Greenfoot.stop();</p><p> ((sea) getWorld()).music.stop();</p><p> ((sea) getWorld()).gameWin();</p><p><b> }</b></p&g
58、t;<p><b> }</b></p><p> public void getyellowfish()</p><p><b> {</b></p><p> yellowfish1 yellow1=(yellowfish1)getOneIntersectingObject(yellowfish1
59、.class);</p><p> yellowfish2 yellow2=(yellowfish2)getOneIntersectingObject(yellowfish2.class);</p><p> if(yellow1!=null)</p><p><b> {</b></p><p> Greenf
60、oot.playSound("pop.wav");</p><p> yellow1.disappear();</p><p> ((sea) getWorld()).countChange();</p><p><b> }</b></p><p> if(yellow2!=null)<
61、;/p><p><b> {</b></p><p> Greenfoot.playSound("pop.wav");</p><p> yellow2.disappear();</p><p> ((sea) getWorld()).countChange();</p><p
62、><b> }</b></p><p><b> }</b></p><p> public void getbluefish(){</p><p> bluefish1 blue1=(bluefish1)getOneIntersectingObject(bluefish1.class);</p>
63、<p> bluefish2 blue2=(bluefish2)getOneIntersectingObject(bluefish2.class);</p><p> if(blue1!=null)</p><p> {blue1.disappear();</p><p> Greenfoot.playSound("eating.wa
64、v");</p><p> ((sea) getWorld()).countChange1();</p><p><b> }</b></p><p> if(blue2!=null)</p><p> {blue2.disappear();</p><p> Greenfoo
65、t.playSound("eating.wav");</p><p> ((sea) getWorld()).countChange1();</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b&g
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 大魚吃小魚
- 大魚吃小魚詳細設(shè)計
- 大魚吃小魚項目
- -大魚吃小魚.docx
- flash游戲《大魚吃小魚》
- scratch教學(xué)示例——大魚吃小魚
- 大魚吃小魚項目總結(jié).doc
- 大魚吃小魚項目總結(jié).doc
- 大魚吃小魚-c語言-代碼.txt
- 大魚吃小魚-c語言-代碼.txt
- 大魚吃小魚任務(wù)計劃書.docx
- unity課程設(shè)計--小球吃寶石
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計-猴子吃桃
- c++課程設(shè)計---吃豆子游戲程序
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計---猴子吃桃子問題
- 猴子吃桃問題數(shù)據(jù)結(jié)構(gòu)課程設(shè)計
- c++課程設(shè)計報告---猴子吃桃問題
- protel實訓(xùn)和猴子吃桃(c語言)課程設(shè)計
- 猴子吃桃問題-數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計報告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計——多項式及猴子吃桃問題
評論
0/150
提交評論