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

2016/5/17

Changing Smoke Image

KatLady325 KatLady325

2016/5/17

#
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)
You need to login to post a reply.