Java實(shí)訓(xùn)報(bào)告greenfoot游戲制作_第1頁(yè)
Java實(shí)訓(xùn)報(bào)告greenfoot游戲制作_第2頁(yè)
Java實(shí)訓(xùn)報(bào)告greenfoot游戲制作_第3頁(yè)
Java實(shí)訓(xùn)報(bào)告greenfoot游戲制作_第4頁(yè)
Java實(shí)訓(xùn)報(bào)告greenfoot游戲制作_第5頁(yè)
已閱讀5頁(yè),還剩6頁(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)介

Java實(shí)訓(xùn)報(bào)告》——Greenfoot游戲程序設(shè)計(jì)班級(jí):微應(yīng)1211成員:胡文亞吳桐安徽水利水電職業(yè)技術(shù)學(xué)院第一部分TOC\o"1-5"\h\z設(shè)計(jì)目的 2\o"CurrentDocument"設(shè)計(jì)要求 2\o"CurrentDocument"實(shí)現(xiàn)功能 2\o"CurrentDocument"界面設(shè)計(jì) 3第二部分\o"CurrentDocument"開發(fā)平臺(tái) 3環(huán)境搭配 4第三部分3.1Space代碼 4\o"CurrentDocument"3.2Obstacle 代碼 6\o"CurrentDocument"3.3SmoothMover代碼 7\o"CurrentDocument"3.4Body代碼 11第四部分心得體會(huì)第一部分設(shè)計(jì)目的Greenfoot是針對(duì)那些想讓自己熟悉如何使用JAVA的人而設(shè)計(jì)的,是一個(gè)功能完整的開發(fā)環(huán)境,可以使用Java方便地編寫游戲和進(jìn)行模擬。我們?cè)O(shè)計(jì)的是一款簡(jiǎn)單易操作的游戲,我們希望能通過自己的所學(xué)知識(shí)把它分析開來(lái),真正的了解它的本質(zhì)。雖然我們的編程能力不是很強(qiáng),但是我們組有信心,通過本學(xué)期對(duì) JAVA語(yǔ)言程序設(shè)計(jì)的學(xué)習(xí),經(jīng)過老師對(duì)greenfoot軟件的介紹及實(shí)際舉例、耐心的講解,我們可以試著用greenfoot來(lái)制作簡(jiǎn)單的小游戲了,雖然不嫻熟還有待提高,但是一些技術(shù)含量較低的小游戲還是很容易讓我們掌握的。此次游戲程序設(shè)計(jì)的目的,主要是通過 greenfoot來(lái)制作游戲來(lái)更好的掌握 java語(yǔ)言。通過greenfoot這個(gè)平臺(tái),熟習(xí)greenfoot在制作游戲方面所需要的技巧,將自己的游戲盡可能多的運(yùn)用所學(xué)到的技術(shù),并且將在平時(shí) java課程上面學(xué)到的知識(shí)付諸于實(shí)踐,并從實(shí)踐和實(shí)際的項(xiàng)目中提高自己的編程能力。找出自己的不足之處進(jìn)行彌補(bǔ)。設(shè)計(jì)要求:這次實(shí)訓(xùn)任務(wù)的課程設(shè)計(jì)的要求是選擇 greenfoot軟件作為我們游戲編程的平臺(tái)。因?yàn)槲覀兤綍r(shí)學(xué)習(xí)的就是 java語(yǔ)言,而greenfoot便是一個(gè)以Java語(yǔ)言為基礎(chǔ)的游戲開發(fā)平臺(tái),所以在編程的過程中能夠提高效率,也讓我對(duì) java語(yǔ)言和greenfoot之間銜接的關(guān)系有了更深了解,同樣,也讓我更加熟習(xí)了這個(gè)游戲開發(fā)平臺(tái)的環(huán)境。實(shí)現(xiàn)功能此款《瘋狂之音》游戲的設(shè)計(jì)思路就是解放雙手的彈奏,通過向空白處隨意放入不同顏色、不同大小的球,當(dāng)球下落和上升時(shí)觸碰到黃色板塊會(huì)觸發(fā)出不同的音調(diào),當(dāng)多個(gè)聲音同時(shí)出現(xiàn)時(shí)能夠準(zhǔn)確的分辨出來(lái)。就成為了一首自己創(chuàng)作的優(yōu)美神曲,并給大家?guī)?lái)娛樂,為聽者增加不少樂趣。界面設(shè)計(jì)第二部分開發(fā)平臺(tái)greenfoot是一個(gè)以Java語(yǔ)言為基礎(chǔ)的游戲開發(fā)平臺(tái),編程的過程中能夠提高效率,而且對(duì)象的可視化和對(duì)象的交互性比較清晰。環(huán)境配置1、計(jì)算機(jī)的環(huán)境變量需要設(shè)置,計(jì)算機(jī)需要安裝 JDK版本為1.6。由于greenfoot需要綁定JDK2、greenfoot的安裝,需要到官網(wǎng)上下載正確的 greenfoot版本,安裝后需要測(cè)試時(shí)候可以使用,是否與 JDK綁定。第三部分pace代碼importgreenfoot.*;//(World,Actor,GreenfootImage,GreenfootandMouseInfo)importpublicclassSpaceextendsWorld{privateString[]soundFiles={"2c","2d","2e","2f","2g","2a","2b","3c","3d","3e","3f","3g","3a","3b"};// 十四個(gè)聲音檔/**對(duì)于類空間對(duì)象的構(gòu)造函數(shù) 。/publicSpace(){super(960,620,1);createObstacles();randomBodies(5);// 初始球的數(shù)量}/**創(chuàng)建一個(gè)排在我們的世界中的障礙。*/publicvoidcreateObstacles(){inti=0;while(i<soundFiles.length){//聲音檔的長(zhǎng)addObject(newObstacle(soundFiles[i]+".wav"),80+i*60,310);// 聲音資源文件i++;*/*/}}/***創(chuàng)建一個(gè)給定的宇宙中的物體的數(shù)量。每一個(gè)身體都有一個(gè)隨機(jī)的初始狀態(tài) ⑸ze大小,mass集中,direction方向,speed6S度,color顏色location位置).//世界里創(chuàng)建了一個(gè)給定的數(shù)量的球,每個(gè)球都有一個(gè)隨機(jī)的初始狀態(tài)*/publicvoidrandomBodies(intnumber){while(number>0){intsize=20+Greenfoot.getRandomNumber(30);//從一組數(shù)據(jù)中隨機(jī)取出一定數(shù)量的隨機(jī)數(shù)doublemass=size*7.0;intdirection=Greenfoot.getRandomNumber(360);// 方向doublespeed=Greenfoot.getRandomNumber(150)/100.0;//速度intx=Greenfoot.getRandomNumber(getWidth());// 取寬度inty=Greenfoot.getRandomNumber(getHeight());// 取長(zhǎng)度intr=Greenfoot.getRandomNumber(255);intg=Greenfoot.getRandomNumber(255);intb=Greenfoot.getRandomNumber(255);addObject(newBody(size,mass,newVector(direction,speed),newColor(r,g,b)),x,y);number--;}}}3.2Obstacle代碼importgreenfoot.*;//(World,Actor,GreenfootImage,GreenfootandMouseInfo)publicclassObstacleextendsActor{privateStringsound;privatebooleantouched=false;/***創(chuàng)建一個(gè)具有相關(guān)的聲音文件的一個(gè)障礙。publicObstacle(StringsoundFile){sound=soundFile;//聲音檔}/***每一次循環(huán),檢查是否被擊中。如果我們發(fā)揮我們的聲音。*/publicvoidact(){Actorbody=getOneIntersectingObject(Body.class);if(touched&&body==null)//不用觸碰{touched=false;setImage("block.png");}elseif(!touched&&body!=null){//暫時(shí)的觸碰touched=true;setImage("block-light.png");Greenfoot.playSound(sound);// 播放聲音}}publicvoidplaySound(){Greenfoot.playSound(sound);}}3.3SmoothMover代碼importgreenfoot.*;//(World,Actor,GreenfootImage,andGreenfoot)/***一個(gè)變化的一個(gè)Actor,保持精確的位置(使用雙打的坐標(biāo)而不是整數(shù))。它還保持當(dāng)*前的運(yùn)動(dòng)矢量的運(yùn)動(dòng)形式。publicabstractclassSmoothMoverextendsActor{privateVectormovement;privatedoubleexactX;privatedoubleexactY;publicSmoothMover(){this(newVector());/***創(chuàng)造新事物以給定的速度初始化的*/publicSmoothMover(Vectormovement){this.movement=movement;}/***在當(dāng)前的運(yùn)動(dòng)方向移動(dòng)*/publicvoidmove(){exactX=exactX+movement.getX();exactY=exactY+movement.getY();super.setLocation((int)exactX,(int)exactY);}/**設(shè)置位置使用精確坐標(biāo) (double)/publicvoidsetLocation(doublex,doubley){exactX=x;exactY=y;super.setLocation((int)x,(int)y);/**設(shè)置的位置。重新定義標(biāo)準(zhǔn)的Greenfoot方法來(lái)確定

