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

2017/2/9

Attack animation problem

1
2
Hondrok Hondrok

2017/2/9

#
danpost wrote...
Hondrok wrote...
< Code Omitted > why is this giving me an error?
Because it thinks you are trying to set (true && facingRight) to false and then assign that (false again) to facingLeft. Use '==' to compare for equality. The single equal sign, '=', is for assigning values, not for comparing them. You only need one of them, 'facingLeft' and 'facingRight' as the value (true or false) is sufficient to determine the state the other one is tracking. I usually use the 'facingLeft' one as by default its value is initially false and the actor is normally facing right to begin with. The method above can simply be this:
public void checkAttackDirection()
{
    if (facingLeft) animateAttackLeft(); else animateAttackRight();
}
oh forgot about the double equal sign dummy me
Hondrok Hondrok

2017/2/9

#
danpost wrote...
Hondrok wrote...
< Code Omitted > why is this giving me an error?
Because it thinks you are trying to set (true && facingRight) to false and then assign that (false again) to facingLeft. Use '==' to compare for equality. The single equal sign, '=', is for assigning values, not for comparing them. You only need one of them, 'facingLeft' and 'facingRight' as the value (true or false) is sufficient to determine the state the other one is tracking. I usually use the 'facingLeft' one as by default its value is initially false and the actor is normally facing right to begin with. The method above can simply be this:
public void checkAttackDirection()
{
    if (facingLeft) animateAttackLeft(); else animateAttackRight();
}
import greenfoot.*;
   
public class Mario extends Actor
{
    private int speed = 6;
    private int vSpeed = 0;
    private int acceleration = 2;
    private int jumpStrength = 25;
    public int armour = 3;
    
    private int frame = 0;
    private int attFrame = 0;
    private int attFrameM = 0;
    
    private int animationCounter = 0;
    private int attackCounter = 0;
    
    private boolean facingLeft;
    private boolean facingRight;
    
    private GreenfootImage fr0 = new GreenfootImage("Mario_fr0.png");
    private GreenfootImage fr1 = new GreenfootImage("Mario_fr1.png");
    private GreenfootImage fr2 = new GreenfootImage("Mario_fr2.png");
    private GreenfootImage fr3 = new GreenfootImage("Mario_fr3.png");
    private GreenfootImage fr4 = new GreenfootImage("Mario_fr4.png");
    private GreenfootImage fr5 = new GreenfootImage("Mario_fr5.png");
    private GreenfootImage fr6 = new GreenfootImage("Mario_fr6.png");
    
    private GreenfootImage fr0m = new GreenfootImage("Mario_fr0m.png");
    private GreenfootImage fr1m = new GreenfootImage("Mario_fr1m.png");
    private GreenfootImage fr2m = new GreenfootImage("Mario_fr2m.png");
    private GreenfootImage fr3m = new GreenfootImage("Mario_fr3m.png");
    private GreenfootImage fr4m = new GreenfootImage("Mario_fr4m.png");
    private GreenfootImage fr5m = new GreenfootImage("Mario_fr5m.png");
    private GreenfootImage fr6m = new GreenfootImage("Mario_fr6m.png");
    
    private GreenfootImage att_fr0m = new GreenfootImage("Mario_att_fr0m.png");
    private GreenfootImage att_fr1m = new GreenfootImage("Mario_att_fr1m.png");
    private GreenfootImage att_fr2m = new GreenfootImage("Mario_att_fr2m.png");
    
    private GreenfootImage att_fr0 = new GreenfootImage("Mario_att_fr0.png");
    private GreenfootImage att_fr1 = new GreenfootImage("Mario_att_fr1.png");
    private GreenfootImage att_fr2 = new GreenfootImage("Mario_att_fr2.png");
     
    public void act() 
    {
       if (! getWorld().getObjects(GameOver.class).isEmpty()) 
       {
           return;
       }      
       checkKeys();
       attack();
       checkFall();
       hitGoomba();
       hitCastle_l1();
       hitCastle_l2();
       checkArmour();
       animationCounter ++;
    }
    
