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

2014/11/16

Need some help :)

Raiv3n Raiv3n

2014/11/16

#
I need some help at my program. If the counter reaches 30 or more, it should reset to 0 and give the boolean true out. This works fine, but when I want to get access of it at another class, then i turn to false. Here is the counter:
import greenfoot.*;  
import java.awt.Color;  
  
public class Counter  extends Actor  
{  
    private int value;  
    private int lvlcounter;
    public boolean lvl2;
    public boolean lvl1check;
    public Counter()  
    {  
        updateImage();  
        lvlcounter=1;
    }  
    public void act()
    {
        lvl2();
        lvl2=lvl2();
        lvl1check=lvl1check();
    }
    private void updateImage()  
    {  
        setImage(new GreenfootImage("Points: "+value, 20, Color.GRAY, Color.BLUE));  
    }  
  
    public void bumpCount(int amount)  
    {  
        value += amount;  
        updateImage();  
    }  
    public boolean lvl2()
    {
        if(lvlcounter==1)
        {
            if(value==30 || value>30)
            {
                lvlcounter=lvlcounter+1;
                value=0;
                if(lvlcounter==2)
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
            else
            {
                if(lvlcounter==2)
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
        }
        else
        {
            if(lvlcounter==2)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
    }
    public boolean lvl1check()
    {
        if(lvlcounter==2 || lvlcounter>2)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
}  
Here is the UFO, where the counter get the points from and where I get the problem from above:
import greenfoot.*;  

/**
 * Write a description of class Ufo here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class Ufo extends Actor
{
    private int speed;
    private int gameStart;
    public Ufo()
    {
        speed=Greenfoot.getRandomNumber(1)+1;
    }
    public void act() 
    {
        startGame();
        if(gameStart==1 || gameStart>1)
        {
            move();
            border();
            clicked();
            isTouchingProjectile();
            isTouchingBomb();
            lvl1();
        }
    }    
    public void move()
    {
        setLocation(getX() + speed, getY());
    }
    public void border()
    {
        if(getX()>840)
        {
            Gameover gameover =new Gameover();
            getWorld().addObject(gameover, 400, 400);
            Greenfoot.stop();
        }
    }
    public void clicked()
    {
        if(Greenfoot.mouseClicked(this))
        {
            setLocation(-40, Greenfoot.getRandomNumber(650)+50);
            ((Counter)getWorld().getObjects(Counter.class).get(0)).bumpCount(1); 
            ((Cash)getWorld().getObjects(Cash.class).get(0)).bumpCount(Greenfoot.getRandomNumber(5) + 20); 
        }
    }
    public void isTouchingProjectile()
    {
        if(isTouching(Projectile.class))
        {
            setLocation(-40, Greenfoot.getRandomNumber(650)+50);
            ((Counter)getWorld().getObjects(Counter.class).get(0)).bumpCount(10); 
            
            ((Cash)getWorld().getObjects(Cash.class).get(0)).bumpCount(Greenfoot.getRandomNumber(20) + 90);
        }
    }
    public void isTouchingBomb()
    {
        if(isTouching(Bomb.class))
        {
            setLocation(-40, Greenfoot.getRandomNumber(650)+50);
            ((Counter)getWorld().getObjects(Counter.class).get(0)).bumpCount(5); 
            
            ((Cash)getWorld().getObjects(Cash.class).get(0)).bumpCount(Greenfoot.getRandomNumber(10) + 45);
        }
    }
    public void startGame()
    {
        MenuButton button =new MenuButton();
        Menu menu =new Menu();
        if(button.clicked())
        {
            gameStart=gameStart+1;
            getWorld().removeObject(menu);
        }
    }
    public void lvl1()
    {
        Counter counter =new Counter();
        if(counter.lvl1check()==true)
        {
            getWorld().removeObject(this);
        }
    }
}
Ty for your help :)
danpost danpost

2014/11/16

#
At line 84 of the Ufo class, you are creating a new Counter object whose values are initialized to their default states. It in no way reflects or has any connection to the Counter object that you have already created and is tracking your levels.
You need to login to post a reply.