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

2014/6/28

any one can help me add health to my boos

nic555ex3 nic555ex3

2014/6/28

#
hi i cant make the boss of my game work i esn the boss to be shot 5time by the player to die any one can help ? below is my code import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) /** * Write a description of class Monster here. * * @author (your name) * @version (a version number or a date) */ public class boss extends BadGuys { int frame = 0; private int animationCount; private int vSpeed = 0; private int acceleration = 2; private int speed = 4; private int health=5; private int points = 0; private int spriteHeight = getImage().getHeight(); private int spriteWidth = getImage().getWidth(); private int lookForGroundDistance = (int)spriteHeight/2; private int lookForEdge = (int)spriteWidth/2; GreenfootImage Monster1l = new GreenfootImage("Monster1l.png"); GreenfootImage Monster2l = new GreenfootImage("Monster2l.png"); GreenfootImage Monster3l = new GreenfootImage("Monster3l.png"); GreenfootImage Monster4l = new GreenfootImage("Monster4l.png"); GreenfootImage Monster5l = new GreenfootImage("Monster5l.png"); GreenfootImage Monster1r = new GreenfootImage("Monster1r.png"); GreenfootImage Monster2r = new GreenfootImage("Monster2r.png"); GreenfootImage Monster3r = new GreenfootImage("Monster3r.png"); GreenfootImage Monster4r = new GreenfootImage("Monster4r.png"); GreenfootImage Monster5r = new GreenfootImage("Monster5r.png"); public void health(int loss) { health=health-loss; } public int checkH() { return health; } /** * Act - do whatever the Monster wants to do. This method is called whenever * the 'Act' or 'Run' button gets pressed in the environment. */ public void act() { checkFall(); move(); animationCount ++; checkRightWalls(); checkLeftWalls(); tryToEatPlayer(); if(speed<0) { if(animationCount % 4 == 0) // Slows down animation animateLeft(); } else { if(animationCount % 4 == 0) // Slows down animation animateRight(); } } //public Monster(HealthCounter pointHealthCounter) // { // healthCounter = pointHealthCounter; //} public void checkEdge() { if(getX() < 10 || getX() > getWorld().getWidth() - 10) { speed *= -1; } } public boolean checkRightWalls() { int spriteWidth = getImage().getWidth(); int xDistance = (int)(spriteWidth/2); Actor rightWall = getOneObjectAtOffset(xDistance, 0, Platform.class); if(rightWall == null) { return false; } else { stopByRightWall(rightWall); return true; } } public void stopByRightWall(Actor rightWall) { int wallWidth = rightWall.getImage().getWidth(); int newX = rightWall.getX() - (wallWidth + getImage().getWidth())/2; setLocation(newX - 5, getY()); speed *= -1; } public boolean checkLeftWalls() { int spriteWidth = getImage().getWidth(); int xDistance = (int)(spriteWidth/-2); Actor leftWall = getOneObjectAtOffset(xDistance, 0, Platform.class); if(leftWall == null) { return false; } else { stopByLeftWall(leftWall); return true; } } public void stopByLeftWall(Actor leftWall) { int wallWidth = leftWall.getImage().getWidth(); int newX = leftWall.getX() + (wallWidth + getImage().getWidth())/2; setLocation(newX + 5, getY()); speed *= -1; } public void move() { Actor ground = getOneObjectAtOffset(lookForEdge, lookForGroundDistance, Platform.class); if(ground == null) { speed *= -1; // Reverse direction lookForEdge *= -1; // Looks for a negative number } else { move(speed); } } public void animateLeft() { if(frame == 0) { setImage(Monster2l); } if(frame == 1) { setImage(Monster1l); } if(frame == 2) { setImage(Monster3l); } if(frame == 3) { setImage(Monster5l); } if(frame == 4) { setImage(Monster4l); frame = 0; } frame++; } public void animateRight() { if(frame == 0) { setImage(Monster2r); } if(frame == 1) { setImage(Monster1r); } if(frame == 2) { setImage(Monster3r); } if(frame == 3) { setImage(Monster5r); } if(frame == 4) { setImage(Monster4r); frame = 0; } frame++; } public void fall() { setLocation(getX(), getY() + vSpeed); if(vSpeed <=9) { vSpeed = vSpeed + acceleration; } } public boolean onGround() { int spriteHeight = getImage().getHeight(); int yDistance = (int)(spriteHeight/2) + 5; Actor ground = getOneObjectAtOffset(0, getImage().getHeight()/2, Platform.class); if(ground == null) { return false; } else { moveToGround(ground); return true; } } public void moveToGround(Actor ground) { int groundHeight = ground.getImage().getHeight(); int newY = ground.getY() - (groundHeight + getImage().getHeight())/2; setLocation(getX(), newY); } public void checkFall() { if(onGround()) { vSpeed = 0; } else { fall(); } } public void loseHealth() { health--; } /** * Return true if we can see an object of class 'clss' right where we are. * False if there is no such object here. */ public boolean canSee(Class clss) { Actor actor = getOneObjectAtOffset(0, 0, clss); return actor != null; } /** * Try to grab an object of class 'clss'. This is only successful if there * is such an object where we currently are. Otherwise this method does * nothing. */ public void eat(Class clss) { Actor actor = getOneObjectAtOffset(0, 0, clss); if(actor != null) { getWorld().removeObject(actor); } } public void tryToEatPlayer() { if (canSee(Player.class)) { eat(Player.class); Greenfoot.stop(); } } }
NikZ NikZ

2014/6/28

#
I don't see loseHealth() being called anywhere. Also, try to use the "code" tag under the Post a reply box.
NikZ NikZ

2014/6/28

#
Or Start a disscusion
NikZ NikZ

2014/6/28

#
Where is the code where he actually dies?
You need to login to post a reply.