    private void checkKeys()  
    {
       if(Greenfoot.isKeyDown("left"))
       {
           moveLeft();
       } 
       
       if(Greenfoot.isKeyDown("right"))
       {
           moveRight();
       }
       
       if(Greenfoot.isKeyDown("up"))
       {
           jump();
       }
    }    
 
    public void checkFall()
    {
        if(onGround() && vSpeed != -jumpStrength)
        {
           vSpeed=0; 
        }
        else
        {
            fall();
            jumpAnimation();
        }
    }
     
    public boolean onGround()
    {
        Actor under = getOneObjectAtOffset ( 0, getImage().getHeight()/2, Ground.class);
        return under != null;
    }
     
    public void fall()
    {
        setLocation ( getX(), getY() + vSpeed);
        vSpeed = vSpeed + acceleration;
    }   
         
    public void jump()
    {
       if (onGround())
       {
           vSpeed = - jumpStrength;
       }
    }
         
    public void jumpAnimation()
    {
        if (getImage().equals(fr0m) ||
             getImage().equals(fr1m) || 
             getImage().equals(fr2m) || 
             getImage().equals(fr3m) || 
             getImage().equals(fr4m) || 
             getImage().equals(fr5m) || 
             getImage().equals(fr6m))
        {
            setImage(fr2m);
        }
        else if(getImage().equals(fr0m) ||
             getImage().equals(fr1m) || 
             getImage().equals(fr2m) || 
             getImage().equals(fr3m) || 
             getImage().equals(fr4m) || 
             getImage().equals(fr5m) || 
             getImage().equals(fr6m))
        {
            setImage(fr2);
        }
    }
    
    public void checkFacing()
    {
        if (getImage().equals(fr0m) ||
             getImage().equals(fr1m) || 
             getImage().equals(fr2m) || 
             getImage().equals(fr3m) || 
             getImage().equals(fr4m) || 
             getImage().equals(fr5m) || 
             getImage().equals(fr6m))
        {
            facingLeft = true;
        }
        else if(getImage().equals(fr0) ||
             getImage().equals(fr1) || 
             getImage().equals(fr2) || 
             getImage().equals(fr3) || 
             getImage().equals(fr4) || 
             getImage().equals(fr5) || 
             getImage().equals(fr6))
        {
            facingRight = true;
        }
    }
    
    public void moveRight()
    {
        setLocation ( getX() + speed, getY());
        
        if(animationCounter % 4 == 0)
        {
            animateRight();
        }
    }
    
    public void animateRight()
    {
        facingRight = true;
        
        if(frame == 0)
        {
            setImage(fr0);
        }
        else if(frame == 1) 
        {
            setImage(fr1);
        }
        else if(frame == 2) 
        {
            setImage(fr2);
        }
        else if(frame == 3) 
        {
            setImage(fr3);
        }
        else if(frame == 4) 
        {
            setImage(fr4);
        }
        else if(frame == 5) 
        {
            setImage(fr5);
        }
        else if(frame == 6) 
        {
            setImage(fr6);
            frame = 1;
            return;
        }
        
        frame++;
    }
     
    public void moveLeft()
    {
        setLocation ( getX() - speed, getY());
        
        if(animationCounter % 4 == 0)
        {
            animateLeft();
        }
    }
    
    public void animateLeft()
    {
        facingLeft = true;
        
        if(frame == 0)
        {
            setImage(fr0m);
        }
        else if(frame == 1) 
        {
            setImage(fr1m);
        }
        else if(frame == 2) 
        {
            setImage(fr2m);
        }
        else if(frame == 3) 
        {
            setImage(fr3m);
        }
        else if(frame == 4) 
        {
            setImage(fr4m);
        }
        else if(frame == 5) 
        {
            setImage(fr5m);
        }
        else if(frame == 6) 
        {
            setImage(fr6m);
            frame = 1;
            return;
        }

        frame++;
    }

