Java實訓報告——greenfoot游戲制作課件_第1頁
Java實訓報告——greenfoot游戲制作課件_第2頁
Java實訓報告——greenfoot游戲制作課件_第3頁
Java實訓報告——greenfoot游戲制作課件_第4頁
Java實訓報告——greenfoot游戲制作課件_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第 - 1 - 頁 共 15 頁Java 實訓報告實訓報告 Green foot 游戲程序設計班 級:微應 1211成 員:胡文亞吳 桐安徽水利水電職業(yè)技術學院安徽水利水電職業(yè)技術學院第 - 2 - 頁 共 15 頁第一部分第一部分1.1 設計目的 .21.2 設計要求 .21.3 實現(xiàn)功能 .21.4 界面設計 .3第二部分第二部分 2.1 開發(fā)平臺 .32.2 環(huán)境搭配 .4第三部分第三部分 3.1 Space 代碼.43.2 Obstacle 代碼.63.3 SmoothMover 代碼.73.4 Body 代碼.11第四部分第四部分 心得體會第一部分第一部分 第 - 3 - 頁 共 1

2、5 頁1.1 設計目的設計目的Green foot 是針對那些想讓自己熟悉如何使用 JAVA 的人而設計的,是一個功能完整的開發(fā)環(huán)境,可以使用 Java 方便地編寫游戲和進行模擬。我們設計的是一款簡單易操作的游戲, 我們希望能通過自己的所學知識把它分析開來,真正的了解它的本質。雖然我們的編程能力不是很強,但是我們組有信心,通過本學期對 JAVA 語言程序設計的學習 ,經(jīng)過老師對 greenfoot 軟件的介紹及實際舉例、耐心的講解 ,我們可以試著用 greenfoot 來制作簡單的小游戲了,雖然不嫻熟還有待提高,但是一些技術含量較低的小游戲還是很容易讓我們掌握的。此次游戲程序設計的目的,主要是

3、通過greenfoot 來制作游戲來更好的掌握 java 語言。通過 greenfoot 這個平臺,熟習 greenfoot 在制作游戲方面所需要的技巧,將自己的游戲盡可能多的運用所學到的技術,并且將在平時 java 課程上面學到的知識付諸于實踐,并從 實踐和實際的項目中提高自己的編程能力。找出自己的不足之處進行彌補。1 1. .2 2 設設計計要要求求:這次實訓任務的課程設計的要求是選擇greenfoot 軟件作為我們游戲編程的平臺。因為我們平時學習的就是java 語言,而 greenfoot 便是一個以 Java 語言為基礎的游戲開發(fā)平臺,所以在編程的過程中能夠提高效率,也讓我對 java

4、 語言和 greenfoot 之間銜接的關系有了更深了解,同樣,也讓我更加熟習了這個游戲開發(fā)平臺的環(huán)境。1 1. .3 3 實實現(xiàn)現(xiàn)功功能能此款瘋狂之音游戲的設計思路就是解放雙手的彈奏, 通過向空白處隨意放入不同顏色、不同大小的球 ,當球下落和上升時觸碰到黃色板塊會觸發(fā)出不同的音調,當多個聲音同時出現(xiàn)時 能夠準確的分辨出來。 就成為了一首自己創(chuàng)作的優(yōu)美神曲,并給大家?guī)韸蕵?,為聽者增加不少樂趣。?- 4 - 頁 共 15 頁1 1. .4 4 界界面面設設計計第二部分第二部分2.12.1 開發(fā)平臺開發(fā)平臺greenfoot 是一個以 Java 語言為基礎的游戲開發(fā)平臺,編程的過程中能夠提高效

5、率,而且對象的可視化和對象的交互性 比較清晰。2.22.2 環(huán)境配置環(huán)境配置第 - 5 - 頁 共 15 頁1、計算機的環(huán)境變量需要設置,計算機需要安裝 JDK 版本為 1.6。由于 greenfoot 需要綁定 JDK。2、greenfoot 的安裝,需要到官網(wǎng)上下載正確的 greenfoot 版本,安裝后需要測試時候可以使用,是否與 JDK 綁定。第三部分第三部分3 3. .1 1 S Sp pa ac ce e 代代碼碼import greenfoot.*; / (World, Actor, GreenfootImage, Greenfoot and MouseInfo)import j

6、ava.awt.Color;public class Space extends World private String soundFiles = 2c, 2d, 2e, 2f, 2g, 2a, 2b, 3c, 3d, 3e, 3f, 3g, 3a, 3b ;/十四個聲音檔 /* *對于類空間對象的構造函數(shù) 。 */ public Space() super(960, 620, 1); createObstacles(); randomBodies(5);/初始球的數(shù)量 /* *創(chuàng)建一個排在我們的世界中的障礙。*/ public void createObstacles()第 - 6 - 頁

