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

2019/11/26

Score in GameOver World

1
2
SemDeBakkero SemDeBakkero

2019/11/26

#
Hi, I have a world where you can score points to kill someone. And if I die I set a new world: GameOver. But how do I set the score from the world where you can score points (in this case the world: Alien_Attack) to the GameOver world? This are my codes: Alien_Attack:
public class Alien_Attack extends World
{
   public Speler mainSpeler = new Speler(); 
   int EnemyCounter; 
   private int timer = 0; //timer instellen
   int x = Greenfoot.getRandomNumber(getWidth()); //variable x instellen op random breedte
   int y = Greenfoot.getRandomNumber(getHeight()); //variable y instellen op random hoogte
   Counter counter = new Counter(); 
   
   public Alien_Attack()
    {    
        super(1150, 610, 1); //grootte wereld instellen
        addObject(mainSpeler, getWidth()/2, getHeight()/2); 
        addObject(counter, 100, 40); 
    }
   public Counter getCounter()
   {
       return counter; //het terugkeren van counter
   }
   public void act()
    {
        EnemyCounter++; //enemycounter laten lopen
        if(getObjects(Enemy.class).size() < 7 && EnemyCounter%100 == 0) //als er minder dan 7 enemies zijn dan...
        {                                                               
            SpawnEnemy(); //Voer dan SpawnEnemy uit
        }
        
        timer++; // timer laten lopen
        if (timer == 1650) //als de timer 1650 is (staat ongeveer gelijk aan 30 secondes)
        {
            Greenfoot.setWorld(new TimeUpAlien());  //open dan nieuwe wereld: TimeUpAlien 
        }
        
        
            Greenfoot.setWorld(new GameOverAlien()); //open dan een niewe wereld: GameOverAlien
        }
    }
 
   public void SpawnEnemy() //spawn plekken voor de enemies bepalen
    {
        addObject(new Enemy(), getWidth(), 0); //helemaal rechtsboven een Enemy toevoegen
        addObject(new Enemy(), getWidth(), getHeight()); //rechtsonder een Enemy toevoegen
        addObject(new Enemy(), getWidth(), getHeight()/2); //rechtsmidden een Enemy toevoegen
        addObject(new Enemy(), getWidth(), getHeight()/4); //rechts kwart naar beneden (van bovenaan gezien) een Enemy toevoegen
        addObject(new Enemy(), getWidth(), getHeight()*3/4); //rechts kwart naar boven (van onderaan gezien) een Enemy toevoegen
        addObject(new Enemy(), getWidth(), getHeight()/8); //rechts een achtste naar beneden (van bovenaan gezien) een Enemy toevoegen
        addObject(new Enemy(), getWidth(), getHeight()*7/8); //rechts een achtste naar boven (van onderaan gezien) een Enemy toevoegen
        addObject(new Enemy(), getWidth()*7/8, 0);
        addObject(new Enemy(), getWidth()*7/8, getHeight());
    }   

    
    

}
this is the code of the counter:
public class Counter extends Actor
{
    int score = 0; //variable score gelijkstellen aan 0
    
    public void act() 
    {
        setImage(new GreenfootImage("Score : " + score, 24, Color.WHITE,Color.BLACK)); //tekst invoegen
    }
    public void addScore()
    {
        score++; //score laten optellen
    }
}
And this is the code of the GameOver:
public class GameOverAlien extends World
{
    Counter counter = new Counter(); //counter betekent nu nieuwe Counter
    public GameOverAlien()
     {    
       super(1150, 610, 1); //grootte van wereld instellen
       showText("GAME OVER", getWidth()/2, 100); //tekst game over invoegen
       addObject(counter, getWidth()/2, 200); //counter standaard toevoegen aan wereld
       showText("PRESS 'R' TO RESTART THE GAME", getWidth()/2, 400); //tekst invoegen
       showText("PRESS 'ENTER' GO BACK TO HOME", getWidth()/2, 450); // tekst invoegen
    }
    public void act()
    {
        if(Greenfoot.isKeyDown("r")) //als r wordt ingedrukt...
        {
            Greenfoot.setWorld(new Alien_Attack()); //open dan een nieuwe alien attack
        }
        if(Greenfoot.isKeyDown("enter")) //als enter wordt ingedrukt...
        {
            Greenfoot.setWorld(new Home()); //open dan nieuwe home
        }
    }
}
Can someone please help me?
danpost danpost

