I'm trying to make it where the game resets the blocks after they're all gone. Can someone help me with this? Here's my code:
For the Board (or the World):
for the Ball:
Counter:
Paddle:
Block
BonusBlock
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) import java.awt.Color; /** * Write a description of class Board here. * * @author (your name) * @version (a version number or a date) */ public class Board extends World { private static final int GAP = 12; private Paddle paddle; private Block block; private Counter counter; public int totalblocks = 0; /** * Constructor for objects of class Board. * */ public Board() { // Create a new world with 600x400 cells with a cell size of 1x1 pixels. super(460, 460, 1); counter = new Counter(); addObject (counter, 113,400); setPaintOrder (Counter.class, Ball.class, Smoke.class); paddle = new Paddle(); addObject (paddle, getWidth() / 2, getHeight() - 40); createCircles(); createBlocks(); prepare(); } public void ballIsOut() { paddle.newBall(); } public void score() { counter.addScore(); } public void score(int x) { counter.addScore(x); } private void createBlocks() { int y = 30; int x = 50; while ( y <= 94) { createRow(y); y = y + 20 + GAP; } } private void createRow(int y) { int x = 50; while (x < 460) { addObject ( new Block(counter), x, y); totalblocks++; x = x + 60 + GAP; } } public void drawCircle() { GreenfootImage image = getBackground(); int x = Greenfoot.getRandomNumber(getWidth()); int y = Greenfoot.getRandomNumber(getHeight()); int r = Greenfoot.getRandomNumber(256); int g = Greenfoot.getRandomNumber(256); int b = Greenfoot.getRandomNumber(256); int size = Greenfoot.getRandomNumber(100) +50; Color color = new Color(r,g,b,20); image.setColor (color); image.fillOval(x,y,size,size); } private void createCircles() { for (int x = 0; x< 50; x++) { drawCircle(); } } /** * Prepare the world for the start of the program. That is: create the initial * objects and add them to the world. */ private void prepare() { BonusBlock bonusblock = new BonusBlock(); addObject(bonusblock, 94, 175); BonusBlock bonusblock2 = new BonusBlock(); addObject(bonusblock2, 320, 179); } }
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) /** * Write a description of class Ball here. * * @author (your name) * @version (a version number or a date) */ public class Ball extends Actor { private int deltaX; private int deltaY; private int count = 2; private boolean stuck = true; private Counter counter; /** * Act - do whatever the Ball wants to do. This method is called whenever * the 'Act' or 'Run' button gets pressed in the environment. */ public Ball() { } public Ball(Counter newCounter) { counter = newCounter; } public void move(int dist) { setLocation (getX() + dist, getY()); } private void checkPaddle() { Actor paddle = getOneIntersectingObject(Paddle.class); if (paddle != null){ deltaY = -deltaY; int offset = getX() - paddle.getX(); deltaX = deltaX + (offset/10); if (deltaX > 7){ deltaX = 7; } if (deltaX < -7) { deltaX = -7; } } } private void checkWalls() { if (getX() == 0 || getX() == getWorld().getWidth()-1) { deltaX = -deltaX; } if (getY() == 0) { deltaY = -deltaY; } } public void move () { setLocation (getX() + deltaX, getY() + deltaY); checkPaddle(); checkWalls(); } private void checkOut() { if (getY() == getWorld().getHeight()-1) { ((Board) getWorld()). ballIsOut(); getWorld().removeObject(this); } } private void makeSmoke() { count--; if (count == 0) { getWorld().addObject (new Smoke(), getX(), getY()); count = 2; } } public void act() { if (!stuck) { move(); makeSmoke(); checkBlock(); //checkBonusBlock(); checkOut(); } } public void release () { deltaX = Greenfoot.getRandomNumber(11) - 5; deltaY = -5; stuck = false; } private void checkBlock() { Actor block = getOneIntersectingObject(Block.class); if (block != null) { if (block instanceof BonusBlock) checkBonusBlock(); else { getWorld().removeObject(block); deltaY = -deltaY; Board myBoard = (Board)getWorld(); myBoard.score(); } } } private void checkBonusBlock() { Actor block = getOneIntersectingObject(BonusBlock.class); if (block != null) { getWorld().removeObject(block); deltaY = -deltaY; Board myBoard = (Board)getWorld(); myBoard.score(5); } } }
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) import java.awt.Color; /** * Write a description of class Counter here. * * @author (your name) * @version (a version number or a date) */ public class Counter extends Actor { private int score; private int value; private int target; /** * Act - do whatever the Counter wants to do. This method is called whenever * the 'Act' or 'Run' button gets pressed in the environment. */ public Counter() { value = 0; target = 0; score = 0; setImage (new GreenfootImage(200,30)); update(); } public void addScore() { score++; update(); } public void addScore(int x) { score+= x; update(); } private void update() { GreenfootImage img = getImage(); img.clear(); img.setColor(Color.BLACK); img.drawString("Score: " + score, 4, 20); } }
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) /** * Write a description of class Paddle here. * * @author (your name) * @version (a version number or a date) */ public class Paddle extends Actor { private Ball myBall; /** * Act - do whatever the Paddle wants to do. This method is called whenever * the 'Act' or 'Run' button gets pressed in the environment. */ public void act() { if (Greenfoot.isKeyDown ("left")) { moveSideways(-9); } if (Greenfoot.isKeyDown ("right")) { moveSideways(9); } if (haveBall() && Greenfoot.isKeyDown ("space")) { releaseBall(); } } public void newBall() { myBall = new Ball(); getWorld().addObject (myBall, getX(), getY()-20); } public void addedToWorld(World world) { newBall(); } private void moveSideways(int dist) { setLocation (getX() + dist, getY()); if (myBall != null) { myBall.move (dist); } } public void releaseBall() { myBall.release(); myBall = null; } public boolean haveBall() { return myBall != null; } }
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) /** * Write a description of class Block here. * * @author (your name) * @version (a version number or a date) */ public class Block extends Actor { private Counter counter; public Block() {} public Block(Counter count) { counter = count; } /** * Act - do whatever the Block wants to do. This method is called whenever * the 'Act' or 'Run' button gets pressed in the environment. */ public void act() { // Add your action code here. } }
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) /** * Write a description of class BonusBlock here. * * @author (your name) * @version (a version number or a date) */ public class BonusBlock extends Block { public BonusBlock() {} /** * Act - do whatever the BonusBlock wants to do. This method is called whenever * the 'Act' or 'Run' button gets pressed in the environment. */ public void act() { // Add your action code here. } }