    public void attack()
    {
        if(Greenfoot.isKeyDown("space"))
        {
            if(animationCounter % 4 == 0)
            {
                checkFacing();
                checkAttackDirection();
            }
        }
    }
        
    public void checkAttackDirection()
    {
        if (facingLeft = true)
        {
            animateAttackLeft();
        }
        else
        {
            animateAttackRight();
        }
    }
    
    public void animateAttackRight()
    {
        if(attFrame == 0)
        {
            setImage(att_fr0);
        }
        else if(attFrame == 1) 
        {
            setImage(att_fr1);
            getWorld().addObject(new Sphere_right(), getX() + 6, getY()-50);
        }
        else if(attFrame == 2) 
        {
            setImage(att_fr2);
            attFrame = 0;
            return;
        }
        
        attFrame++;
    }
    
    public void animateAttackLeft()
    {
        if(attFrameM == 0)
        {
            setImage(att_fr0m);
        }
        else if(attFrameM == 1) 
        {
            setImage(att_fr1m);
            getWorld().addObject(new Sphere_left_Mario(), getX() + 6, getY()-50);
        }
        else if(attFrameM == 2) 
        {
            setImage(att_fr2m);
            attFrameM = 0;
            return;
        }
        
        attFrameM++;
    }

    public void checkArmour()
    {
        Actor sphere = getOneIntersectingObject(Sphere_left.class);
        
        if(sphere != null)
        {
           armour = armour - 1;
           ((Health_Bar) getWorld().getObjects(Health_Bar.class).get(0)).updateImage(armour);
           getWorld().removeObject(sphere);
        }
        
        if(armour == 0)
        {
            getImage().setTransparency(0);
            World world = new Game_Over_Lose();
            Greenfoot.setWorld(world);
        }
    }
    
    public void hitGoomba()
    {
        Actor goomba = getOneIntersectingObject(Goomba.class);
        
        if(goomba != null)
        {
            armour = armour - 1;
            getWorld().removeObject(goomba);
            ((Health_Bar) getWorld().getObjects(Health_Bar.class).get(0)).updateImage(armour);
        }
    }
     
    public void hitCastle_l1()
    {
        Actor castle = getOneIntersectingObject(Castle.class);
        
        if(castle != null)
        {
            World world = new Level_2();
            Mario mario2 = (Mario)world.getObjects(Mario.class).get(0);
            mario2.armour = this.armour;
            Greenfoot.setWorld(world);
            ((Health_Bar)world.getObjects(Health_Bar.class).get(0)).updateImage(armour);
        }
    }
    
    public void hitCastle_l2()
    {
        Actor castle = getOneIntersectingObject(Castle_l2.class);
        
        if(castle != null)
        {
            World world = new Final_level();
            Mario mario3 = (Mario)world.getObjects(Mario.class).get(0);
            mario3.armour = this.armour; 
            Greenfoot.setWorld(world);
            ((Health_Bar)world.getObjects(Health_Bar.class).get(0)).updateImage(armour);
        }
    }
}
this is what I did but now when the actor is facing right it shoots to the left
danpost danpost

2017/2/9

#
Change line 156 to:
facingLeft = false;
Hondrok Hondrok

2017/2/9

#
danpost wrote...
Change line 156 to:
facingLeft = false;
import greenfoot.*;
   
public class Mario extends Actor
{
    private int speed = 6;
    private int vSpeed = 0;
    private int acceleration = 2;
    private int jumpStrength = 25;
    public int armour = 3;
    
    private int frame = 0;
    private int attFrame = 0;
    private int attFrameM = 0;
    
    private int animationCounter = 0;
    private int attackCounter = 0;
    
    private boolean facingLeft;
    private boolean facingRight;
    
