This site requires JavaScript, please enable it in your browser!
Greenfoot back

Discussions

You need to login to take part
Rss

Current Discussions

KatLady325

Changing Smoke Image

By KatLady325, with no replies.
I have a game of Breaking Bricks I am working on. Ive been trying to change the image of the smoke every time the ball hits a brick, and I really have no clue how. import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) public class Ball extends Actor { private final int MAX_SPEED = 5; private int deltaX; // x movement speed private int deltaY; // y movement speed private int count = 2; private boolean stuck = true; // stuck to paddle private Brick brick; public void act() { if (!stuck && !((Board) getWorld()).getCheck()) { move(); makeSmoke(); checkOut(); } } private void move() { setLocation (getX() + deltaX, getY() + deltaY); checkPaddle(); checkBrick(); checkWalls(); } private void checkPaddle() { Actor paddle = getOneIntersectingObject(Paddle.class); if (paddle != null && getY() < paddle.getY()) { deltaY = -deltaY; int offset = getX() - paddle.getX(); deltaX = deltaX + (offset/10); if (deltaX > MAX_SPEED) { deltaX = MAX_SPEED; } if (deltaX < -MAX_SPEED) { deltaX = -MAX_SPEED; } Greenfoot.playSound("Pad.wav"); } } private void checkBrick() { brick = (Brick)getOneIntersectingObject(MetalBrick.class); if(brick==null){ brick = (Brick)getOneIntersectingObject(NormalBrick.class); } if(brick != null){ if(getY() > brick.getY()){ setLocation(getX(),getY()+2); deltaY = -deltaY; } else if(getY() < brick.getY()){ setLocation(getX(),getY()-2); deltaY = -deltaY; } else{ deltaX = -(deltaX+1); } if(brick instanceof MetalBrick){ Greenfoot.playSound("Bop.wav"); MetalBrick metalBrick = (MetalBrick)brick; metalBrick.decreaseCount(); if(metalBrick.isZero()){ metalBrick.remove(); ((Board) getWorld()).breakBrick(); } else{ metalBrick.updateImage(); } } if(brick instanceof NormalBrick){ Greenfoot.playSound("Bop.wav"); NormalBrick normalBrick = (NormalBrick)brick; normalBrick.decreaseCount(); if(normalBrick.isZero()){ normalBrick.remove(); ((Board) getWorld()).breakBrick(); } } } } private void checkWalls() { if (getX() == 0 || getX() == getWorld().getWidth()-1) { deltaX = -deltaX; } if (getY() == 0) { deltaY = -deltaY; } } private void checkOut() { if (getY() == getWorld().getHeight()-1) { ((Board) getWorld()).ballIsOut(); getWorld().removeObject(this); } } public void moveLR(int dist) { setLocation (getX() + dist, getY()); } public void moveUD(int dist) { setLocation (getX(), getY() + dist); } private void makeSmoke() { count--; if (count == 0) { getWorld().addObject ( new Smoke(), getX(), getY()); count = 2; } } public void release() { deltaX = Greenfoot.getRandomNumber(11) - 5; deltaY = -MAX_SPEED; stuck = false; } } import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) public class Smoke extends Actor { private GreenfootImage image; // the original image private int fade; // the rate of fading public Smoke() { image = getImage(); fade = Greenfoot.getRandomNumber(4) + 1; // 1 to 3 if (fade > 3) { fade = fade - 2; } } public void act() { shrink(); } private void shrink() { if(getImage().getWidth() < 10) { getWorld().removeObject(this); } else { GreenfootImage img = new GreenfootImage(image); img.scale ( getImage().getWidth()-fade, getImage().getHeight()-fade ); setImage (img); } } } (very new to coding,sorry if this is unnecessary)