2019/11/26

#
SemDeBakkero wrote...
Hi, I have a world where you can score points to kill someone. And if I die I set a new world: GameOver. But how do I set the score from the world where you can score points (in this case the world: Alien_Attack) to the GameOver world? << Code Omitted >>
GameOver go = new GameOver();
go.counter.score = counter.score;
Greenfoot.setWorld(go);
SemDeBakkero SemDeBakkero

2019/11/26

#
danpost wrote...
SemDeBakkero wrote...
Hi, I have a world where you can score points to kill someone. And if I die I set a new world: GameOver. But how do I set the score from the world where you can score points (in this case the world: Alien_Attack) to the GameOver world? << Code Omitted >>
GameOver go = new GameOver();
go.counter.score = counter.score;
Greenfoot.setWorld(go);
Hi, thanks for your reply. Where do I have to put this code? In my GameOver world?
danpost danpost

2019/11/26

#
SemDeBakkero wrote...
Hi, thanks for your reply. Where do I have to put this code? In my GameOver world?
Do you not see what the code does? That should be a big indicator.
SemDeBakkero SemDeBakkero

2019/11/26

#
No I do'nt know what it does....
SemDeBakkero SemDeBakkero

2019/11/26

#
Can you help?
danpost danpost

2019/11/26

#
SemDeBakkero wrote...
No I do'nt know what it does....
What does it look like it does? Start with the first line.
SemDeBakkero SemDeBakkero

2019/11/27

#
Seems tobe in the GameOver screen, doesn't it?
SemDeBakkero SemDeBakkero

2019/11/27

#
oh wait i see. I do a if command and then isEmpty the player. And than he has to remember the score. Wow. Thanks man!! You just saved my schoolproject.
SemDeBakkero SemDeBakkero

2019/11/27

#
Hi here am I (again). I have an other minigame in my greenfoot application. And want to remember the score in this game. But this game has a timer as score, so how am I going to put the score in my game and the score in the game over screen afterwards? This is my code so far: CounterM (timer score):
import greenfoot.*;  

/**
 * CounterM 
 * 
 * @author Sem de Bakker) 
 * 
 */
public class CounterM extends Actor
{
    int scoreM = 0; // variable maken die hetzelfde is al 0
    
    public void act() 
    {
        setImage(new GreenfootImage("SCORE : " + scoreM/20, 24, Color.WHITE,Color.BLACK)); //tekst invoegen met de score erin
        addScore();
    }    
    public void addScore()
    {
        scoreM++; //score laten optellen
    }
}
The code of my world:
/**
 * Dodge Meteor
 * 
 * @author (Sem de Bakkker) 
 */

public class Dodge_Meteor extends World
{
    public Dodge_Speler mainSpeler = new Dodge_Speler(); //speler standaard toevoegen
    int MeteorCounter; //variable MeteorCounter maken
    int timer = 0; //timer instellen
    int starAmount = 200; //aantal sterren als variable instellen
    int i; //i als variable instellen
    int s; //s als variable instellen
    int x = Greenfoot.getRandomNumber(getWidth()); //variable x instellen op random breedte
    int y = Greenfoot.getRandomNumber(getHeight()); //variable y instellen op random hoogte
    private Star[] stars;
    CounterM CounterM = new CounterM(); //counter betekent nu nieuwe Counter
    public Dodge_Meteor()
    {    
        super(1150, 610, 1); //groote wereld instellen
        addObject(mainSpeler, getWidth()/2, getHeight()/2); //Speler toevoegen
        addObject(CounterM, 100, 40); //CounterM standaard toevoegen aan wereld
    }
    public CounterM getCounterM()
    {
        return CounterM; //het terugkeren van CounterM
    }
    public void act()
    {
        timer++;
        if (timer == 100 || timer == 250 || timer == 500 || timer == 550 || timer == 600)
        {
            addObject(new meteor(), getWidth(), getHeight()/2); //nog een rechtsmidden een meteor toevoegen
            //dit doe ik om het spel moeilijker te maken
        }
        
        
        for (Object obj : getObjects(Star.class)) ((Star) obj).move(); //alle objecten (Star.class) -> beweeg
        makeStars(); //voer makeStars uit
        
        if(getObjects(Dodge_Speler.class).isEmpty()) //als er geen Spelers zijn (speler is dus dood)
        {
            Greenfoot.setWorld(new GameOverDodge()); //Openen wereld van GameOverDodge
        }
        
        MeteorCounter++; //meteorcounter laten oplopen
        if(getObjects(meteor.class).size() < 7 && MeteorCounter%100 == 0) //als er minder dan 7 meteors zijn dan...
        {                                                               
            SpawnMeteor(); //Voer SpawnMeteor uit
        }
    }


