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

2018/3/2

Unknown Cause for Tree changing

1
2
3
hosfeldli hosfeldli

2018/3/2

#
When the application runs the Tree class is changed to look like a survivor and I don't know why.
import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * Write a description of class Survivor here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class Survivor extends Actor
{
    private GreenfootImage run1 = new GreenfootImage("survivor-idle_knife_0.png");
    private GreenfootImage run2 = new GreenfootImage("survivor-idle_knife_1.png");
    private GreenfootImage run3 = new GreenfootImage("survivor-idle_knife_2.png");
    private GreenfootImage run4 = new GreenfootImage("survivor-idle_knife_3.png");
    private GreenfootImage run5 = new GreenfootImage("survivor-idle_knife_4.png");
    private GreenfootImage run6 = new GreenfootImage("survivor-idle_knife_5.png");
    private GreenfootImage run7 = new GreenfootImage("survivor-idle_knife_6.png");
    private GreenfootImage run8 = new GreenfootImage("survivor-idle_knife_7.png");
    private GreenfootImage run9 = new GreenfootImage("survivor-idle_knife_8.png");
    private GreenfootImage run10 = new GreenfootImage("survivor-idle_knife_9.png");
    private GreenfootImage run11 = new GreenfootImage("survivor-idle_knife_10.png");
    private GreenfootImage run12 = new GreenfootImage("survivor-idle_knife_11.png");
    private GreenfootImage run13 = new GreenfootImage("survivor-idle_knife_12.png");
    private GreenfootImage run14 = new GreenfootImage("survivor-idle_knife_13.png");
    private GreenfootImage run15 = new GreenfootImage("survivor-idle_knife_14.png");
    private GreenfootImage run16 = new GreenfootImage("survivor-idle_knife_15.png");
    private GreenfootImage run17 = new GreenfootImage("survivor-idle_knife_16.png");
    private GreenfootImage run18 = new GreenfootImage("survivor-idle_knife_17.png");
    private GreenfootImage run19 = new GreenfootImage("survivor-idle_knife_18.png");
    private GreenfootImage run1k = new GreenfootImage("survivor-meleeattack_knife_0.png");
    private GreenfootImage run2k = new GreenfootImage("survivor-meleeattack_knife_1.png");
    private GreenfootImage run3k = new GreenfootImage("survivor-meleeattack_knife_2.png");
    private GreenfootImage run4k = new GreenfootImage("survivor-meleeattack_knife_3.png");
    private GreenfootImage run5k = new GreenfootImage("survivor-meleeattack_knife_4.png");
    private GreenfootImage run6k = new GreenfootImage("survivor-meleeattack_knife_5.png");
    private GreenfootImage run7k = new GreenfootImage("survivor-meleeattack_knife_6.png");
    private GreenfootImage run20 = new GreenfootImage("survivor-idle_knife_19.png");
    private GreenfootImage run8k = new GreenfootImage("survivor-meleeattack_knife_7.png");
    private GreenfootImage run9k = new GreenfootImage("survivor-meleeattack_knife_8.png");
    private GreenfootImage run10k = new GreenfootImage("survivor-meleeattack_knife_9.png");
    private GreenfootImage run11k = new GreenfootImage("survivor-meleeattack_knife_10.png");
    private GreenfootImage run12k = new GreenfootImage("survivor-meleeattack_knife_11.png");
    private GreenfootImage run13k = new GreenfootImage("survivor-meleeattack_knife_12.png");
    private GreenfootImage run14k = new GreenfootImage("survivor-meleeattack_knife_13.png");
    private GreenfootImage run15k = new GreenfootImage("survivor-meleeattack_knife_14.png");
    public GreenfootImage run1z = new GreenfootImage("skeleton-move_1.png");
    public GreenfootImage run2z = new GreenfootImage("skeleton-move_2.png");
    public GreenfootImage run3z = new GreenfootImage("skeleton-move_3.png");
    public GreenfootImage run4z = new GreenfootImage("skeleton-move_4.png");
    public GreenfootImage run5z = new GreenfootImage("skeleton-move_5.png");
    public GreenfootImage run6z = new GreenfootImage("skeleton-move_6.png");
    public GreenfootImage run7z = new GreenfootImage("skeleton-move_7.png");
    public GreenfootImage run8z = new GreenfootImage("skeleton-move_9.png");
    public GreenfootImage run9z = new GreenfootImage("skeleton-move_10.png");
    public GreenfootImage run10z = new GreenfootImage("skeleton-move_11.png");
    public GreenfootImage run11z = new GreenfootImage("skeleton-move_12.png");
    public GreenfootImage run12z = new GreenfootImage("skeleton-move_14.png");
    public GreenfootImage run13z = new GreenfootImage("skeleton-move_15.png");
    public GreenfootImage run14z = new GreenfootImage("skeleton-move_16.png");
    public GreenfootImage runT = new GreenfootImage("tree-1.png");
    public GreenfootImage run1T = new GreenfootImage("tree-2.png");
    private int frame = 1;
    private int attackframe = 1;
    private int animationCounter = 0;
    private int hitCounter = 0;
    public int Zframe = 1;
    public int ZombieCounter = 0;
    //amount of wood you have
    int woodCounter;
    //amount of rock you have
    int rockCounter;
   
    private boolean spaceDown;
    public Survivor()
    {
         woodCounter = 1;
    }
    
    public void wait(int time)
    {
        Greenfoot.delay(time);
    }
    
    private void Size()
    {
         GreenfootImage myImage = getImage();
        int myNewHeight = 100;
        int myNewWidth = 100;
        myImage.scale(myNewWidth, myNewHeight);
    }
    
    public void rock()
    {
        if (isTouching(Rock.class)) 
        {
            if(Greenfoot.isKeyDown("space"))
            {
               rockCounter++;
               getWorld().showText("Rock:" + rockCounter, 250, 100);
           
            }
        
        }
    }
    
    public void act() 
    {
        if(Greenfoot.isKeyDown("Space"))  
        {
            attack();
            if(frame == 15)
            {
                 Greenfoot.playSound("animal melee sound.wav");
            }
        }  
        else
        {
            stand();
        }
        
        Move();
        animationCounter ++;
        hitCounter ++;
        wood();
        rock();
    }
    //slows down idle animation
    private void stand()
    {
        if( animationCounter % 3 == 0)
         Animate();
        

    }
    //slows down knife attack animation
    private void attack()
    {
        if ( hitCounter % 3 == 0)
        Hit();

    }
    
    public void wood()
    {
        if (isTouching(Tree.class)) 
        {
            if(Greenfoot.isKeyDown("space"))
            {
               rockCounter++;
               getWorld().showText("Rock:" + rockCounter, 250, 100);
           
            }
        
        }
    }//animates idle
    private void Animate()
    {
        if( frame == 1)
        {
            setImage (run1);
            Size();
        }
        else if(frame ==2)
        {
            setImage (run2);
            Size();
        }
        else if(frame ==3)
        {
            setImage (run3);
            Size();
        }
        else if(frame ==4)
        {
            setImage (run4);
            Size();
        }
        else if(frame ==5)
        {
            setImage (run5);
            Size();
        }
        else if(frame ==6)
        {
            setImage (run6);
            Size();
        }
        else if(frame ==7)
        {
            setImage (run7);
            Size();
        }
        else if(frame ==8)
        {
            setImage (run8);
            Size();
        }
        else if(frame ==9)
        {
            setImage (run9);
            Size();
        }
        else if(frame ==10)
        {
            setImage (run10);
            Size();
        }
        else if(frame ==11)
        {
            setImage (run11);
            Size();
        }
        else if(frame ==12)
        {
            setImage (run12);
            Size();
        }
        else if(frame ==13)
        {
            setImage (run13);
            Size();
        }
        else if(frame ==14)
        {
            setImage (run14);
            Size();
        }
        else if(frame ==15)
        {
            setImage (run15);
            Size();
        }
        else if(frame ==16)
        {
            setImage (run16);
            Size();
        }
        else if(frame ==17)
        {
            setImage (run17);
            Size();
        }
        else if(frame ==18)
        {
            setImage (run18);
            Size();
        }
        else if(frame ==19)
        {
            setImage (run19);
            Size();
        }
        else if(frame ==20)
        {
            setImage (run20);
            Size();
            frame = 1;
            return;
        }
        frame++;
        
    }
    //animates knife atttack
    private void Hit()
    {
        
            if( attackframe == 1)
            {
                setImage (run1k);
                Size();
            }
            else if(attackframe ==2)
            {
                setImage (run2k);
                Size();
            }
            else if(attackframe ==3)
            {
                setImage (run3k);
                Size();
            }
            else if(attackframe ==4)
            {
                setImage (run4k);
                Size();
            }
            else if(attackframe ==5)
            {
                setImage (run5k);
                Size();
            }
            else if(attackframe ==6)
            {
                setImage (run6k);
                Size();
            }
            else if(attackframe ==7)
            {
                setImage (run7k);
                Size();
            }
            else if(attackframe ==8)
            {
                setImage (run8k);
                Size();
            }
            else if(attackframe ==9)
            {
                setImage (run9k);
                Size();
            }
            else if(attackframe ==10)
            {
                setImage (run10k);
                Size();
            }
            else if(attackframe ==11)
            {
                setImage (run11k);
                Size();
            }
            else if(attackframe ==12)
            {
                setImage (run12k);
                Size();
            }
            else if(attackframe ==13)
            {
                setImage (run13k);
                Size();
            }
            else if(attackframe ==14)
            {
                setImage (run14k);
                Size();
            }
            else if(attackframe ==15)
            {
                setImage (run15k);
                Size();
                attackframe = 1;
                return;
            }
            attackframe ++;
        }

    
    //all contols for moving
    private void Move()
    {
      
        if(Greenfoot.isKeyDown("left"))  
      {
          turn(-3);
       }
        if(Greenfoot.isKeyDown("right"))  
      {
          turn(3);
        }
         if(Greenfoot.isKeyDown("up"))  
      {
          move(3);
        }
      if(Greenfoot.isKeyDown("down"))  
      {
          move(-3);
        }
        
    }
    //used to stop actor for a set amount of time
    
}
and this is the tree class
import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * Write a description of class Tree here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class Tree extends Survivor
{
    

    public void wait(int time)
    {
        Greenfoot.delay(time);
    }
    
    public Tree()
    {
        if(Greenfoot.getRandomNumber(2)==1)    
        {
            setImage (runT);
        }
        else
        {
            setImage (run1T);
        }
        GreenfootImage tree1 = getImage();
        int myNewHeight = (int)tree1.getHeight()*3; 
        int myNewWidth = (int)tree1.getWidth()*3;
        tree1.scale(myNewWidth, myNewHeight);  
    }    
}
hosfeldli hosfeldli