    private GreenfootImage fr0 = new GreenfootImage("Mario_fr0.png");
    private GreenfootImage fr1 = new GreenfootImage("Mario_fr1.png");
    private GreenfootImage fr2 = new GreenfootImage("Mario_fr2.png");
    private GreenfootImage fr3 = new GreenfootImage("Mario_fr3.png");
    private GreenfootImage fr4 = new GreenfootImage("Mario_fr4.png");
    private GreenfootImage fr5 = new GreenfootImage("Mario_fr5.png");
    private GreenfootImage fr6 = new GreenfootImage("Mario_fr6.png");
    
    private GreenfootImage fr0m = new GreenfootImage("Mario_fr0m.png");
    private GreenfootImage fr1m = new GreenfootImage("Mario_fr1m.png");
    private GreenfootImage fr2m = new GreenfootImage("Mario_fr2m.png");
    private GreenfootImage fr3m = new GreenfootImage("Mario_fr3m.png");
    private GreenfootImage fr4m = new GreenfootImage("Mario_fr4m.png");
    private GreenfootImage fr5m = new GreenfootImage("Mario_fr5m.png");
    private GreenfootImage fr6m = new GreenfootImage("Mario_fr6m.png");
    
    private GreenfootImage att_fr0m = new GreenfootImage("Mario_att_fr0m.png");
    private GreenfootImage att_fr1m = new GreenfootImage("Mario_att_fr1m.png");
    private GreenfootImage att_fr2m = new GreenfootImage("Mario_att_fr2m.png");
    
    private GreenfootImage att_fr0 = new GreenfootImage("Mario_att_fr0.png");
    private GreenfootImage att_fr1 = new GreenfootImage("Mario_att_fr1.png");
    private GreenfootImage att_fr2 = new GreenfootImage("Mario_att_fr2.png");
     
    public void act() 
    {
       if (! getWorld().getObjects(GameOver.class).isEmpty()) 
       {
           return;
       }      
       checkKeys();
       attack();
       checkFall();
       hitGoomba();
       hitCastle_l1();
       hitCastle_l2();
       checkArmour();
       animationCounter ++;
    }
    
    private void checkKeys()  
    {
       if(Greenfoot.isKeyDown("left"))
       {
           moveLeft();
       } 
       
       if(Greenfoot.isKeyDown("right"))
       {
           moveRight();
       }
       
       if(Greenfoot.isKeyDown("up"))
       {
           jump();
       }
    }    
 
    public void checkFall()
    {
        if(onGround() && vSpeed != -jumpStrength)
        {
           vSpeed=0; 
        }
        else
        {
            fall();
            jumpAnimation();
        }
    }
     
    public boolean onGround()
    {
        Actor under = getOneObjectAtOffset ( 0, getImage().getHeight()/2, Ground.class);
        return under != null;
    }
     
    public void fall()
    {
        setLocation ( getX(), getY() + vSpeed);
        vSpeed = vSpeed + acceleration;
    }   
         
    public void jump()
    {
       if (onGround())
       {
           vSpeed = - jumpStrength;
       }
    }
         
    public void jumpAnimation()
    {
        if (getImage().equals(fr0m) ||
             getImage().equals(fr1m) || 
             getImage().equals(fr2m) || 
             getImage().equals(fr3m) || 
             getImage().equals(fr4m) || 
             getImage().equals(fr5m) || 
             getImage().equals(fr6m))
        {
            setImage(fr2m);
        }
        else if(getImage().equals(fr0m) ||
             getImage().equals(fr1m) || 
             getImage().equals(fr2m) || 
             getImage().equals(fr3m) || 
             getImage().equals(fr4m) || 
             getImage().equals(fr5m) || 
             getImage().equals(fr6m))
        {
            setImage(fr2);
        }
    }
    
