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

2017/3/13

Returning Variables Across Worlds

PJaymz PJaymz

2017/3/13

#
Hello all... Finishing up on the quiz game I'm making. So I have two integers that are crucial in the end of the game, QuDone and points, both within my CorrectAnswer class. They are both stored well within that class, which is great! However... The CorrectAnswer class has parameters points and QuDone, as stated earlier... which is stored. But I don't know how to return it within a world constructor, so that the parameters are equal to the stored variables. Here's the code for the CorrectAnswer class:
import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * Write a description of class CorrectAnswer here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class CorrectAnswer extends Actor
{
    public int QuDone;
    public int points;
    public CorrectAnswer(int QuDone, int points)
    {
        this.points = points;
        this.QuDone = QuDone;
    }

    /**
     * Act - do whatever the CorrectAnswer wants to do. This method is called whenever
     * the 'Act' or 'Run' button gets pressed in the environment.
     */
    public void act() 
    {
        answer();
    }    

    public void nextQu()
    {
        if (QuDone == 9)
        {
            if (points < 7)
            {
                Greenfoot.setWorld(new TipWorld());
            }
            else
            {
                Greenfoot.setWorld(new EndWorld());
            }
        }
        if(getWorld() instanceof QuMaj)
        {
            switch(Greenfoot.getRandomNumber(8))
            {
                case 0: Greenfoot.setWorld(new QuMin()); break;
                case 1: Greenfoot.setWorld(new QuAug()); break;
                case 2: Greenfoot.setWorld(new QuDim()); break;
                case 3: Greenfoot.setWorld(new QuMaj7()); break;
                case 4: Greenfoot.setWorld(new QuMin7()); break;
                case 5: Greenfoot.setWorld(new QuDom7()); break;
                case 6: Greenfoot.setWorld(new QuHDim7()); break;
                case 7: Greenfoot.setWorld(new QuDim7()); break;
            }
        }
        if(getWorld() instanceof QuMin)
        {
            switch(Greenfoot.getRandomNumber(8))
            {
                case 0: Greenfoot.setWorld(new QuMaj()); break;
                case 1: Greenfoot.setWorld(new QuAug()); break;
                case 2: Greenfoot.setWorld(new QuDim()); break;
                case 3: Greenfoot.setWorld(new QuMaj7()); break;
                case 4: Greenfoot.setWorld(new QuMin7()); break;
                case 5: Greenfoot.setWorld(new QuDom7()); break;
                case 6: Greenfoot.setWorld(new QuHDim7()); break;
                case 7: Greenfoot.setWorld(new QuDim7()); break;
            }
        }
        if(getWorld() instanceof QuAug)
        {
            switch(Greenfoot.getRandomNumber(8))
            {
                case 0: Greenfoot.setWorld(new QuMin()); break;
                case 1: Greenfoot.setWorld(new QuMaj()); break;
                case 2: Greenfoot.setWorld(new QuDim()); break;
                case 3: Greenfoot.setWorld(new QuMaj7()); break;
                case 4: Greenfoot.setWorld(new QuMin7()); break;
                case 5: Greenfoot.setWorld(new QuDom7()); break;
                case 6: Greenfoot.setWorld(new QuHDim7()); break;
                case 7: Greenfoot.setWorld(new QuDim7()); break;
            }
        }
        if(getWorld() instanceof QuDim)
        {
            switch(Greenfoot.getRandomNumber(8))
            {
                case 0: Greenfoot.setWorld(new QuMin()); break;
                case 1: Greenfoot.setWorld(new QuAug()); break;
                case 2: Greenfoot.setWorld(new QuMaj()); break;
                case 3: Greenfoot.setWorld(new QuMaj7()); break;
                case 4: Greenfoot.setWorld(new QuMin7()); break;
                case 5: Greenfoot.setWorld(new QuDom7()); break;
                case 6: Greenfoot.setWorld(new QuHDim7()); break;
                case 7: Greenfoot.setWorld(new QuDim7()); break;
            }
        }
        if(getWorld() instanceof QuMaj7)
        {
            switch(Greenfoot.getRandomNumber(8))
            {
                case 0: Greenfoot.setWorld(new QuMin()); break;
                case 1: Greenfoot.setWorld(new QuAug()); break;
                case 2: Greenfoot.setWorld(new QuDim()); break;
                case 3: Greenfoot.setWorld(new QuMaj()); break;
                case 4: Greenfoot.setWorld(new QuMin7()); break;
                case 5: Greenfoot.setWorld(new QuDom7()); break;
                case 6: Greenfoot.setWorld(new QuHDim7()); break;
                case 7: Greenfoot.setWorld(new QuDim7()); break;
            }
        }
        if(getWorld() instanceof QuMin7)
        {
            switch(Greenfoot.getRandomNumber(8))
            {
                case 0: Greenfoot.setWorld(new QuMin()); break;
                case 1: Greenfoot.setWorld(new QuAug()); break;
                case 2: Greenfoot.setWorld(new QuDim()); break;
                case 3: Greenfoot.setWorld(new QuMaj7()); break;
                case 4: Greenfoot.setWorld(new QuMaj()); break;
                case 5: Greenfoot.setWorld(new QuDom7()); break;
                case 6: Greenfoot.setWorld(new QuHDim7()); break;
                case 7: Greenfoot.setWorld(new QuDim7()); break;
            }
        }
        if(getWorld() instanceof QuHDim7)
        {
            switch(Greenfoot.getRandomNumber(8))
            {
                case 0: Greenfoot.setWorld(new QuMin()); break;
                case 1: Greenfoot.setWorld(new QuAug()); break;
                case 2: Greenfoot.setWorld(new QuDim()); break;
                case 3: Greenfoot.setWorld(new QuMaj7()); break;
                case 4: Greenfoot.setWorld(new QuMin7()); break;
                case 5: Greenfoot.setWorld(new QuDom7()); break;
                case 6: Greenfoot.setWorld(new QuMaj()); break;
                case 7: Greenfoot.setWorld(new QuDim7()); break;
            }
        }
        if(getWorld() instanceof QuDom7)
        {
            switch(Greenfoot.getRandomNumber(8))
            {
                case 0: Greenfoot.setWorld(new QuMin()); break;
                case 1: Greenfoot.setWorld(new QuAug()); break;
                case 2: Greenfoot.setWorld(new QuDim()); break;
                case 3: Greenfoot.setWorld(new QuMaj7()); break;
                case 4: Greenfoot.setWorld(new QuMin7()); break;
                case 5: Greenfoot.setWorld(new QuMaj()); break;
                case 6: Greenfoot.setWorld(new QuHDim7()); break;
                case 7: Greenfoot.setWorld(new QuDim7()); break;
            }
        }
        if(getWorld() instanceof QuDim7)
        {
            switch(Greenfoot.getRandomNumber(8))
            {
                case 0: Greenfoot.setWorld(new QuMin()); break;
                case 1: Greenfoot.setWorld(new QuAug()); break;
                case 2: Greenfoot.setWorld(new QuDim()); break;
                case 3: Greenfoot.setWorld(new QuMaj7()); break;
                case 4: Greenfoot.setWorld(new QuMin7()); break;
                case 5: Greenfoot.setWorld(new QuDom7()); break;
                case 6: Greenfoot.setWorld(new QuHDim7()); break;
                case 7: Greenfoot.setWorld(new QuMaj()); break;
            }
        }
    }

    public void answer()
    {
        if(getWorld() instanceof QuMaj)
        {
            if(Greenfoot.isKeyDown("a"))
            {
                Greenfoot.playSound("correctamundo.mp3");
                nextQu();
                points++;
                QuDone++;
            }
            else if(Greenfoot.isKeyDown("b")|| Greenfoot.isKeyDown("c")||
            Greenfoot.isKeyDown("d") ||Greenfoot.isKeyDown("e")||
            Greenfoot.isKeyDown("f")|| Greenfoot.isKeyDown("g") ||
            Greenfoot.isKeyDown("h") || Greenfoot.isKeyDown("j"))
            {
                Greenfoot.playSound("wrong.mp3");
                nextQu();
                QuDone++;
            }
        }
        if(getWorld() instanceof QuMin)
        {
            if(Greenfoot.isKeyDown("b"))
            {
                Greenfoot.playSound("correctamundo.mp3");
                nextQu();
                points++;
                QuDone++;
            }
            else if(Greenfoot.isKeyDown("a")|| Greenfoot.isKeyDown("c")||
            Greenfoot.isKeyDown("d") ||Greenfoot.isKeyDown("e")||
            Greenfoot.isKeyDown("f")|| Greenfoot.isKeyDown("g") ||
            Greenfoot.isKeyDown("h") || Greenfoot.isKeyDown("j"))
            {
                Greenfoot.playSound("wrong.mp3");
                nextQu();
                QuDone++;
            }
        }
        if(getWorld() instanceof QuAug)
        {
            if(Greenfoot.isKeyDown("c"))
            {
                Greenfoot.playSound("correctamundo.mp3");
                nextQu();
                points++;
                QuDone++;
            }
            else if(Greenfoot.isKeyDown("a")|| Greenfoot.isKeyDown("c")||
            Greenfoot.isKeyDown("d") ||Greenfoot.isKeyDown("e")||
            Greenfoot.isKeyDown("f")|| Greenfoot.isKeyDown("g") ||
            Greenfoot.isKeyDown("h") || Greenfoot.isKeyDown("j"))
            {
                Greenfoot.playSound("wrong.mp3");
                nextQu();
                QuDone++;
            }
        }
        if(getWorld() instanceof QuDim)
        {
            if(Greenfoot.isKeyDown("d"))
            {
                Greenfoot.playSound("correctamundo.mp3");
                nextQu();
                points++;
                QuDone++;
            }
            else if(Greenfoot.isKeyDown("b")|| Greenfoot.isKeyDown("c")||
            Greenfoot.isKeyDown("a") ||Greenfoot.isKeyDown("e")||
            Greenfoot.isKeyDown("f")|| Greenfoot.isKeyDown("g") ||
            Greenfoot.isKeyDown("h") || Greenfoot.isKeyDown("j"))
            {
                Greenfoot.playSound("wrong.mp3");
                nextQu();
                QuDone++;
            }
        }
        if(getWorld() instanceof QuMaj7)
        {
            if(Greenfoot.isKeyDown("e"))
            {
                Greenfoot.playSound("correctamundo.mp3");
                nextQu();
                points++;
                QuDone++;
            }
            else if(Greenfoot.isKeyDown("b")|| Greenfoot.isKeyDown("c")||
            Greenfoot.isKeyDown("d") ||Greenfoot.isKeyDown("a")||
            Greenfoot.isKeyDown("f")|| Greenfoot.isKeyDown("g") ||
            Greenfoot.isKeyDown("h") || Greenfoot.isKeyDown("j"))
            {
                Greenfoot.playSound("wrong.mp3");
                nextQu();
                QuDone++;
            }
        }
        if(getWorld() instanceof QuMin7)
        {
            if(Greenfoot.isKeyDown("f"))
            {
                Greenfoot.playSound("correctamundo.mp3");
                nextQu();
                points++;
                QuDone++;
            }
            else if(Greenfoot.isKeyDown("b")|| Greenfoot.isKeyDown("c")||
            Greenfoot.isKeyDown("d") ||Greenfoot.isKeyDown("e")||
            Greenfoot.isKeyDown("a")|| Greenfoot.isKeyDown("g") ||
            Greenfoot.isKeyDown("h") || Greenfoot.isKeyDown("j"))
            {
                Greenfoot.playSound("wrong.mp3");
                nextQu();
                QuDone++;
            }
        }
        if(getWorld() instanceof QuDom7)
        {
            if(Greenfoot.isKeyDown("g"))
            {
                Greenfoot.playSound("correctamundo.mp3");
                nextQu();
                points++;
                QuDone++;
            }
            else if(Greenfoot.isKeyDown("b")|| Greenfoot.isKeyDown("c")||
            Greenfoot.isKeyDown("d") ||Greenfoot.isKeyDown("e")||
            Greenfoot.isKeyDown("f")|| Greenfoot.isKeyDown("a") ||
            Greenfoot.isKeyDown("h") || Greenfoot.isKeyDown("j"))
            {
                Greenfoot.playSound("wrong.mp3");
                nextQu();
                QuDone++;
            }
        }
        if(getWorld() instanceof QuHDim7)
        {
            if(Greenfoot.isKeyDown("h"))
            {
                Greenfoot.playSound("correctamundo.mp3");
                nextQu();
                points++;
                QuDone++;
            }
            else if(Greenfoot.isKeyDown("b")|| Greenfoot.isKeyDown("c")||
            Greenfoot.isKeyDown("d") ||Greenfoot.isKeyDown("e")||
            Greenfoot.isKeyDown("f")|| Greenfoot.isKeyDown("g") ||
            Greenfoot.isKeyDown("a") || Greenfoot.isKeyDown("j"))
            {
                Greenfoot.playSound("wrong.mp3");
                nextQu();
                QuDone++;
            }
        }
        if(getWorld() instanceof QuDim7)
        {
            if(Greenfoot.isKeyDown("j"))
            {
                Greenfoot.playSound("correctamundo.mp3");
                nextQu();
                points++;
                QuDone++;
            }
            else if(Greenfoot.isKeyDown("b")|| Greenfoot.isKeyDown("c")||
            Greenfoot.isKeyDown("d") ||Greenfoot.isKeyDown("e")||
            Greenfoot.isKeyDown("f")|| Greenfoot.isKeyDown("g") ||
            Greenfoot.isKeyDown("h") || Greenfoot.isKeyDown("a"))
            {
                Greenfoot.playSound("wrong.mp3");
                nextQu();
                QuDone++;
            }
        }
    }
}
And here it is, for example, the QuMaj world:
import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * Write a description of class Qu1 here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class QuMaj extends World
{
    /**
     * Constructor for objects of class Qu1.
     * 
     */
    public QuMaj()
    {    
        // Create a new world with 600x400 cells with a cell size of 1x1 pixels.
        super(800, 474, 1); 
        prepare();
    }

    public void prepare()
    {
        play();
        QuestionText question = new QuestionText();
        addObject(question, 400, 60);
        addObject(new Answer("A. Major"), 153, 128);
        addObject(new Answer("B. Minor"), 424, 128);
        addObject(new Answer("C. Augmented"), 695, 128);
        addObject(new Answer("D. Diminished"), 153, 237);
        addObject(new Answer("E. Major 7"), 424, 237);
        addObject(new Answer("F. Minor 7"), 695, 237);
        addObject(new Answer("G. Dominant 7"), 153, 345);
        addObject(new Answer("H. Half-Diminished 7"), 424, 345);
        addObject(new Answer("J. Fully-Diminished 7"), 695, 345);
        CorrectAnswer correctanswer = new CorrectAnswer(0, 0);
        addObject(correctanswer,2,473);
    }

    public void play()
    {
        switch(Greenfoot.getRandomNumber(6))
        {
            case 0:  Greenfoot.playSound("Maj1.mid"); break;
            case 1:  Greenfoot.playSound("Maj2.mid"); break;
            case 2:  Greenfoot.playSound("Maj3.mid"); break;
            case 3:  Greenfoot.playSound("Maj4.mid"); break;
            case 4:  Greenfoot.playSound("Maj5.mid"); break;
            case 5:  Greenfoot.playSound("Maj6.mid"); break;
        }
    } 

}

