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è),還剩7頁(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)介

.z......資料..."Java實(shí)訓(xùn)報(bào)告"——Greenfoot游戲程序設(shè)計(jì)班級(jí):微應(yīng)1211成員:胡文亞吳桐水利水電職業(yè)技術(shù)學(xué)院第一局部323481.1設(shè)計(jì)目的251831.2設(shè)計(jì)要求210071.3實(shí)現(xiàn)功能2195921.4界面設(shè)計(jì)3第二局部289712.1開(kāi)發(fā)平臺(tái)351342.2環(huán)境搭配4第三局部291233.1Space代碼4116683.2Obstacle代碼63.3SmoothMover代碼291237116683.4Body代碼1115381第四局部心得體會(huì)第一局部1.1設(shè)計(jì)目的Greenfoot是針對(duì)那些想讓自己熟悉如何使用JAVA的人而設(shè)計(jì)的,是一個(gè)功能完整的開(kāi)發(fā)環(huán)境,可以使用Java方便地編寫(xiě)游戲和進(jìn)展模擬。我們?cè)O(shè)計(jì)的是一款簡(jiǎn)單易操作的游戲,我們希望能通過(guò)自己的所學(xué)知識(shí)把它分析開(kāi)來(lái),真正的了解它的本質(zhì)。雖然我們的編程能力不是很強(qiáng),但是我們組有信心,通過(guò)本學(xué)期對(duì)JAVA語(yǔ)言程序設(shè)計(jì)的學(xué)習(xí),經(jīng)過(guò)教師對(duì)greenfoot軟件的介紹及實(shí)際舉例、耐心的講解,我們可以試著用greenfoot來(lái)制作簡(jiǎn)單的小游戲了,雖然不嫻熟還有待提高,但是一些技術(shù)含量較低的小游戲還是很容易讓我們掌握的。此次游戲程序設(shè)計(jì)的目的,主要是通過(guò)greenfoot來(lái)制作游戲來(lái)更好的掌握java語(yǔ)言。通過(guò)greenfoot這個(gè)平臺(tái),熟習(xí)greenfoot在制作游戲方面所需要的技巧,將自己的游戲盡可能多的運(yùn)用所學(xué)到的技術(shù),并且將在平時(shí)java課程上面學(xué)到的知識(shí)付諸于實(shí)踐,并從實(shí)踐和實(shí)際的工程中提高自己的編程能力。找出自己的缺乏之處進(jìn)展彌補(bǔ)。1.2設(shè)計(jì)要求:這次實(shí)訓(xùn)任務(wù)的課程設(shè)計(jì)的要選擇greenfoot軟件作為我們游戲編程的平臺(tái)。因?yàn)槲覀兤綍r(shí)學(xué)習(xí)的就是java語(yǔ)言,而greenfoot便是一個(gè)以Java語(yǔ)言為根底的游戲開(kāi)發(fā)平臺(tái),所以在編程的過(guò)程中能夠提高效率,也讓我對(duì)java語(yǔ)言和greenfoot之間銜接的關(guān)系有了更深了解,同樣,也讓我更加熟習(xí)了這個(gè)游戲開(kāi)發(fā)平臺(tái)的環(huán)境。1.3實(shí)現(xiàn)功能此款"瘋狂之音"游戲的設(shè)計(jì)思路就是解放雙手的彈奏,通過(guò)向空白處隨意放入不同顏色、不同大小的球,當(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)娛樂(lè),為聽(tīng)者增加不少樂(lè)趣。1.4界面設(shè)計(jì)第二局部2.1開(kāi)發(fā)平臺(tái)greenfoot是一個(gè)以Java語(yǔ)言為根底的游戲開(kāi)發(fā)平臺(tái),編程的過(guò)程中能夠提高效率,而且對(duì)象的可視化和對(duì)象的交互性比擬清晰。2.2環(huán)境配置1、計(jì)算機(jī)的環(huán)境變量需要設(shè)置,計(jì)算機(jī)需要安裝JDK版本為1.6。由于greenfoot需要綁定JDK。2、greenfoot的安裝,需要到官網(wǎng)上下載正確的greenfoot版本,安裝后需要測(cè)試時(shí)候可以使用,是否與JDK綁定。第三局部3.1Space代碼importgreenfoot.*;//(World,Actor,GreenfootImage,GreenfootandMouseInfo)importjava.awt.Color;publicclassSpacee*tendsWorld{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)(size大小,mass集中,direction方向,speed速度,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;//速度int*=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)),*,y);number--;}}}3.2Obstacle代碼importgreenfoot.*;//(World,Actor,GreenfootImage,GreenfootandMouseInfo)publicclassObstaclee*tendsActor{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,保持準(zhǔn)確的位置〔使用雙打的坐標(biāo)而不是整數(shù)〕。它還保持當(dāng)*前的運(yùn)動(dòng)矢量的運(yùn)動(dòng)形式。*/publicabstractclassSmoothMovere*tendsActor{privateVectormovement;privatedoublee*act*;privatedoublee*actY;publicSmoothMover(){this(newVector());}/***創(chuàng)造新事物以給定的速度初始化的*/publicSmoothMover(Vectormovement){this.movement=movement;}/***在當(dāng)前的運(yùn)動(dòng)方向移動(dòng)*/publicvoidmove(){e*act*=e*act*+movement.get*();e*actY=e*actY+movement.getY();super.setLocation((int)e*act*,(int)e*actY);}/***設(shè)置位置使用準(zhǔn)確坐標(biāo)(double)*/publicvoidsetLocation(double*,doubley){e*act*=*;e*actY=y;super.setLocation((int)*,(int)y);}/***設(shè)置的位置。重新定義標(biāo)準(zhǔn)的Greenfoot方法來(lái)確定*確切的坐標(biāo)更新同步*/publicvoidsetLocation(int*,inty){e*act*=*;e*actY=y;super.setLocation(*,y);}/***返回確切的**/publicdoublegetE*act*(){returne*act*;}/***Returnthee*actyco-ordinate(asadouble).返回確切的y*/publicdoublegetE*actY(){returne*actY;}/***修改當(dāng)前的運(yùn)動(dòng)通過(guò)添加一個(gè)新的向量到現(xiàn)有的運(yùn)動(dòng)*/publicvoidaddForce(Vectorforce){movement.add(force);}/***加速這種原動(dòng)力的速度給定的因素。(因子小于1*減速)。方向保持不變。*/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)importjava.awt.Color;importjava.util.List;/***“Body〞是任何類型的對(duì)象在空間,有一個(gè)大的,或其他任何漂浮在周圍空間。*/publicclassBodye*tendsSmoothMover{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);setImage(image);}/***行為。那就是將引力部份從所有其他體的周圍,然后移動(dòng)。*/publicvoidact(){applyForces();move();bounceAtEdge();}/***檢查是否到達(dá)背景的邊緣,如果是就反彈.*/privatevoidbounceAtEdge(){if(get*()==0||get*()==getWorld().getWidth()-1){setLocation((double)get*(),(double)getY());getMovement().revertHorizontal();accelerate(0.9);}elseif(getY()==0||getY()==getWorld().getHeight()-1){setLocation((double)get*(),(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){doubled*=other.getE*act*()-this.getE*act*();doubledy=other.getE*actY()-this.getE*actY();Vectorforce=n

溫馨提示

  • 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)論