




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
.z......資料..."Java實(shí)訓(xùn)報告"——Greenfoot游戲程序設(shè)計(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開發(fā)平臺351342.2環(huán)境搭配4第三局部291233.1Space代碼4116683.2Obstacle代碼63.3SmoothMover代碼291237116683.4Body代碼1115381第四局部心得體會第一局部1.1設(shè)計(jì)目的Greenfoot是針對那些想讓自己熟悉如何使用JAVA的人而設(shè)計(jì)的,是一個功能完整的開發(fā)環(huán)境,可以使用Java方便地編寫游戲和進(jìn)展模擬。我們設(shè)計(jì)的是一款簡單易操作的游戲,我們希望能通過自己的所學(xué)知識把它分析開來,真正的了解它的本質(zhì)。雖然我們的編程能力不是很強(qiáng),但是我們組有信心,通過本學(xué)期對JAVA語言程序設(shè)計(jì)的學(xué)習(xí),經(jīng)過教師對greenfoot軟件的介紹及實(shí)際舉例、耐心的講解,我們可以試著用greenfoot來制作簡單的小游戲了,雖然不嫻熟還有待提高,但是一些技術(shù)含量較低的小游戲還是很容易讓我們掌握的。此次游戲程序設(shè)計(jì)的目的,主要是通過greenfoot來制作游戲來更好的掌握java語言。通過greenfoot這個平臺,熟習(xí)greenfoot在制作游戲方面所需要的技巧,將自己的游戲盡可能多的運(yùn)用所學(xué)到的技術(shù),并且將在平時java課程上面學(xué)到的知識付諸于實(shí)踐,并從實(shí)踐和實(shí)際的工程中提高自己的編程能力。找出自己的缺乏之處進(jìn)展彌補(bǔ)。1.2設(shè)計(jì)要求:這次實(shí)訓(xùn)任務(wù)的課程設(shè)計(jì)的要選擇greenfoot軟件作為我們游戲編程的平臺。因?yàn)槲覀兤綍r學(xué)習(xí)的就是java語言,而greenfoot便是一個以Java語言為根底的游戲開發(fā)平臺,所以在編程的過程中能夠提高效率,也讓我對java語言和greenfoot之間銜接的關(guān)系有了更深了解,同樣,也讓我更加熟習(xí)了這個游戲開發(fā)平臺的環(huán)境。1.3實(shí)現(xiàn)功能此款"瘋狂之音"游戲的設(shè)計(jì)思路就是解放雙手的彈奏,通過向空白處隨意放入不同顏色、不同大小的球,當(dāng)球下落和上升時觸碰到黃色板塊會觸發(fā)出不同的音調(diào),當(dāng)多個聲音同時出現(xiàn)時能夠準(zhǔn)確的分辨出來。就成為了一首自己創(chuàng)作的優(yōu)美神曲,并給大家?guī)韸蕵?,為聽者增加不少樂趣?.4界面設(shè)計(jì)第二局部2.1開發(fā)平臺greenfoot是一個以Java語言為根底的游戲開發(fā)平臺,編程的過程中能夠提高效率,而且對象的可視化和對象的交互性比擬清晰。2.2環(huán)境配置1、計(jì)算機(jī)的環(huán)境變量需要設(shè)置,計(jì)算機(jī)需要安裝JDK版本為1.6。由于greenfoot需要綁定JDK。2、greenfoot的安裝,需要到官網(wǎng)上下載正確的greenfoot版本,安裝后需要測試時候可以使用,是否與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òu)造函數(shù)。*/publicSpace(){super(960,620,1);createObstacles();randomBodies(5);//初始球的數(shù)量}/***創(chuàng)立一個排在我們的世界中的障礙。*/publicvoidcreateObstacles(){inti=0;while(i<soundFiles.length){//聲音檔的長addObject(newObstacle(soundFiles[i]+".wav"),80+i*60,310);//聲音資源文件i++;}}/***創(chuàng)立一個給定的宇宙中的物體的數(shù)量。每一個身體都有一個隨機(jī)的初始狀態(tài)(size大小,mass集中,direction方向,speed速度,color顏色,location位置).//世界里創(chuàng)立了一個給定的數(shù)量的球,每個球都有一個隨機(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());//取長度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)立一個具有相關(guān)的聲音文件的一個障礙。*/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){//暫時的觸碰touched=true;setImage("block-light.png");Greenfoot.playSound(sound);//播放聲音}}publicvoidplaySound(){Greenfoot.playSound(sound);}}3.3SmoothMover代碼importgreenfoot.*;//(World,Actor,GreenfootImage,andGreenfoot)/***一個變化的一個Actor,保持準(zhǔn)確的位置〔使用雙打的坐標(biāo)而不是整數(shù)〕。它還保持當(dāng)*前的運(yùn)動矢量的運(yùn)動形式。*/publicabstractclassSmoothMovere*tendsActor{privateVectormovement;privatedoublee*act*;privatedoublee*actY;publicSmoothMover(){this(newVector());}/***創(chuàng)造新事物以給定的速度初始化的*/publicSmoothMover(Vectormovement){this.movement=movement;}/***在當(dāng)前的運(yùn)動方向移動*/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方法來確定*確切的坐標(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)動通過添加一個新的向量到現(xiàn)有的運(yùn)動*/publicvoidaddForce(Vectorforce){movement.add(force);}/***加速這種原動力的速度給定的因素。(因子小于1*減速)。方向保持不變。*/publicvoidaccelerate(doublefactor){movement.scale(factor);if(movement.getLength()<0.15){movement.setNeutral();}}/***返回這個球的速度.*/publicdoublegetSpeed(){returnmovement.getLength();}/***返回該對象的當(dāng)前運(yùn)動*/publicVectorgetMovement(){returnmovement;}}3.3Body代碼importgreenfoot.*;//(World,Actor,GreenfootImage,GreenfootandMouseInfo)importjava.awt.Color;importjava.util.List;/***“Body〞是任何類型的對象在空間,有一個大的,或其他任何漂浮在周圍空間。*/publicclassBodye*tendsSmoothMover{privatestaticfinaldoubleGRAVITY=7.8;privatestaticfinalColordefaultColor=newColor(255,216,0);//黃色的球privatedoublemass;/***.構(gòu)造一個球是默認(rèn)大小,方向,運(yùn)動,和顏色*/publicBody(){this(20,300,newVector(0,0.0),defaultColor);}/***構(gòu)造一個球是默認(rèn)大小,方向,運(yùn)動,和顏色*/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);}/***行為。那就是將引力部份從所有其他體的周圍,然后移動。*/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)用重力的力量從這個宇宙中其他天體*/privatevoidapplyForces(){List<Body>bodies=(List<Body>)getWorld().getObjects(Body.class);for(Bodybody:bodies){if(body!=this){applyGravity(body);}}//確保不會太快:如果當(dāng)前速度非常快,減速.if(getSpeed()>7){accelerate(0.9);//加速因子<1實(shí)際上減慢}}/***適用于一個給定的球的重力*/privatevoidapplyGravity(Bodyother){doubled*=other.getE*act*()-this.getE*act*();doubledy=other.getE*actY()-this.getE*actY();Vectorforce=n
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 大腳丫跳芭蕾教學(xué)設(shè)計(jì)
- 《財(cái)務(wù)分析的教學(xué)方法和流程》課件
- 《市場監(jiān)管法規(guī)與實(shí)踐》課件
- 射陽三中初一試卷及答案
- 陜西地生會考試卷及答案a卷
- 廈門二中體考試卷及答案
- 2025民間房屋買賣合同范本
- 2025商場電力供應(yīng)合同模板
- 浙江國企招聘2025衢州古城文化旅游區(qū)運(yùn)營管理有限公司招聘21人筆試參考題庫附帶答案詳解
- 石棉制品在油氣管道的保溫應(yīng)用考核試卷
- GB/T 17872-1999江海直達(dá)貨船船型系列
- GB/T 12027-2004塑料薄膜和薄片加熱尺寸變化率試驗(yàn)方法
- 中醫(yī)手診培訓(xùn)資料課件
- 消防主機(jī)運(yùn)行記錄表(標(biāo)準(zhǔn)范本)
- DB2110T 0004-2020 遼陽地區(qū)主要樹種一元、二元立木材積表
- 應(yīng)急處置措施交底
- 基于深度學(xué)習(xí)的問題鏈講座課件(44張PPT)
- Q∕GDW 12154-2021 電力安全工器具試驗(yàn)檢測中心建設(shè)規(guī)范
- 第四章 金融監(jiān)管(商業(yè)銀行管理-復(fù)旦大學(xué))
- 中波發(fā)射臺搬遷建設(shè)及地網(wǎng)鋪設(shè)、機(jī)房設(shè)備的安裝與調(diào)整實(shí)踐
- 影像診斷學(xué)-—-總論P(yáng)PT課件
評論
0/150
提交評論