7、 共 15 頁 int i = 0; while (i 0) int size = 20 + Greenfoot.getRandomNumber(30); /從一組數(shù)據(jù)中隨機取出一定數(shù)量的隨機數(shù)double mass = size * 7.0; int direction= Greenfoot.getRandomNumber(360);/方向double speed = Greenfoot.getRandomNumber(150) / 100.0; /速度 int x = Greenfoot.getRandomNumber(getWidth(); /取寬度 int y = Greenfoot.

8、getRandomNumber(getHeight(); /取長度 int r = Greenfoot.getRandomNumber(255); int g = Greenfoot.getRandomNumber(255); int b = Greenfoot.getRandomNumber(255); addObject (new Body (size, mass, new Vector(direction, speed), new Color(r, g, b), x, y); number-; 第 - 7 - 頁 共 15 頁3 3. .2 2 O Ob bs st ta ac cl l

9、e e 代代碼碼import greenfoot.*; / (World, Actor, GreenfootImage, Greenfoot and MouseInfo)public class Obstacle extends Actor private String sound; private boolean touched = false; /* *創(chuàng)建一個具有相關的聲音文件的一個障礙。 */ public Obstacle(String soundFile) sound = soundFile;/聲音檔 /* *每一次循環(huán),檢查是否被擊中。如果我們發(fā)揮我們的聲音。 */ public

10、 void act() Actor body = getOneIntersectingObject(Body.class); if (touched & body = null) /不用觸碰 touched = false; setImage (block.png); else if (!touched & body != null) /暫時的觸碰 touched = true; setImage (block-light.png); Greenfoot.playSound(sound); /播放聲音第 - 8 - 頁 共 15 頁 public void playSound() Greenf

11、oot.playSound(sound); 3.33.3 SmoothMoverSmoothMover 代碼代碼import greenfoot.*;/ (World,Actor,GreenfootImage,and Greenfoot)/* *一個變化的一個Actor,保持精確的位置(使用雙打的坐標而不是整數(shù)) 。它還保持當*前的運動矢量的運動形式。*/public abstract class SmoothMover extends Actor private Vector movement; private double exactX; private double exactY; pu

12、blic SmoothMover() this(new Vector(); /* * 創(chuàng)造新事物以給定的速度初始化的 */ public SmoothMover(Vector movement) this.movement = movement; /* * 在當前的運動方向移動 */第 - 9 - 頁 共 15 頁 public void move() exactX = exactX + movement.getX(); exactY = exactY + movement.getY(); super.setLocation(int) exactX, (int) exactY); /* * 設

13、置位置使用精確坐標 (double) */ public void setLocation(double x, double y) exactX = x; exactY = y; super.setLocation(int) x, (int) y); /* * 設置的位置。重新定義標準的 Greenfoot 方法來確定 *確切的坐標更新同步 */ public void setLocation(int x, int y) exactX = x; exactY = y; super.setLocation(x, y); /* * 返回確切的 x */ public double getExact

14、X() return exactX; /*第 - 10 - 頁 共 15 頁 * Return the exact y co-ordinate (as a double).返回確切的y */ public double getExactY() return exactY; /* *修改當前的運動通過添加一個新的向量到現(xiàn)有的運動 */ public void addForce(Vector force) movement.add(force); /* *加速這種原動力的速度給定的因素。 (因子小于 1 * 減速)。方向保持不變。 */ public void accelerate(double

15、factor) movement.scale(factor); if (movement.getLength() 0.15) movement.setNeutral(); /* * 返回這個球的速度 . */ public double getSpeed() return movement.getLength(); /*第 - 11 - 頁 共 15 頁 * 返回該對象的當前運動 */ public Vector getMovement() return movement; 3 3. .3 3 B Bo od dy y 代代碼碼import greenfoot.*; / (World, Act

16、or, GreenfootImage, Greenfoot and MouseInfo)import java.awt.Color;import java.util.List;/* *“Body”是任何類型的對象在空間,有一個大的,或其他任何漂浮在周圍空間。 */public class Body extends SmoothMover private static final double GRAVITY = 7.8; private static final Color defaultColor = new Color(255, 216, 0); / 黃色的球 private double

17、 mass; /* *.構造一個球是默認大小,方向,運動,和顏色 */ public Body() this (20, 300, new Vector(0, 0.0), defaultColor); /* * 構造一個球是默認大小,方向,運動,和顏色第 - 12 - 頁 共 15 頁 */public Body(int size, double mass, Vector movement, Color color) this.mass = mass; addForce(movement); GreenfootImage image = new GreenfootImage (size, siz

18、e); image.setColor (color); image.fillOval (0, 0, size-1, size-1); setImage (image); /* *行為。那就是將引力部份從所有其他體的周圍,然后移動。 */ public void act() applyForces(); move(); bounceAtEdge(); /* * 檢查是否到達背景的邊緣,如果是就反彈 . */ private void bounceAtEdge() if (getX() = 0 | getX() = getWorld().getWidth()-1) setLocation(doub

19、le)getX(), (double)getY(); getMovement().revertHorizontal(); accelerate(0.9); else if (getY() = 0 | getY() = getWorld().getHeight()-1) setLocation(double)getX(), (double)getY();第 - 13 - 頁 共 15 頁 getMovement().revertVertical(); accelerate(0.9); /* *應用重力的力量從這個宇宙中其他天體 */ private void applyForces() List

20、 bodies = (List) getWorld().getObjects(Body.class); for (Body body : bodies) if (body != this) applyGravity (body); / 確保不會太快 :如果當前速度非???,減速. if (getSpeed() 7) accelerate (0.9); / 加速因子 1 實際上減慢 /* *適用于一個給定的球的重力 */ private void applyGravity(Body other) double dx = other.getExactX() - this.getExactX(); double dy = other.getExactY() - this.getExactY(); Vector force = new Vector (dx, dy); double distance = Math.sqrt (dx*dx + dy*dy); double strength = GRAVITY * this.mass * other.mass / 第 - 14 -

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論