    public void checkFacing()
    {
        if (getImage().equals(fr0m) ||
             getImage().equals(fr1m) || 
             getImage().equals(fr2m) || 
             getImage().equals(fr3m) || 
             getImage().equals(fr4m) || 
             getImage().equals(fr5m) || 
             getImage().equals(fr6m))
        {
            facingLeft = true;
        }
        else if(getImage().equals(fr0) ||
             getImage().equals(fr1) || 
             getImage().equals(fr2) || 
             getImage().equals(fr3) || 
             getImage().equals(fr4) || 
             getImage().equals(fr5) || 
             getImage().equals(fr6))
        {
            facingLeft = false;
        }
    }
    
    public void moveRight()
    {
        setLocation ( getX() + speed, getY());
        
        if(animationCounter % 4 == 0)
        {
            animateRight();
        }
    }
    
    public void animateRight()
    {
        facingRight = true;
        
        if(frame == 0)
        {
            setImage(fr0);
        }
        else if(frame == 1) 
        {
            setImage(fr1);
        }
        else if(frame == 2) 
        {
            setImage(fr2);
        }
        else if(frame == 3) 
        {
            setImage(fr3);
        }
        else if(frame == 4) 
        {
            setImage(fr4);
        }
        else if(frame == 5) 
        {
            setImage(fr5);
        }
        else if(frame == 6) 
        {
            setImage(fr6);
            frame = 1;
            return;
        }
        
        frame++;
    }
     
    public void moveLeft()
    {
        setLocation ( getX() - speed, getY());
        
        if(animationCounter % 4 == 0)
        {
            animateLeft();
        }
    }
    
    public void animateLeft()
    {
        facingLeft = true;
        
        if(frame == 0)
        {
            setImage(fr0m);
        }
        else if(frame == 1) 
        {
            setImage(fr1m);
        }
        else if(frame == 2) 
        {
            setImage(fr2m);
        }
        else if(frame == 3) 
        {
            setImage(fr3m);
        }
        else if(frame == 4) 
        {
            setImage(fr4m);
        }
        else if(frame == 5) 
        {
            setImage(fr5m);
        }
        else if(frame == 6) 
        {
            setImage(fr6m);
            frame = 1;
            return;
        }

        frame++;
    }

    public void attack()
    {
        if(Greenfoot.isKeyDown("space"))
        {
            if(animationCounter % 4 == 0)
            {
                checkFacing();
                checkAttackDirection();
            }
        }
    }
        
    public void checkAttackDirection()
    {
        if (facingLeft = true)
        {
            animateAttackLeft();
        }
        else
        {
            animateAttackRight();
        }
    }
    
    public void animateAttackRight()
    {
        if(attFrame == 0)
        {
            setImage(att_fr0);
        }
        else if(attFrame == 1) 
        {
            setImage(att_fr1);
            getWorld().addObject(new Sphere_right(), getX() + 6, getY()-50);
        }
        else if(attFrame == 2) 
        {
            setImage(att_fr2);
            attFrame = 0;
            return;
        }
        
        attFrame++;
    }
    
    public void animateAttackLeft()
    {
        if(attFrameM == 0)
        {
            setImage(att_fr0m);
        }
        else if(attFrameM == 1) 
        {
            setImage(att_fr1m);
            getWorld().addObject(new Sphere_left_Mario(), getX() + 6, getY()-50);
        }
        else if(attFrameM == 2) 
        {
            setImage(att_fr2m);
            attFrameM = 0;
            return;
        }
        
        attFrameM++;
    }

    public void checkArmour()
    {
        Actor sphere = getOneIntersectingObject(Sphere_left.class);
        
        if(sphere != null)
        {
           armour = armour - 1;
           ((Health_Bar) getWorld().getObjects(Health_Bar.class).get(0)).updateImage(armour);
           getWorld().removeObject(sphere);
        }
        
        if(armour == 0)
        {
            getImage().setTransparency(0);
            World world = new Game_Over_Lose();
            Greenfoot.setWorld(world);
        }
    }
    