2018/3/2

#
It changes the trees picture and animates it.
danpost danpost

2018/3/2

#
You have the Tree class as an extension of the Survivor class.
hosfeldli hosfeldli

2018/3/2

#
do classes transfer over act methods also if so is there a private void act()
danpost danpost

2018/3/2

#
There is no "private void act()". An extension to a class does exactly that -- it adds to what that class does. For example, Survivor extends Actor and a Survivor object is an actor; and the Actor class extends the Object class (which is the root of ALL classes) and an Actor object is an object. A tree is not a survivor (at least, I would doubt in context of your scenario); so, the Tree class should extend the Actor class, not the Survivor class. All non-private members of a class goes to any extension of it automatically.
hosfeldli hosfeldli

2018/3/2

#
int rockCounter;
    private boolean mineDown;
    /**
     * Act - do whatever the Rock wants to do. This method is called whenever
     * the 'Act' or 'Run' button gets pressed in the environment.
     */
    public void act() 
    {
       rock();
       rockCounter = 0;
    }    
    
    //adds to rock counter if touching tree and space is down
    
    public void rock()
    {
        if (mineDown != Greenfoot.isKeyDown("space"))
        {
            mineDown = !mineDown;
            if (mineDown && isTouching(Survivor.class))
            { 
                rockCounter++;
                getWorld().showText("Rock:" + rockCounter, 250, 100);
            }
        }
    }