*確切的坐標(biāo)更新同步*/publicvoidsetLocation(intx,inty){exactX=x;exactY=y;super.setLocation(x,y);/***返回確切的 x*/publicdoublegetExactX(){returnexactX;返回確切的 y返回確切的 y*Returntheexactyco-ordinate(asadouble).*/publicdoublegetExactY(){returnexactY;/***修改當(dāng)前的運(yùn)動(dòng)通過添加一個(gè)新的向量到現(xiàn)有的運(yùn)動(dòng)*/publicvoidaddForce(Vectorforce){movement.add(force);/***加速這種原動(dòng)力的速度給定的因素。(因子小于1*加速這種原動(dòng)力的速度給定的因素。*減速)。方向保持不變。*/publicvoidaccelerate(doublefactor){movement.scale(factor);if(movement.getLength()<0.15){movement.setNeutral();}}/**返回這個(gè)千勺速度./publicdoublegetSpeed(){returnmovement.getLength();}/**返回該對(duì)象的當(dāng)前運(yùn)動(dòng)/publicVectorgetMovement(){returnmovement;}}3.3Body代碼importgreenfoot.*;//(World,Actor,GreenfootImage,GreenfootandMouseInfo)importimport/***Body”是任何類型的對(duì)象在空間,有一個(gè)大的,或其他任何漂浮在周圍空間。*/publicclassBodyextendsSmoothMover{privatestaticfinaldoubleGRAVITY=7.8;黃色的球privatestaticfinalColordefaultColor=newColor(255,216,0);〃privatedoublemass;黃色的球/***構(gòu)造一個(gè)球是默認(rèn)大小,方向,運(yùn)動(dòng),和顏色*/publicBody(){this(20,300,newVector(0,0.0),defaultColor);}/**構(gòu)造一個(gè)球是默認(rèn)大小,方向,運(yùn)動(dòng),和顏色/publicBody(intsize,doublemass,Vectormovement,Colorcolor){this.mass=mass;addForce(movement);GreenfootImageimage=newGreenfootImage(size,size);image.setColor(color);image.fillOval(0,0,size-1,size-1);setlmage(image);/**行為。那就是將引力部份從所有其他體的周圍,然后移動(dòng)。/publicvoidact(){applyForces();move();bounceAtEdge();}/**檢查是否到達(dá)背景的邊緣,如果是就反彈 ^/privatevoidbounceAtEdge(){if(getX()==0||getX()==getWorld().getWidth()-1){setLocation((double)getX(),(double)getY());getMovement().revertHorizontal();accelerate(0.9);}elseif(getY()==0||getY()==getWorld().getHeight()-1){setLocation((double)getX(),(double)getY());getMovement().revertVertical();accelerate(0.9);}}/***應(yīng)用重力的力量從這個(gè)宇宙中其他天體*/privatevoidapplyForces(){List<Body>bodies=(List<Body>)getWorld().getObjects(Body.class);for(Bodybody:bodies){if(body!=this){applyGravity(body);}}//確保不會(huì)太快 :如果當(dāng)前速度非???,減速.if(getSpeed()>7){accelerate(0.9);//加速因子<1實(shí)際上減慢}}/***適用于一個(gè)給定的球的重力*/privatevoidapplyGravity(Bodyother){doubledx=other.getExactX()-this.getExactX();doubledy=other.getExactY()-this.getExactY();Vectorforce=newVector(dx,dy);doubledistance=Math.sqrt(dx*dx+dy*dy);doublestrength=GR

溫馨提示

  • 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ù)覽,若沒有圖紙預(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論