    public void hitGoomba()
    {
        Actor goomba = getOneIntersectingObject(Goomba.class);
        
        if(goomba != null)
        {
            armour = armour - 1;
            getWorld().removeObject(goomba);
            ((Health_Bar) getWorld().getObjects(Health_Bar.class).get(0)).updateImage(armour);
        }
    }
     
    public void hitCastle_l1()
    {
        Actor castle = getOneIntersectingObject(Castle.class);
        
        if(castle != null)
        {
            World world = new Level_2();
            Mario mario2 = (Mario)world.getObjects(Mario.class).get(0);
            mario2.armour = this.armour;
            Greenfoot.setWorld(world);
            ((Health_Bar)world.getObjects(Health_Bar.class).get(0)).updateImage(armour);
        }
    }
    
    public void hitCastle_l2()
    {
        Actor castle = getOneIntersectingObject(Castle_l2.class);
        
        if(castle != null)
        {
            World world = new Final_level();
            Mario mario3 = (Mario)world.getObjects(Mario.class).get(0);
            mario3.armour = this.armour; 
            Greenfoot.setWorld(world);
            ((Health_Bar)world.getObjects(Health_Bar.class).get(0)).updateImage(armour);
        }
    }
}
still doesn't work
danpost danpost

2017/2/9

#
Wait -- what did you do? why did you add another method called 'checkFacing'?! All you needed to do was add a simple line in each of the 'moveLeft' and 'moveRight' methods. Remove the 'checkFacing' method and remove line 262 (the call to that method). Then add a line to set 'facingLeft' to true in the 'moveLeft' method and a line to set it to 'false' in the 'moveRight' method. Then correct line 270 so that you are not continuously setting the value of the field back to true there.
Hondrok Hondrok

2017/2/9

#
danpost wrote...
Wait -- what did you do? why did you add another method called 'checkFacing'?! All you needed to do was add a simple line in each of the 'moveLeft' and 'moveRight' methods. Remove the 'checkFacing' method and remove line 262 (the call to that method). Then add a line to set 'facingLeft' to true in the 'moveLeft' method and a line to set it to 'false' in the 'moveRight' method. Then correct line 270 so that you are not continuously setting the value of the field back to true there.
I don't understand what I should do to the line 270 you said about
import greenfoot.*;
   
public class Mario extends Actor
{
    private int speed = 6;
    private int vSpeed = 0;
    private int acceleration = 2;
    private int jumpStrength = 25;
    public int armour = 3;
    
    private int frame = 0;
    private int attFrame = 0;
    private int attFrameM = 0;
    
    private int animationCounter = 0;
    private int attackCounter = 0;
    
    private boolean facingLeft;
    private boolean facingRight;
    
    private GreenfootImage fr0 = new GreenfootImage("Mario_fr0.png");
    private GreenfootImage fr1 = new GreenfootImage("Mario_fr1.png");
    private GreenfootImage fr2 = new GreenfootImage("Mario_fr2.png");
    private GreenfootImage fr3 = new GreenfootImage("Mario_fr3.png");
    private GreenfootImage fr4 = new GreenfootImage("Mario_fr4.png");
    private GreenfootImage fr5 = new GreenfootImage("Mario_fr5.png");
    private GreenfootImage fr6 = new GreenfootImage("Mario_fr6.png");
    
    private GreenfootImage fr0m = new GreenfootImage("Mario_fr0m.png");
    private GreenfootImage fr1m = new GreenfootImage("Mario_fr1m.png");
    private GreenfootImage fr2m = new GreenfootImage("Mario_fr2m.png");
    private GreenfootImage fr3m = new GreenfootImage("Mario_fr3m.png");
    private GreenfootImage fr4m = new GreenfootImage("Mario_fr4m.png");
    private GreenfootImage fr5m = new GreenfootImage("Mario_fr5m.png");
    private GreenfootImage fr6m = new GreenfootImage("Mario_fr6m.png");
    