(Note: I'm looking for help with the CorrectAnswer correctanswer = new CorrectAnswer(insert parameter, insert parameter))
Super_Hippo Super_Hippo

2017/3/13

#
What are QuDone and points? So are they like global scores or the points to get when you answer that question correctly?
davmac davmac

2017/3/13

#
If I understand correctly, what you really want to do is carry one "CorrectAnswer" object between your worlds. So, in fact you don't want a "new CorrectAnswer" at all; what you want is a parameter for your constructor. In that case the constructor for QuMaj becomes:
    public QuMaj(CorrectAnswer correctanswer)
    {    
        // Create a new world with 600x400 cells with a cell size of 1x1 pixels.
        super(800, 474, 1); 
        prepare();
        addObject(correctanswer, 2, 473);
    }
(Note, remove the current line 36 from your prepare() method). (If you want to keep the current arrangement where it's added in prepare(), you could add a paramter to prepare() and pass it on). Then your code in CorrectAnswer where you switch worlds should look more like this:
            switch(Greenfoot.getRandomNumber(8))
            {
                case 0: Greenfoot.setWorld(new QuMin(this)); break;
                case 1: Greenfoot.setWorld(new QuAug(this)); break;
                case 2: Greenfoot.setWorld(new QuDim(this)); break;
                case 3: Greenfoot.setWorld(new QuMaj7(this)); break;
                // etc
Finally, I guess one of these worlds is the starting world? You might need to add a second, zero-argument constructor, which calls the other constructor:
    public QuMaj()
    {
        this(new CorrectAnswer());
    }
You need to login to post a reply.