# 20215蔡昀達_Greenfoot遊戲(打磚塊) ###### tags: `Greenfoot遊戲設計` ## 遊戲情境(擷圖) ![](https://i.imgur.com/haKDxAo.png) ## 程式碼整理 * 場景的程式 ```java= public class Space extends World { /** * Space 類別的物件建構子。 * */ public Space() { // 建立600x400方格的新場景,方格大小為1x1像素。 super(400, 300, 1); addObject(new Ball(), 200, 200); addObject(new Paddle(), 200, 280); //產生8*5(40顆磚塊) for (int i=1;i<=8;i++) for (int j=1;j<=5;j++) { addObject(new Brick(), 40*i, 20+25*j); } } } ``` * 球的程式 ```java= public class Ball extends Actor { private int motionX=2; private int motionY=2; private int brickHit=0; public void act() { int newX; int newY; newX = getX() + motionX; newY = getY() + motionY; if (newX > 400) { motionX = -2; } else if (newX < 0) { motionX = 2; } if (newY > 300) { motionY = -2; } else if (newY < 0) { motionY = 2; } setLocation(newX, newY); Actor brick = getOneIntersectingObject(Brick.class); if (brick != null) { motionY = -motionY; brickHit++; getWorld().removeObject(brick); } Actor paddle = getOneIntersectingObject(Paddle.class); if (paddle != null) { motionY = -motionY; } if (brickHit==40) { Greenfoot.stop(); } if (newY>300) { Greenfoot.stop(); } } } ``` * 版子的程式 ```java= public class Paddle extends Actor { /** * Act - 隨便 Paddle 想做什麼。 * 每次按下「單步執行」或「執行」按鈕,都會呼叫這個方法。 */ public void act( ) { MouseInfo mouse = Greenfoot.getMouseInfo(); if (mouse!= null) { setLocation(mouse.getX(), getY()); } } } ``` ## 遊戲連結 https://www.greenfoot.org/scenarios/30668 ## 遊戲玩法 * 移動滑鼠來操控板子,並用球把每個磚塊打掉。 ## 開始玩遊戲 <iframe src="https://www.greenfoot.org/scenarios/30668?embed=true""width="800" height="600" frameborder="0"></iframe>