    private GreenfootImage att_fr0m = new GreenfootImage("Mario_att_fr0m.png");
    private GreenfootImage att_fr1m = new GreenfootImage("Mario_att_fr1m.png");
    private GreenfootImage att_fr2m = new GreenfootImage("Mario_att_fr2m.png");
    
    private GreenfootImage att_fr0 = new GreenfootImage("Mario_att_fr0.png");
    private GreenfootImage att_fr1 = new GreenfootImage("Mario_att_fr1.png");
    private GreenfootImage att_fr2 = new GreenfootImage("Mario_att_fr2.png");
     
    public void act() 
    {
       if (! getWorld().getObjects(GameOver.class).isEmpty()) 
       {
           return;
       }      
       checkKeys();
       attack();
       checkFall();
       hitGoomba();
       hitCastle_l1();
       hitCastle_l2();
       checkArmour();
       animationCounter ++;
    }
    
    private void checkKeys()  
    {
       if(Greenfoot.isKeyDown("left"))
       {
           moveLeft();
       } 
       
       if(Greenfoot.isKeyDown("right"))
       {
           moveRight();
       }
       
       if(Greenfoot.isKeyDown("up"))
       {
           jump();
       }
    }    
 
    public void checkFall()
    {
        if(onGround() && vSpeed != -jumpStrength)
        {
           vSpeed=0; 
        }
        else
        {
            fall();
            jumpAnimation();
        }
    }
     
    public boolean onGround()
    {
        Actor under = getOneObjectAtOffset ( 0, getImage().getHeight()/2, Ground.class);
        return under != null;
    }
     
    public void fall()
    {
        setLocation ( getX(), getY() + vSpeed);
        vSpeed = vSpeed + acceleration;
    }   
         
    public void jump()
    {
       if (onGround())
       {
           vSpeed = - jumpStrength;
       }
    }
         
    public void jumpAnimation()
    {
        if (getImage().equals(fr0m) ||
             getImage().equals(fr1m) || 
             getImage().equals(fr2m) || 
             getImage().equals(fr3m) || 
             getImage().equals(fr4m) || 
             getImage().equals(fr5m) || 
             getImage().equals(fr6m))
        {
            setImage(fr2m);
        }
        else if(getImage().equals(fr0m) ||
             getImage().equals(fr1m) || 
             getImage().equals(fr2m) || 
             getImage().equals(fr3m) || 
             getImage().equals(fr4m) || 
             getImage().equals(fr5m) || 
             getImage().equals(fr6m))
        {
            setImage(fr2);
        }
    }

    public void moveRight()
    {
        setLocation ( getX() + speed, getY());
        facingLeft = false;
        if(animationCounter % 4 == 0)
        {
            animateRight();
        }
    }
    
    public void animateRight()
    {
        if(frame == 0)
        {
            setImage(fr0);
        }
        else if(frame == 1) 
        {
            setImage(fr1);
        }
        else if(frame == 2) 
        {
            setImage(fr2);
        }
        else if(frame == 3) 
        {
            setImage(fr3);
        }
        else if(frame == 4) 
        {
            setImage(fr4);
        }
        else if(frame == 5) 
        {
            setImage(fr5);
        }
        else if(frame == 6) 
        {
            setImage(fr6);
            frame = 1;
            return;
        }
        
        frame++;
    }
     
    public void moveLeft()
    {
        setLocation ( getX() - speed, getY());
        facingLeft = true;
        if(animationCounter % 4 == 0)
        {
            animateLeft();
        }
    }
    
    public void animateLeft()
    {
        if(frame == 0)
        {
            setImage(fr0m);
        }
        else if(frame == 1) 
        {
            setImage(fr1m);
        }
        else if(frame == 2) 
        {
            setImage(fr2m);
        }
        else if(frame == 3) 
        {
            setImage(fr3m);
        }
        else if(frame == 4) 
        {
            setImage(fr4m);
        }
        else if(frame == 5) 
        {
            setImage(fr5m);
        }
        else if(frame == 6) 
        {
            setImage(fr6m);
            frame = 1;
            return;
        }

        frame++;
    }