it doesn't add to the counter can you help?
danpost danpost

2018/3/2

#
Remove line 10. The act method is run multiple times per second. You do not want to continuously set the value that field to zero.
hosfeldli hosfeldli

2018/3/2

#
Perfect thank you.
hosfeldli hosfeldli

2018/3/2

#
It adds to it anyway, now when I'm not touching the tree
danpost danpost

2018/3/2

#
You have it adding when touching a survivor -- not a tree.
hosfeldli hosfeldli

2018/3/2

#
that breaks it, it is in the tree class so it needs to touch the survivor class or it will be touching itself and it won't get true back
danpost danpost

2018/3/2

#
It looked like it was a Rock class. Please show entire class code.
hosfeldli hosfeldli

2018/3/2

#
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) /** * Write a description of class Tree here. * * @author (your name) * @version (a version number or a date) */ public class Tree extends Actor { public GreenfootImage runT = new GreenfootImage("tree-1.png"); public GreenfootImage run1T = new GreenfootImage("tree-2.png"); //amount of wood you have int woodCounter; private boolean spaceDown; public void wait(int time) { Greenfoot.delay(time); } public void act() { wood(); } public Tree() { if(Greenfoot.getRandomNumber(2)==1) { setImage (runT); } else { setImage (run1T); } GreenfootImage tree1 = getImage(); int myNewHeight = (int)tree1.getHeight()*3; int myNewWidth = (int)tree1.getWidth()*3; tree1.scale(myNewWidth, myNewHeight); } public void wood() { if (spaceDown != Greenfoot.isKeyDown("space")) { spaceDown = !spaceDown; if (spaceDown && isTouching(Survivor.class)) { woodCounter++; getWorld().showText("Wood:" + woodCounter, 100, 100); } } } }
danpost danpost

2018/3/2

#
Remove the 'wait' method. You can just use 'Greenfoot.delay' instead of calling an extra method. There is nothing wrong with this class. Do you have other extensions of Survivor that should not do so?
hosfeldli hosfeldli

2018/3/2

#
the only extension left is the Zombie class, but it doesn't have anything in it, but a randomized move pattern.
There are more replies on the next page.
1
2
3