    private void makeStars()
    {
        stars = new Star[starAmount];  //stars instellen op nieuw star met een bepaalde hoeveelheid
        while (i < starAmount) 
        {
            int x = Greenfoot.getRandomNumber(getWidth()); //variable x instellen op random breedte 
            int y = Greenfoot.getRandomNumber(getHeight());//variable y instellen op random hoogte
            Star s = new Star();  //s betkent nu new Star
            addObject(s, x, y);  //niewe object s (new Star) met de variable x & y als de coördinaten
            stars[i] = s;
            i++; //i laten lopen
        }
    }  
    public void SpawnMeteor()
    {
        addObject(new meteor(), getWidth(), 0); //helemaal rechtsboven een meteor toevoegen
        addObject(new meteor(), getWidth(), getHeight()); //rechtsonder een meteor toevoegen
        addObject(new meteor(), getWidth(), getHeight()/2); //rechtsmidden een meteor toevoegen
        addObject(new meteor(), getWidth(), getHeight()/2); //nog een rechtsmidden een meteor toevoegen
        addObject(new meteor(), getWidth(), getHeight()/2); //en nog een rechtsmidden een meteor toevoegen
        addObject(new meteor(), getWidth(), getHeight()/4); //rechts kwart naar beneden (van bovenaan gezien) een meteor toevoegen
        addObject(new meteor(), getWidth(), getHeight()*3/4); //rechts kwart naar boven (van onderaan gezien) een meteor toevoegen
        addObject(new meteor(), getWidth(), getHeight()/8); //rechts een achtste naar beneden (van bovenaan gezien) een meteor toevoegen
        addObject(new meteor(), getWidth(), getHeight()*7/8); //rechts een achtste naar boven (van onderaan gezien) een meteor toevoegen
        addObject(new meteor(), getWidth(), getHeight()/16); //rechts een zestiende naar beneden (van bovenaan gezien) een meteor toevoegen
        addObject(new meteor(), getWidth(), getHeight()*15/16); //rechts een zestiende naar boven (van onderaan gezien) een meteor toevoegen
    }
}
Already a thanks to you danpost you are a helping hero. Hope you can also help me with this :)
SemDeBakkero SemDeBakkero

2019/11/27

#
Can someone help me please?
danpost danpost

2019/11/27

#
SemDeBakkero wrote...
want to remember the score in this game. But this game has a timer as score, so how am I going to put the score in my game and the score in the game over screen afterwards? << Code Omitted >>
Just use the same code as given above, replacing counter with CounterM.
SemDeBakkero SemDeBakkero

2019/11/27

#
I changed it to this but got to errors (underlined red)
if(getObjects(Dodge_Speler.class).isEmpty()) 
        {
            GameOverDodge go = new GameOverDodge();
            go.CounterM.score = CounterM.score;
            Greenfoot.setWorld(go);
        }
danpost danpost

2019/11/27

#
SemDeBakkero wrote...
I changed it to this but got to errors (underlined red)
Where is the red and what message do you get when hovering the mouse cursor over it?
SemDeBakkero SemDeBakkero

2019/11/28

#
It says: "Can'not access CounterM bad class file: E:\Sem's_Way\CounterM.clas class file has wrong version 55.0, should be 52.0 Please remove or make sure it appears in the correct subdirectory of the classpath." This is appears by the following code:
CounterM CounterM = new CounterM();
There are more replies on the next page.
1
2