    public void attack()
    {
        if(Greenfoot.isKeyDown("space"))
        {
            if(animationCounter % 4 == 0)
            {
                checkAttackDirection();
            }
        }
    }
        
    public void checkAttackDirection()
    {
        if (facingLeft = true)
        {
            animateAttackLeft();
        }
        else
        {
            animateAttackRight();
        }
    }
    
    public void animateAttackRight()
    {
        if(attFrame == 0)
        {
            setImage(att_fr0);
        }
        else if(attFrame == 1) 
        {
            setImage(att_fr1);
            getWorld().addObject(new Sphere_right(), getX() + 6, getY()-50);
        }
        else if(attFrame == 2) 
        {
            setImage(att_fr2);
            attFrame = 0;
            return;
        }
        
        attFrame++;
    }
    
    public void animateAttackLeft()
    {
        if(attFrameM == 0)
        {
            setImage(att_fr0m);
        }
        else if(attFrameM == 1) 
        {
            setImage(att_fr1m);
            getWorld().addObject(new Sphere_left_Mario(), getX() + 6, getY()-50);
        }
        else if(attFrameM == 2) 
        {
            setImage(att_fr2m);
            attFrameM = 0;
            return;
        }
        
        attFrameM++;
    }

    public void checkArmour()
    {
        Actor sphere = getOneIntersectingObject(Sphere_left.class);
        
        if(sphere != null)
        {
           armour = armour - 1;
           ((Health_Bar) getWorld().getObjects(Health_Bar.class).get(0)).updateImage(armour);
           getWorld().removeObject(sphere);
        }
        
        if(armour == 0)
        {
            getImage().setTransparency(0);
            World world = new Game_Over_Lose();
            Greenfoot.setWorld(world);
        }
    }
    
    public void hitGoomba()
    {
        Actor goomba = getOneIntersectingObject(Goomba.class);
        
        if(goomba != null)
        {
            armour = armour - 1;
            getWorld().removeObject(goomba);
            ((Health_Bar) getWorld().getObjects(Health_Bar.class).get(0)).updateImage(armour);
        }
    }
     
    public void hitCastle_l1()
    {
        Actor castle = getOneIntersectingObject(Castle.class);
        
        if(castle != null)
        {
            World world = new Level_2();
            Mario mario2 = (Mario)world.getObjects(Mario.class).get(0);
            mario2.armour = this.armour;
            Greenfoot.setWorld(world);
            ((Health_Bar)world.getObjects(Health_Bar.class).get(0)).updateImage(armour);
        }
    }
    
    public void hitCastle_l2()
    {
        Actor castle = getOneIntersectingObject(Castle_l2.class);
        
        if(castle != null)
        {
            World world = new Final_level();
            Mario mario3 = (Mario)world.getObjects(Mario.class).get(0);
            mario3.armour = this.armour; 
            Greenfoot.setWorld(world);
            ((Health_Bar)world.getObjects(Health_Bar.class).get(0)).updateImage(armour);
        }
    }
}
danpost danpost

2017/2/9

#
It is now line 241 (instead of line 270); but, it has the same problem as you had earlier (assignment instead of compare).
Hondrok Hondrok

2017/2/9

#
danpost wrote...
It is now line 241 (instead of line 270); but, it has the same problem as you had earlier (assignment instead of compare).
and what should I do to it? I really don't understand how to fix it
danpost danpost

2017/2/9

#
Hondrok wrote...
and what should I do to it? I really don't understand how to fix it
We went over this same issue not one-half hour ago. Look back at the top of this page.
Hondrok Hondrok

2017/2/9

#
danpost wrote...
Hondrok wrote...
and what should I do to it? I really don't understand how to fix it
We went over this same issue not one-half hour ago. Look back at the top of this page.
it's working now thank you A LOT for your patience while helping me man
You need to login to post a reply.
1
2