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

2018/5/15

Adding actors in the world that a PIP is in from an actor inside of the PIP

Lavenger Lavenger

2018/5/15

#
I seem to be having difficulty adding an actor inside of the world that the PIP is in from an actor inside of the PIP Context The player(UmaruHamster) is placed in a platform game that's in a PIP in MyWorld and is supposed to go from PointA to PointB. along the way, there will be a challenge the player can participate in and get extra rewards(Buffs) for completing the challenge and reaching PointB. When the reward is "given", what happens is that an actor is added into the world the PIP is added in (not the world inside of the PIP) and the buff "activates" via some code in an actor. But for some reason, the actor isnt added into the world. Codes The actor the player is supposed to control:
import greenfoot.*;
public class MiniUmaru extends Actor
{
    private int MiniPChipsScore = 0, MiniCColaScore = 0, MiniBRAnimeScore = 0, frames = 0,  seconds = 0, speed = 0, vSpeed = 0, acceleration = 2, jumpStrength = 20, SX, SY;
    public Actor PChips = new PChips(), CCola = new CCola(), BRAnime = new BRAnime();
    public SimpleActor Nope = new SimpleActor();
    public String TerrainUsed;
    MyWorld mw = (MyWorld)getWorld();
    public void act() 
    {
        OnGround();
        checkKeys();
        checkFall();
        if(TerrainUsed == "Terrain 1"){SX=99; SY=487;}
        else if(TerrainUsed == "Terrain 2"){SX=1084; SY=493;}
        else if(TerrainUsed == "Terrain 3"){SX=104; SY=527;}
        else if(TerrainUsed == "Terrain 4") {SX=97; SY=502;}
        Restart(SX, SY);
        if(!getWorld().getObjects(SimpleActor.class).isEmpty())
        {
            if(seconds == 3)
            {
                getWorld().removeObject(getOneObjectAtOffset(600,30,SimpleActor.class));
                frames = 0;
            }
            seconds = (frames += 1/60);
        }
        ScoreAndEndGame();
    }
    private void checkKeys()
    {
        if (Greenfoot.isKeyDown("Left")||Greenfoot.isKeyDown("a"))
        {
            this.setImage("UmaruHamsterLeft.png"); this.getImage().scale(60,60);
            move(-7);
        }
        if (Greenfoot.isKeyDown("Right")||Greenfoot.isKeyDown("d"))
        {
            this.setImage("UmaruHamsterRight.png"); this.getImage().scale(60,60);
            move(7);
        }
        if(Greenfoot.isKeyDown("space")) {if( OnGround() == true || OnShortGround() == true) jump();}
    }
    public void jump()
    {
        vSpeed = -jumpStrength;
        fall();
    }
    public boolean OnGround()
    {
        Actor under = getOneObjectAtOffset (0, 20, Ground.class);
        return under != null; 
    } 
    public boolean OnShortGround()
    {
        Actor under = getOneObjectAtOffset (0, 20, ShortGround.class);
        return under != null; 
    } 
    public void checkFall()
    {
        if(OnGround()||OnShortGround()) vSpeed = 0;
        else fall();
    }
    public void fall()
    {
        setLocation (getX(),getY() + vSpeed);
        vSpeed = vSpeed + acceleration;
    }
    public void Restart (int SX, int SY)
    {
        switch(Greenfoot.getRandomNumber(5))
        {
            case 0: Nope.setImage(new GreenfootImage("Nope, not today fam", 20, new Color(230,70,70,150), new Color(0, 0, 0, 0)));
            case 1: Nope.setImage(new GreenfootImage("Sorry, but no", 20, new Color(230,70,70,150), new Color(0, 0, 0, 0)));
            case 2: Nope.setImage(new GreenfootImage("Nah, not happening", 20, new Color(230,70,70,150), new Color(0, 0, 0, 0)));
            case 3: Nope.setImage(new GreenfootImage("Cheating? Tsk tsk tsk", 20, new Color(230,70,70,150), new Color(0, 0, 0, 0)));
            case 4: Nope.setImage(new GreenfootImage("Nice try there", 20, new Color(230,70,70,150), new Color(0, 0, 0, 0)));
        }
        if (this.getOneIntersectingObject(ReturnToStart.class) != null)
        {
            Greenfoot.playSound("Nope.wav");
            this.setLocation(SX,SY);
            getWorld().addObject(Nope, 600, 30);
        }
    }
    public void ScoreAndEndGame()
    {
             if(this.getOneIntersectingObject(MiniPChips.class)     != null)    {MiniPChipsScore = 1;       getWorld().removeObjects(getWorld().getObjects(MiniPChips.class));}
        else if(this.getOneIntersectingObject(MiniCCola.class)      != null)    {MiniCColaScore = 1;        getWorld().removeObjects(getWorld().getObjects(MiniCCola.class));}
        else if(this.getOneIntersectingObject(MiniBRAnime.class)    != null)    {MiniBRAnimeScore = 1;      getWorld().removeObjects(getWorld().getObjects(MiniBRAnime.class));}
        if (this.getOneIntersectingObject(Minigame4EndPoint.class)  != null)
        {
            if(MiniPChipsScore ==1)
            {
                MiniPChipsScore = 0;
                mw.addObject(PChips, 600, 600);
            }
            if(MiniCColaScore ==1)
            {
                MiniCColaScore = 0;
                mw.addObject(CCola, 600, 600);
            }
            if(MiniBRAnimeScore ==1)
            {
                MiniBRAnimeScore = 0;
                mw.addObject(BRAnime, 600, 600);
            }
            getWorld().removeObjects(getWorld().getObjects(Actor.class));
        }
    }
}
the buff actors(CCola, MiniCCola, PChips, MiniPChips, BRAnime, MiniBRAnime(all of them have no codes in themsince the codes relating to these actors are done in the world and other actors)):
import greenfoot.*;
public class CCola extends Actor
{
    public void act() 
    {
    }    
}
The Main Game world(MyWorld) code:
import greenfoot.*;
public class MyWorld extends World
{
    // fields usually (by convention) go first
    
    //For GIF background stuff
    GifImage gifImg = new GifImage("Umaru.gif");
    public int getHeight = 552, getWidth = 1200 ;
    
    //For Timing stuff
    private Actor GameTimeDisplay = new SimpleActor(), Cooldown = new SimpleActor(), PCBuffTimeDisplay = new SimpleActor(), CCBuffTimeDisplay = new SimpleActor(), BRABuffTimeDisplay = new SimpleActor();
    private int frames, Cframes = (3+Greenfoot.getRandomNumber(5))*55, PCBframes = 5*55, CCBframes = 5*55, BRABframes = 5*55;
    
    //For Yen stuff
    public float AYen; //precise
    public int DYen; //rounded
    public Yen YenDisplay = new Yen();
    
    //For Buttons stuff
    public Actor MKButton = new SimpleActor(), HButton = new SimpleActor(), BButton = new SimpleActor(), AButton = new SimpleActor(), SButton = new SimpleActor(), KButton = new SimpleActor(), EButton = new SimpleActor(), UButton = new SimpleActor(), PCButton = new SimpleActor(), CCButton = new SimpleActor(), BRAButton = new SimpleActor(), Buttons[] = {MKButton, HButton, BButton, AButton, SButton, KButton, EButton, UButton, PCButton, CCButton};
    private String ButtonImages[] = {"MKButton", "HButton", "BButton", "AButton", "SButton", "KButton", "EButton", "UButton", "button-blue", "button-blue"};
    private int ButtonsArraySize = Buttons.length;
    
    //For Menu Upgrade Panel stuff
    private double CharacterYenIncome;
    private int totalYen = 0;
    public int characterValue, MKLevel = 0, HLevel = 0, ALevel = 0, SLevel = 0, BLevel = 0, KLevel = 0, ELevel = 0, ULevel = 0, TLevel = 0;
    private String SelectedCharacter, SelectedCharacter2;
    public Actor MgrKanau = new MgrKanau(), Hikari = new Hikari(), Alex = new Alex(), Sylphynford = new Sylphynford(), Bomba = new Bomba(), Kirie = new Kirie(), Ebina = new Ebina(), Umaru = new Umaru(), UpgradeText = new SimpleActor(), UpgradeButton1 = new SimpleActor(),UpgradeButton5 = new SimpleActor(),UpgradeButton10 = new SimpleActor(), CharacterYenIncomeDisplay = new SimpleActor();
    
    //For PIP stuff
    PIP pip;
    World minor;
    public Boolean setActiveState = false;
    Actor mouseActor; // holds the actor being dragged
    int mouseOffX, mouseOffY; // holds the offsets of mouse location from center of object being dragged
    // class constructors usually (by convention) go next
    
    //To construct MyWorld
    public MyWorld()
    {
        //For building the world window size
        super(1400, 675, 1);
        
        //For Yen stuff
        addObject(new Taihei(), 700, 338);
        adjustYen(0); // to initialize image
        addObject(YenDisplay, 1265, 50); // wherever
        
        //For updating the time display
        updateGameTimeDisplay();
        addObject(GameTimeDisplay, 1265, 20);
        
        //For triggering the minigame
        updateCooldownDisplay();
        addObject(Cooldown, 1265, 35);
        
        //For adding in the buttons to add the actors into the world
        for( int i = 0; i < ButtonsArraySize; i++)
        {
            Buttons[i].setImage(ButtonImages[i] + ".png"); Buttons[i].getImage().scale(70, 70); addObject(Buttons[i], 1212, (100 + (i*40)));
            i++;
            Buttons[i].setImage(ButtonImages[i] + ".png"); Buttons[i].getImage().scale(70, 70); addObject(Buttons[i], 1312, (100 + ((i-1)*40)));
        }
        BRAButton.setImage("button-blue.png"); BRAButton.getImage().scale(70, 70); addObject(BRAButton, 1262, 500);
        //Upgrade Panel UI
        UpgradeText.setImage(new GreenfootImage("Upgrade by:", 20, Color.BLACK, new Color(0, 0, 0, 0))); addObject(UpgradeText, 1188, 600);
        UpgradeButton1.setImage("Upgr1.png"); UpgradeButton1.getImage().scale(70, 70); UpgradeButton1.getImage().scale(40,20); addObject(UpgradeButton1, 1262, 600);
        UpgradeButton5.setImage("Upgr5.png"); UpgradeButton5.getImage().scale(70, 70); UpgradeButton5.getImage().scale(40,20); addObject(UpgradeButton5, 1312, 600);
        UpgradeButton10.setImage("Upgr10.png"); UpgradeButton10.getImage().scale(70, 70); UpgradeButton10.getImage().scale(40,20); addObject(UpgradeButton10, 1362, 600);
        addObject(CharacterYenIncomeDisplay, 1262, 570);
    }
    //For GIF background
    private void gifAnimation()
    {
        for (Object obj : gifImg.getImages()) ((GreenfootImage)obj).scale(getWidth(), getHeight());
        setBackground(gifImg.getCurrentImage());
    }
    // methods (by convention) go last
    
    //For executing all preccesses in MyWorld
    public void act()
    {
        //For GIF background
        gifAnimation();
        //Menu Stuff
        setMenuUpgrDisplay();
        if(Greenfoot.mouseClicked(PCButton) && AYen >= 2000 && (getObjects(PChips.class).isEmpty())) {AYen -= 2000; addObject(new PChips(), 600, 600);}
        if(Greenfoot.mouseClicked(CCButton) && AYen >= 8000 && (getObjects(CCola.class).isEmpty())) {AYen -= 8000; addObject(new CCola(), 600, 600);}
        if(Greenfoot.mouseClicked(BRAButton) && AYen >= 36000 && (getObjects(BRAnime.class).isEmpty())) {AYen -= 36000; addObject(new BRAnime(), 600, 600);}
        //For updating the Timing stuff
        if ((++frames)%55 == 0) updateGameTimeDisplay();
        if ((--Cframes)%55 == 0) updateCooldownDisplay();
        if (!getObjects(PChips.class).isEmpty() && (--PCBframes)%55 ==0) updatePCBuffTimeDisplay();
        if (!getObjects(CCola.class).isEmpty() && (--CCBframes)%55 ==0) updateCCBuffTimeDisplay();
        if (!getObjects(BRAnime.class).isEmpty() && (--BRABframes)%55 ==0) updateBRABuffTimeDisplay();
        if (Cframes == 0) {Minigame(); Cframes += ((3+Greenfoot.getRandomNumber(5))*55); /*chooses a cooldown time between 3-7 minutes randomly*/}
        if (CCBframes == 0) CCBframes += 3*55;
        if (PCBframes == 0) PCBframes += 3*55;
        if (BRABframes == 0) BRABframes += 3*55;
        // control dragging of PIP objects
        if (Greenfoot.mousePressed(null) && mouseActor == null)
        {
            MouseInfo mouse = Greenfoot.getMouseInfo();
            if (mouse.getActor() == null || mouse.getActor().getClass() != PIP.class) return;
            mouseActor = mouse.getActor();
            mouseOffX = mouseActor.getX()-mouse.getX();
            mouseOffY = mouseActor.getY()-mouse.getY();
            removeObject(mouseActor);
            addObject(mouseActor, mouse.getX()+mouseOffX, mouse.getY()+mouseOffY);
        }
        if (mouseActor != null && Greenfoot.mouseDragged(mouseActor))
        {
            MouseInfo mouse = Greenfoot.getMouseInfo();
            mouseActor.setLocation(mouse.getX()+mouseOffX, mouse.getY()+mouseOffY);
        }
        if (mouseActor != null && Greenfoot.mouseClicked(mouseActor)) mouseActor = null;
        //for removing ended Minigames
        if (pip != null && pip.getWorld() == this && minor.getObjects(null).isEmpty()) removeObject(pip);
    }
    //For Yen Display stuff
    public int getAccumulatedYen() {return DYen;}
    public void adjustYen(float adjustment)
    {
        AYen += adjustment;
        DYen = (int) AYen;
        YenDisplay.setImage(new GreenfootImage("Yen: "+DYen+"¥", 20, new Color(113, 50, 255, 255), new Color(0, 0, 0, 0)));
    }
    
    //Time Displays
    //Potato Chip Buff
    private void updatePCBuffTimeDisplay()
    {
        int Time = PCBframes/55;
        String minutes = "0"+(Time/60)/* string remaining minutes*/, seconds = "0"+(Time%60)/* string remaining seconds*/, mins = minutes.substring(minutes.length()-2)/* minutes output string*/, secs = seconds.substring(seconds.length()-2)/* seconds output string*/, TimeFormat = "Buff: "+mins+":"+secs;// Preview: Buff: 03:27
        PCBuffTimeDisplay.setImage(new GreenfootImage(TimeFormat, 20, new Color(100, 255, 100, 40) , new Color(0, 0, 0, 0)));
    }
    //Coca Cola Buff
    private void updateCCBuffTimeDisplay()
    {
        int Time = CCBframes/55;
        String minutes = "0"+(Time/60)/* string remaining minutes*/, seconds = "0"+(Time%60)/* string remaining seconds*/, mins = minutes.substring(minutes.length()-2)/* minutes output string*/, secs = seconds.substring(seconds.length()-2)/* seconds output string*/, TimeFormat = "Buff: "+mins+":"+secs;// Preview: Buff: 01:19
        CCBuffTimeDisplay.setImage(new GreenfootImage(TimeFormat, 20, new Color(100, 255, 100, 40) , new Color(0, 0, 0, 0)));
    }
    //Blu-Ray Anime Buff
    private void updateBRABuffTimeDisplay()
    {
        int Time = BRABframes/55;
        String minutes = "0"+(Time/60)/* string remaining minutes*/, seconds = "0"+(Time%60)/* string remaining seconds*/, mins = minutes.substring(minutes.length()-2)/* minutes output string*/, secs = seconds.substring(seconds.length()-2)/* seconds output string*/, TimeFormat = "Buff: "+mins+":"+secs;// Preview: Buff: 04:54
        BRABuffTimeDisplay.setImage(new GreenfootImage(TimeFormat, 20, new Color(100, 255, 100, 40) , new Color(0, 0, 0, 0)));
    }
    //Game
    private void updateGameTimeDisplay()
    {
        int Time = frames/55/* total seconds*/, TotalMinutes = Time/60; // total minutes
        String hours = "0"+(TotalMinutes/60)/* string total hours*/, minutes = "0"+(TotalMinutes%60)/* string remaining minutes*/, seconds = "0"+(Time%60)/* string remaining seconds*/, hrs = hours.substring(hours.length()-2)/* hour output string*/, mins = minutes.substring(minutes.length()-2)/* minutes output string*/, secs = seconds.substring(seconds.length()-2)/* seconds output string*/, TimeFormat = "Time: "+hrs+"hrs "+mins+"mins "+secs+"secs"; //Preview: Time: 52462hrs 28mins 16secs
        GameTimeDisplay.setImage(new GreenfootImage(TimeFormat, 20, new Color(113, 0, 255, 255), new Color(0, 0, 0, 0)));
    }
    
    //Minigame stuff
    //For timing the appearance of the Minigame
    private void updateCooldownDisplay()
    {
        int Time = Cframes/55;
        String minutes = "0"+(Time/60)/* string remaining minutes*/, seconds = "0"+(Time%60)/* string remaining seconds*/, mins = minutes.substring(minutes.length()-2)/* minutes output string*/, secs = seconds.substring(seconds.length()-2)/* seconds output string*/, TimeFormat = "Minigame countdown: "+mins+"mins "+secs+"secs"; //Preview: Minigame countdown: 56mins 27secs
        Cooldown.setImage(new GreenfootImage(TimeFormat, 20, new Color(113, 25, 255, 255), new Color(0, 0, 0, 0)));
    }
    //For choosing and calling out the Minigame
    private void Minigame()
    {
        if (pip != null && pip.getWorld() != null) return; // will not add new pip if one is already in world
        minor = null;
        switch (Greenfoot.getRandomNumber(4))
        {
            case 0: if (!getObjects(Umaru.class).isEmpty()) minor = new Minigame1(); break;
            case 1: if (!getObjects(Bomba.class).isEmpty()) minor = new Minigame2(); break;
            case 2: if (!getObjects(Ebina.class).isEmpty()) minor = new Minigame3(); break;
            case 3: if (!getObjects(Alex.class).isEmpty()) minor = new Minigame4(); break;
        }
        if (minor != null)
        {
            pip = new PIP(minor, new Class[] {});
            pip.setActiveState(true);
            addObject(pip, 690, 110);
        }
    }
    private void setMenuUpgrDisplay()
    {
        if (SelectedCharacter != null)CharacterYenIncomeDisplay.setImage(new GreenfootImage(SelectedCharacter+"¥"+CharacterYenIncome, 20, new Color(255, 255, 255, 255), new Color(0, 0, 0, 0)));
        else CharacterYenIncomeDisplay.setImage(new GreenfootImage("Click on a Character to see the stats", 20, new Color(100, 255, 100, 40) , new Color(0, 0, 0, 0)));
        if(Greenfoot.mouseClicked(MKButton))
        {
            SelectedCharacter2 = "MgrKanau";
            if(getObjects(MgrKanau.class).isEmpty())
            {
                if(AYen >= 100)
                {
                    AYen -= 100; MKLevel  += 1;
                    addObject(MgrKanau, 600, 600); SelectedCharacter = "Manager Kanau Income: ";
                }else {SelectedCharacter = "Price: "; CharacterYenIncome = 100;}
            }else {SelectedCharacter = "Manager Kanau Income: "; CharacterYenIncome = ((MgrKanau) MgrKanau).YenPerMin;}
        }
        if(Greenfoot.mouseClicked(HButton))
        {
            SelectedCharacter2 = "Hikari";
            if(getObjects(Hikari.class).isEmpty())  
            {
                if(AYen >= 200)
                {
                    AYen -= 200; HLevel  += 1;
                    addObject(Hikari, 600, 600); SelectedCharacter = "Hikari Income: ";
                }else{SelectedCharacter = "Price: "; CharacterYenIncome = 200;}
            }else{SelectedCharacter = "Hikari Income: "; CharacterYenIncome = ((Hikari) Hikari).YenPerMin;}
        }
        if(Greenfoot.mouseClicked(AButton))
        {
            SelectedCharacter2 = "Alex";
            if(getObjects(Alex.class).isEmpty())
            {
                if(AYen >= 400)
                {
                    AYen -= 400; ALevel  += 1;
                    addObject(Alex, 600, 600); SelectedCharacter = "Alex Income: ";
                }else {SelectedCharacter = "Price: "; CharacterYenIncome = 400;}
            }else {SelectedCharacter = "Alex Income: "; CharacterYenIncome = ((Alex) Alex).YenPerMin;}
        }
        if(Greenfoot.mouseClicked(SButton))
        {
            SelectedCharacter2 = "Sylphynford";
            if(getObjects(Sylphynford.class).isEmpty())
            {
                if(AYen >= 800)
                {
                    AYen -= 800; SLevel  += 1;
                    addObject(Sylphynford, 600, 600); SelectedCharacter = "Sylphynford Income: ";
                }else {SelectedCharacter = "Price: "; CharacterYenIncome = 800;}
            }else {SelectedCharacter = "Sylphynford Income: "; CharacterYenIncome = ((Sylphynford) Sylphynford).YenPerMin;}
        }
        if(Greenfoot.mouseClicked(BButton))
        {
            SelectedCharacter2 = "Bomba";
            if(getObjects(Bomba.class).isEmpty())
            {
                if(AYen >= 1600)
                {
                    AYen -= 1600; BLevel  += 1;
                    addObject(Bomba, 600, 600); SelectedCharacter = "Bomba Income: ";
                }else {SelectedCharacter = "Price: "; CharacterYenIncome = 1600;}
            }else {SelectedCharacter = "Bomba Income: "; CharacterYenIncome = ((Bomba) Bomba).YenPerMin;}
        }
        if(Greenfoot.mouseClicked(KButton))
        {
            SelectedCharacter2 = "Kirie";
            if(getObjects(Kirie.class).isEmpty())
            {
                if(AYen >= 3200)
                {
                    AYen -= 3200; KLevel  += 1;
                    addObject(Kirie, 600, 600); SelectedCharacter = "Kirie Income: ";
                }else {SelectedCharacter = "Price: "; CharacterYenIncome = 3200;}
            }else {SelectedCharacter = "Kirie Income: "; CharacterYenIncome = ((Kirie) Kirie).YenPerMin;}
        }
        if(Greenfoot.mouseClicked(EButton))
        {
            SelectedCharacter2 = "Ebina";
            if(getObjects(Ebina.class).isEmpty())
            {
                if(AYen >= 6400)
                {
                    AYen -= 6400; ELevel  += 1;
                    addObject(Ebina, 600, 600); SelectedCharacter = "Ebina Income: ";
                }else {SelectedCharacter = "Price: "; CharacterYenIncome = 6400;}
            }else {SelectedCharacter = "Ebina Income: "; CharacterYenIncome = ((Ebina) Ebina).YenPerMin;}
        }
        if(Greenfoot.mouseClicked(UButton))
        {
            SelectedCharacter2 = "Umaru";
            if(getObjects(Umaru.class).isEmpty())
            {
                if(AYen >= 12800)
                {
                    AYen -= 12800; ULevel  += 1;
                    addObject(Umaru, 600, 600); SelectedCharacter = "Umaru Income: ";
                }else {SelectedCharacter = "Price: "; CharacterYenIncome = 12800;}
            }else {SelectedCharacter = "Umaru Income: "; CharacterYenIncome = ((Umaru) Umaru).YenPerMin;}
        }
        if(Greenfoot.mouseClicked(UpgradeButton1))
        {
            if(SelectedCharacter2 == "MgrKanau")
            {
                if(!getObjects(MgrKanau.class).isEmpty())
                {
                    if(AYen >= (MKLevel*10)) {AYen -= MKLevel*10; MKLevel += 1; SelectedCharacter = "Manager Kanau Income: ";}
                    else {SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = MKLevel*10;}
                }
                else
                {SelectedCharacter = "Pls buy Manager Kanau 1st. Price: "; CharacterYenIncome = 100;}
            }
            else if(SelectedCharacter2 == "Hikari")
            {
                if(!getObjects(Hikari.class).isEmpty())
                {
                    if(AYen >= (HLevel*20)) {AYen -= HLevel*20; HLevel += 1; SelectedCharacter = "Hikari Income: ";}
                    else {SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = HLevel*20;}
                }
                else {SelectedCharacter = "Pls buy Hikari 1st. Price: "; CharacterYenIncome = 200;}
            }
            else if(SelectedCharacter2 == "Alex")
            {
                if(!getObjects(Alex.class).isEmpty())
                {
                    if(AYen >= (ALevel*40)) {AYen -= ALevel*40; ALevel += 1; SelectedCharacter = "Alex Income: ";}
                    else {SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = ALevel*40;}
                }
                else {SelectedCharacter = "Pls buy Alex 1st. Price: "; CharacterYenIncome = 400;}
            }
            else if(SelectedCharacter2 == "Sylphynford")
            {
                if(!getObjects(Sylphynford.class).isEmpty())
                {
                    if(AYen >= (SLevel*80)) {AYen -= SLevel*80; SLevel += 1; SelectedCharacter = "Sylphynford Income: ";}
                    else {SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = SLevel*80;}
                }
                else {SelectedCharacter = "Pls buy Sylphynford 1st. Price: "; CharacterYenIncome = 800;}
            }
            else if(SelectedCharacter2 == "Bomba")
            {
                if(!getObjects(Bomba.class).isEmpty())
                {
                    if(AYen >= (BLevel*160)) {AYen -= BLevel*160; BLevel += 1; SelectedCharacter = "Bomba Income: ";}
                    else {SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = BLevel*160;}
                }
                else {SelectedCharacter = "Pls buy Bomba 1st. Price: "; CharacterYenIncome = 1600;}
            }
            else if(SelectedCharacter2 == "Kirie")
            {
                if(!getObjects(Kirie.class).isEmpty())
                {
                    if(AYen >= (KLevel*320)) {AYen -= KLevel*320; KLevel += 1; SelectedCharacter = "Kirie Income: ";}
                    else {SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = KLevel*320;}
                }
                else {SelectedCharacter = "Pls buy Kirie 1st. Price: "; CharacterYenIncome = 3200;}
            }
            else if(SelectedCharacter2 == "Ebina")
            {
                if(!getObjects(Ebina.class).isEmpty())
                {
                    if(AYen >= (ELevel*640)) {AYen -= ELevel*640; ELevel += 1; SelectedCharacter = "Ebina Income: ";}
                    else {SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = ELevel*640;}
                }
                else {SelectedCharacter = "Pls buy Ebina 1st. Price: "; CharacterYenIncome = 6400;}
            }
            else if(SelectedCharacter2 == "Umaru")
            {
                if(!getObjects(Umaru.class).isEmpty())
                {
                    if(AYen >= (ULevel*1280)) {AYen -= ULevel*1280; ULevel += 1; SelectedCharacter = "Umaru Income: ";}
                    else {SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = ULevel*1280;}
                }
                else {SelectedCharacter = "Pls buy Umaru 1st. Price: "; CharacterYenIncome = 12800;}
            }
        }
        if(Greenfoot.mouseClicked(UpgradeButton5))
        {
            if(SelectedCharacter2 == "MgrKanau")
            {
                if(!getObjects(MgrKanau.class).isEmpty())
                {
                    for(int i = 0; i<5; i++)
                    {
                        totalYen += (MKLevel+(i+1))*10;
                    }
                    if(AYen >= totalYen) {AYen -= totalYen; MKLevel += 5; SelectedCharacter = "Manager Kanau Income: ";}
                    else {SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = totalYen;}
                }
                else
                {SelectedCharacter = "Pls buy Manager Kanau 1st. Price: "; CharacterYenIncome = 100;}
            }
            else if(SelectedCharacter2 == "Hikari")
            {
                if(!getObjects(Hikari.class).isEmpty())
                {
                    for(int i = 0; i<5; i++)
                    {
                        totalYen += (HLevel+(i+1))*20;
                    }
                    if(AYen >= totalYen) {AYen -= totalYen; HLevel += 5; SelectedCharacter = "Hikari Income: ";}
                    else {SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = totalYen;}
                }
                else {SelectedCharacter = "Pls buy Hikari 1st. Price: "; CharacterYenIncome = 200;}
            }
            else if(SelectedCharacter2 == "Alex")
            {
                if(!getObjects(Alex.class).isEmpty())
                {
                    for(int i = 0; i<5; i++)
                    {
                        totalYen += (ALevel+(i+1))*40;
                    }
                    if(AYen >= totalYen) {AYen -= totalYen; ALevel += 5; SelectedCharacter = "Alex Income: ";}
                    else {SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = totalYen;}
                }
                else {SelectedCharacter = "Pls buy Alex 1st. Price: "; CharacterYenIncome = 400;}
            }
            else if(SelectedCharacter2 == "Sylphynford")
            {
                if(!getObjects(Sylphynford.class).isEmpty())
                {
                    for(int i = 0; i<5; i++)
                    {
                        totalYen += (SLevel+(i+1))*80;
                    }
                    if(AYen >= totalYen) {AYen -= totalYen; SLevel += 5; SelectedCharacter = "Sylphynford Income: ";}
                    else {SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = totalYen;}
                }
                else {SelectedCharacter = "Pls buy Sylphynford 1st. Price: "; CharacterYenIncome = 800;}
            }
            else if(SelectedCharacter2 == "Bomba")
            {
                if(!getObjects(Bomba.class).isEmpty())
                {
                    for(int i = 0; i<5; i++)
                    {
                        totalYen += (BLevel+(i+1))*160;
                    }
                    if(AYen >= totalYen) {AYen -= totalYen; BLevel += 5; SelectedCharacter = "Bomba Income: ";}
                    else {SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = totalYen;}
                }
                else {SelectedCharacter = "Pls buy Bomba 1st. Price: "; CharacterYenIncome = 1600;}
            }
            else if(SelectedCharacter2 == "Kirie")
            {
                if(!getObjects(Kirie.class).isEmpty())
                {
                    for(int i = 0; i<5; i++)
                    {
                        totalYen += (KLevel+(i+1))*320;
                    }
                    if(AYen >= totalYen) {AYen -= totalYen; KLevel += 5; SelectedCharacter = "Kirie Income: ";}
                    else {SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = totalYen;}
                }
                else {SelectedCharacter = "Pls buy Kirie 1st. Price: "; CharacterYenIncome = 3200;}
            }
            else if(SelectedCharacter2 == "Ebina")
            {
                if(!getObjects(Ebina.class).isEmpty())
                {
                    for(int i = 0; i<5; i++)
                    {
                        totalYen += (ELevel+(i+1))*640;
                    }
                    if(AYen >= totalYen) {AYen -= totalYen; ELevel += 5; SelectedCharacter = "Ebina Income: ";}
                    else {SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = totalYen;}
                }
                else {SelectedCharacter = "Pls buy Ebina 1st. Price: "; CharacterYenIncome = 6400;}
            }
            else if(SelectedCharacter2 == "Umaru")
            {
                if(!getObjects(Umaru.class).isEmpty())
                {
                    for(int i = 0; i<5; i++)
                    {
                        totalYen += (ULevel+(i+1))*1280;
                    }
                    if(AYen >= totalYen) {AYen -= totalYen; ULevel += 5; SelectedCharacter = "Umaru Income: ";}
                    else {SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = totalYen;}
                }
                else {SelectedCharacter = "Pls buy Umaru 1st. Price: "; CharacterYenIncome = 12800;}
            }
        }
        if(Greenfoot.mouseClicked(UpgradeButton10))
        {
            if(SelectedCharacter2 == "MgrKanau")
            {
                if(!getObjects(MgrKanau.class).isEmpty())
                {
                    for(int i = 0; i<10; i++)
                    {
                        totalYen += (MKLevel+(i+1))*10;
                    }
                    if(AYen >= totalYen) {AYen -= totalYen; MKLevel += 10; SelectedCharacter = "Manager Kanau Income: ";}
                    else {SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = totalYen;}
                }
                else
                {SelectedCharacter = "Pls buy Manager Kanau 1st. Price: "; CharacterYenIncome = 100;}
            }
            else if(SelectedCharacter2 == "Hikari")
            {
                if(!getObjects(Hikari.class).isEmpty())
                {
                    for(int i = 0; i<10; i++)
                    {
                        totalYen += (HLevel+(i+1))*20;
                    }
                    if(AYen >= totalYen) {AYen -= totalYen; HLevel += 10; SelectedCharacter = "Hikari Income: ";}
                    else {SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = totalYen;}
                }
                else {SelectedCharacter = "Pls buy Hikari 1st. Price: "; CharacterYenIncome = 200;}
            }
            else if(SelectedCharacter2 == "Alex")
            {
                if(!getObjects(Alex.class).isEmpty())
                {
                    for(int i = 0; i<10; i++)
                    {
                        totalYen += (ALevel+(i+1))*40;
                    }
                    if(AYen >= totalYen) {AYen -= totalYen; ALevel += 10; SelectedCharacter = "Alex Income: ";}
                    else {SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = totalYen;}
                }
                else {SelectedCharacter = "Pls buy Alex 1st. Price: "; CharacterYenIncome = 400;}
            }
            else if(SelectedCharacter2 == "Sylphynford")
            {
                if(!getObjects(Sylphynford.class).isEmpty())
                {
                    for(int i = 0; i<10; i++)
                    {
                        totalYen += (SLevel+(i+1))*80;
                    }
                    if(AYen >= totalYen) {AYen -= totalYen; SLevel += 10; SelectedCharacter = "Sylphynford Income: ";}
                    else {SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = totalYen;}
                }
                else {SelectedCharacter = "Pls buy Sylphynford 1st. Price: "; CharacterYenIncome = 800;}
            }
            else if(SelectedCharacter2 == "Bomba")
            {
                if(!getObjects(Bomba.class).isEmpty())
                {
                    for(int i = 0; i<10; i++)
                    {
                        totalYen += (BLevel+(i+1))*160;
                    }
                    if(AYen >= totalYen) {AYen -= totalYen; BLevel += 10; SelectedCharacter = "Bomba Income: ";}
                    else {SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = totalYen;}
                }
                else {SelectedCharacter = "Pls buy Bomba 1st. Price: "; CharacterYenIncome = 1600;}
            }
            else if(SelectedCharacter2 == "Kirie")
            {
                if(!getObjects(Kirie.class).isEmpty())
                {
                    for(int i = 0; i<10; i++)
                    {
                        totalYen += (KLevel+(i+1))*320;
                    }
                    if(AYen >= totalYen) {AYen -= totalYen; KLevel += 10; SelectedCharacter = "Kirie Income: ";}
                    else {SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = totalYen;}
                }
                else {SelectedCharacter = "Pls buy Kirie 1st. Price: "; CharacterYenIncome = 3200;}
            }
            else if(SelectedCharacter2 == "Ebina")
            {
                if(!getObjects(Ebina.class).isEmpty())
                {
                    for(int i = 0; i<10; i++)
                    {
                        totalYen += (ELevel+(i+1))*640;
                    }
                    if(AYen >= totalYen) {AYen -= totalYen; ELevel += 10; SelectedCharacter = "Ebina Income: ";}
                    else {SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = totalYen;}
                }
                else {SelectedCharacter = "Pls buy Ebina 1st. Price: "; CharacterYenIncome = 6400;}
            }
            else if(SelectedCharacter2 == "Umaru")
            {
                if(!getObjects(Umaru.class).isEmpty())
                {
                    for(int i = 0; i<10; i++)
                    {
                        totalYen += (ULevel+(i+1))*1280;
                    }
                    if(AYen >= totalYen) {AYen -= totalYen; ULevel += 10; SelectedCharacter = "Umaru Income: ";}
                    else {SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = totalYen;}
                }
                else {SelectedCharacter = "Pls buy Umaru 1st. Price: "; CharacterYenIncome = 12800;}
            }
        }
    }
}
The Minigame World Code:
import greenfoot.*;
public class Minigame4 extends World
{
    public ShortGround shortground = new ShortGround(), shortground2 = new ShortGround(), shortground3 = new ShortGround(), shortground4 = new ShortGround(), shortground5 = new ShortGround(), shortground6 = new ShortGround(), shortground7 = new ShortGround(), shortground8 = new ShortGround(), shortground9 = new ShortGround(), shortground10 = new ShortGround(), shortground11 = new ShortGround(), shortground12 = new ShortGround(), shortground13 = new ShortGround(), shortground14 = new ShortGround(), shortground15 = new ShortGround(), shortground16 = new ShortGround(), shortground17 = new ShortGround(), shortground18 = new ShortGround();;
    public ReturnToStart returntostart = new ReturnToStart(), returntostart2 = new ReturnToStart(), returntostart3 = new ReturnToStart(), returntostart4 = new ReturnToStart(), returntostart5 = new ReturnToStart(), returntostart6 = new ReturnToStart(), returntostart7 = new ReturnToStart(), returntostart8 = new ReturnToStart();
    public Ground ground = new Ground(), ground2 = new Ground(), ground3 = new Ground(), ground4 = new Ground(), ground5 = new Ground(), ground6 = new Ground(), ground7 = new Ground(), ground8 = new Ground(), ground9 = new Ground(), ground10 = new Ground(), ground11 = new Ground(), ground12 = new Ground();;
    public Minigame4EndPoint EndPoint = new Minigame4EndPoint(); 
    public MiniUmaru HamsterUmaru = new MiniUmaru();
    public SimpleActor DownArrow = new SimpleActor(), UpArrow = new SimpleActor(), RightArrow = new SimpleActor(), LeftArrow = new SimpleActor(), DownRightArrow = new SimpleActor(), DownLeftArrow = new SimpleActor(), UpRightArrow = new SimpleActor(), UpLeftArrow = new SimpleActor(), DownArrow2 = new SimpleActor(), UpArrow2 = new SimpleActor(), RightArrow2 = new SimpleActor(), LeftArrow2 = new SimpleActor(), DownRightArrow2 = new SimpleActor(), DownLeftArrow2 = new SimpleActor(), UpRightArrow2 = new SimpleActor(), UpLeftArrow2 = new SimpleActor(), DownArrow3 = new SimpleActor(), UpArrow3 = new SimpleActor(), RightArrow3 = new SimpleActor(), LeftArrow3 = new SimpleActor(), DownRightArrow3 = new SimpleActor(), DownLeftArrow3 = new SimpleActor(), UpRightArrow3 = new SimpleActor(), UpLeftArrow3 = new SimpleActor(), Nope = new SimpleActor();
    public Actor MiniPChips = new MiniPChips(), MiniCCola = new MiniCCola(), MiniBRAnime = new MiniBRAnime();
    int SX = 0, SY = 0;
    public Minigame4()
    {
        super(1200, 675, 1);
        GreenfootImage bg = new GreenfootImage("sky.jpg");
        bg.scale(2000, 800);
        setBackground(bg);
        switch(Greenfoot.getRandomNumber(4))
        {
            case 0:terrain1();HamsterUmaru.TerrainUsed = "Terrain 1"; break;
            case 1:terrain2();HamsterUmaru.TerrainUsed = "Terrain 2"; break;
            case 2:terrain3();HamsterUmaru.TerrainUsed = "Terrain 3"; break;
            case 3:terrain4();HamsterUmaru.TerrainUsed = "Terrain 4"; break;
        }
        prepare();
        UpArrow.setImage("WingedArrowUp.png"); UpArrow2.setImage("WingedArrowUp.png"); UpArrow3.setImage("WingedArrowUp.png"); DownArrow.setImage("WingedArrowDown.png"); DownArrow2.setImage("WingedArrowDown.png"); DownArrow3.setImage("WingedArrowDown.png"); LeftArrow.setImage("WingedArrowLeft.png"); LeftArrow2.setImage("WingedArrowLeft.png"); LeftArrow3.setImage("WingedArrowLeft.png"); RightArrow.setImage("WingedArrowRight.png"); RightArrow2.setImage("WingedArrowRight.png"); RightArrow3.setImage("WingedArrowRight.png"); UpLeftArrow.setImage("WingedArrowUpLeft.png"); UpLeftArrow2.setImage("WingedArrowUpLeft.png"); UpLeftArrow3.setImage("WingedArrowUpLeft.png"); UpRightArrow.setImage("WingedArrowUpRight.png"); UpRightArrow2.setImage("WingedArrowUpRight.png"); UpRightArrow3.setImage("WingedArrowUpRight.png"); DownLeftArrow.setImage("WingedArrowDownLeft.png"); DownLeftArrow2.setImage("WingedArrowDownLeft.png"); DownLeftArrow3.setImage("WingedArrowDownLeft.png"); DownRightArrow.setImage("WingedArrowDownRight.png"); DownRightArrow2.setImage("WingedArrowDownRight.png"); DownRightArrow3.setImage("WingedArrowDownRight.png");
        UpArrow.getImage().scale(120,120); UpArrow2.getImage().scale(120,120); UpArrow3.getImage().scale(120,120); DownArrow.getImage().scale(120,120); DownArrow2.getImage().scale(120,120); DownArrow3.getImage().scale(120,120); LeftArrow.getImage().scale(120,120); LeftArrow2.getImage().scale(120,120); LeftArrow3.getImage().scale(120,120); RightArrow.getImage().scale(120,120); RightArrow2.getImage().scale(120,120); RightArrow3.getImage().scale(120,120); UpLeftArrow.getImage().scale(120,120); UpLeftArrow2.getImage().scale(120,120); UpLeftArrow3.getImage().scale(120,120); UpRightArrow.getImage().scale(120,120); UpRightArrow2.getImage().scale(120,120); UpRightArrow3.getImage().scale(120,120); DownLeftArrow.getImage().scale(120,120); DownLeftArrow2.getImage().scale(120,120); DownLeftArrow3.getImage().scale(120,120); DownRightArrow.getImage().scale(120,120); DownRightArrow2.getImage().scale(120,120); DownRightArrow3.getImage().scale(120,120);
        EndPoint.getImage().scale(60,60);
        MiniBRAnime.getImage().scale(60,60);
        MiniPChips.getImage().scale(60,60);
        MiniCCola.getImage().scale(60,60);
    }
    public void act()
    {
    }
    private void terrain1()
    {
        HamsterUmaru.setImage("UmaruHamsterRight.png"); HamsterUmaru.getImage().scale(60,60);
        addObject(HamsterUmaru,99,487);
        addObject(ground,85,675);
        addObject(ground2,245,675);
        addObject(ground3,405,675);
        addObject(ground4,565,675);
        addObject(ground5,725,675);
        addObject(ground6,885,675);
        addObject(ground7,1045,675);
        addObject(ground8,1205,675);
        addObject(ground9,102,549);
        addObject(ground10,701,254);
        addObject(shortground,323,457);
        addObject(shortground2,179,367);
        addObject(shortground3,48,289);
        addObject(shortground4,359,254);
        addObject(shortground5,509,321);
        addObject(shortground6,196,193);
        addObject(shortground7,887,190);
        addObject(shortground8,1034,140);
        addObject(shortground9,1135,244);
        addObject(shortground10,1004,459);
        addObject(shortground11,849,471);
        addObject(shortground12,1170,469);
        addObject(shortground13,849,471);
        addObject(shortground14,677,469);
        addObject(returntostart,612,444);
        addObject(returntostart2,612,369);
        addObject(returntostart3,612,294);
        addObject(returntostart4,777,267); returntostart4.turn(90);
        addObject(returntostart5,703,267); returntostart5.turn(90);
        addObject(returntostart6,860,223); returntostart6.turn(90);
        addObject(returntostart7,935,223); returntostart7.turn(90);
        addObject(returntostart8,1180,267); returntostart8.turn(90);
        addObject(MiniPChips,1700,426);
    }

    private void terrain2()
    {
        HamsterUmaru.setImage("UmaruHamsterLeft.png"); HamsterUmaru.getImage().scale(60,60);
        addObject(HamsterUmaru,1084,493);
        addObject(ground,85,675);
        addObject(ground2,245,675);
        addObject(ground3,405,675);
        addObject(ground4,565,675);
        addObject(ground5,725,675);
        addObject(ground6,885,675);
        addObject(ground7,1045,675);
        addObject(ground8,1205,675);
        addObject(ground9,1083,551);
        addObject(ground10,447,515);
        addObject(ground11,431,157);
        addObject(ground12,865,109);
        addObject(shortground,883,527);
        addObject(shortground2,737,445);
        addObject(shortground3,591,356);
        addObject(shortground4,236,501);
        addObject(shortground5,115,398);
        addObject(shortground6,239,295);
        addObject(shortground7,74,212);
        addObject(shortground8,230,136);
        addObject(shortground9,647,134);
        addObject(shortground10,1088,137);
        addObject(shortground11,1162,296);
        addObject(shortground12,975,351);
        addObject(shortground13,860,260);
        addObject(shortground14,80,38);
        addObject(returntostart,381,541); returntostart.turn(90);
        addObject(returntostart2,456,541); returntostart2.turn(90);
        addObject(returntostart3,531,541); returntostart3.turn(90);
        addObject(returntostart4,980,151); returntostart4.turn(90);
        addObject(returntostart5,774,140);
        addObject(UpArrow,200,430);
        addObject(RightArrow,290,56);
        addObject(RightArrow2,735,75);
        addObject(DownArrow,1155,75);
        addObject(DownArrow2,520,280);
        addObject(UpLeftArrow,975,460);
        addObject(UpLeftArrow2,980,230);
        addObject(EndPoint,815,215);
        addObject(MiniBRAnime, 42,0);
    }

    private void terrain3()
    {
        HamsterUmaru.setImage("UmaruHamsterRight.png"); HamsterUmaru.getImage().scale(60,60);
        addObject(HamsterUmaru,104,527);
        addObject(ground,85,675);
        addObject(ground2,245,675);
        addObject(ground3,405,675);
        addObject(ground4,565,675);
        addObject(ground5,725,675);
        addObject(ground6,885,675);
        addObject(ground7,1045,675);
        addObject(ground8,1205,675);
        addObject(shortground,108,579);
        addObject(shortground2,60,303);
        addObject(shortground3,264,490);
        addObject(shortground4,155,400);
        addObject(shortground5,223,230);
        addObject(shortground6,120,115);
        addObject(shortground7,285,60);
        addObject(shortground8,429,506);
        addObject(shortground9,534,380);
        addObject(shortground10,809,353);
        addObject(shortground11,925,476);
        addObject(shortground12,1034,271);
        addObject(shortground13,924,147);
        addObject(shortground14,1086,85);
        addObject(shortground15,659,406);
        addObject(shortground16,1090,403);
        addObject(shortground17,775,80);
        addObject(shortground18,615,80);
        addObject(returntostart,347,419); returntostart.getImage().scale(8,450);
        addObject(returntostart2,765,518); returntostart2.getImage().scale(8,250);
        addObject(returntostart3,527,36);
        addObject(returntostart4,527,111);
        addObject(returntostart5,785,153); returntostart5.turn(90);
        addObject(returntostart6,710,153); returntostart6.turn(90);
        addObject(returntostart7,635,153); returntostart7.turn(90);
        addObject(returntostart8,560,153); returntostart8.turn(90);
        addObject(EndPoint,1124,46); EndPoint.setImage("GoalFlagRight.png");
        addObject(UpArrow,197,320);
        addObject(UpArrow2,1018,412);
        addObject(RightArrow,710,298);
        addObject(RightArrow2,995,37);
        addObject(DownArrow,437,68);
        addObject(MiniCCola,582,36);
    }
    public void terrain4()
    {
        HamsterUmaru.setImage("UmaruHamsterRight.png"); HamsterUmaru.getImage().scale(60,60);
        Ground ground9 = new Ground();
        addObject(HamsterUmaru,97,502);
        addObject(ground,85,675);
        addObject(ground2,245,675);
        addObject(ground3,405,675);
        addObject(ground4,565,675);
        addObject(ground5,725,675);
        addObject(ground6,885,675);
        addObject(ground7,1045,675);
        addObject(ground8,1205,675);
        addObject(ground9,93,569);
        addObject(shortground,284,463);
        addObject(shortground2,180,388);        
        addObject(shortground3,71,325);        
        addObject(shortground4,179,235);        
        addObject(shortground5,302,217);       
        addObject(shortground6,433,164);       
        addObject(shortground7,570,164);
        addObject(shortground8,711,164);
        addObject(shortground9,841,164);
        addObject(shortground10,1023,455);
        addObject(shortground11,903,507);
        addObject(shortground12,761,445);
        addObject(shortground13,595,493);
        addObject(shortground14,990,142);
        addObject(shortground15,1160,100);
        addObject(returntostart,500,200); returntostart.turn(90);
        addObject(returntostart2,903,299); returntostart2.turn(90);
        addObject(returntostart3,640,200); returntostart3.turn(90);
        addObject(returntostart4,780,200); returntostart4.turn(90);
        addObject(UpLeftArrow,348,379);
        addObject(RightArrow,646,56);
        addObject(DownArrow,1108,155);
        addObject(LeftArrow,1101,387);
        addObject(EndPoint,557,454);
        addObject(MiniPChips, 1198,56);
    }
    public void prepare()
    {
    }
}
danpost danpost

2018/5/15

#
Okay -- I get that UmaruHamster (a.k.a. HamsterUmaru in Minigame4 world), controlled by player, is to have MyWorld add buffs into it. Unclear, however, was how the buffs were "activated" (from an actor in MyWorld or from an actor in the PIP actor world). Neither the UmaruHamster actor nor its world (the Minigame4 object) "know" of the MyWorld object or the PIP object that contains the Minigame4 world. However, the MyWorld object does "know" of the (minor) world contained by the PIP object. The act method of MyWorld can therefore check for some condition in the minor world to act upon. So, the UmaruHamster object can do something in its world to "inform" the MyWorld object what to do -- even if it is adding a new type object that is invisible to its world that contains the instructions and objects for the MyWorld object to work with. The MyWorld object can remove the object from the minor world once found and acted upon.
Lavenger Lavenger

2018/5/15

#
danpost wrote...
Okay -- I get that UmaruHamster (a.k.a. HamsterUmaru in Minigame4 world), controlled by player, is to have MyWorld add buffs into it. Unclear, however, was how the buffs were "activated" (from an actor in MyWorld or from an actor in the PIP actor world).
When the player gets the "buff object" in the PIP world, UmaruHamster gains a point according to what object the player picked up(if the player picks up one CCola, +1 CCola Score ect). when the player reaches the goal, all actors will be cleared thus closing the PIP. but in that process, the score would reset and add an actor to MyWorld according to what score the player has(add CCola actor class to Myworld if UmaruHamster has a score on CCola before the PIP is closed). when CCola/Pchips/BRAnime is in the world, the Taihei class(the class the player uses to press space to gain money) would change how the player gains Yen thus activating the buff.
danpost wrote...
Neither the UmaruHamster actor nor its world (the Minigame4 object) "know" of the MyWorld object or the PIP object that contains the Minigame4 world. However, the MyWorld object does "know" of the (minor) world contained by the PIP object. The act method of MyWorld can therefore check for some condition in the minor world to act upon. So, the UmaruHamster object can do something in its world to "inform" the MyWorld object what to do -- even if it is adding a new type object that is invisible to its world that contains the instructions and objects for the MyWorld object to work with. The MyWorld object can remove the object from the minor world once found and acted upon.
So basically all i have to do is do the buff stuffs in the MyWorld and not inside of the actor inside of the PIP since i can't reference MyWorld to the UmaruHamster in the PIP?
danpost danpost

2018/5/15

#
Lavenger wrote...
So basically all i have to do is "activate" the buffs in the MyWorld and not inside of the actor inside of the PIP since i can't reference MyWorld to the UmaruHamster in the PIP?
I did not say you could not ever have the actor in the PIP minor world reference MyWorld -- it is just so far removed from it that it would be easier to have that actor do something that the MyWorld object could recognize as an indication to do something. Since both the actor in the minor world and the MyWorld object "know" that minor world, that would be where the change (indication) should take place. Adding a specific class of Actor object into the minor world would be something the MyWorld object could check on. Let us say you named the class DoMe:
// in MyWorld act method:
if (!minor.getObjects(DoMe.class).isEmpty())
{
    DoMe doMe = (DoMe) minor.getObjects(DoMe.class).get(0);
    minor.removeObject(doMe);
    doMe.run(this); // pseudo-code for doing whatever needs done
}
Lavenger Lavenger

2018/5/15

#
danpost wrote...
Adding a specific class of Actor object into the minor world would be something the MyWorld object could check on. Let us say you named the class DoMe:
// in MyWorld act method:
if (!minor.getObjects(DoMe.class).isEmpty())
{
    DoMe doMe = (DoMe) minor.getObjects(DoMe.class).get(0);
    minor.removeObject(doMe);
    doMe.run(this); // pseudo-code for doing whatever needs done
}
i dont quite get this, i got completely lost at the DoMe part
danpost danpost

2018/5/15

#
Lavenger wrote...
i dont quite get this, i got completely lost at the DoMe part
Did you create a DoMe (as I called it) class? if not, do so; if you did, show what you created.
Lavenger Lavenger

2018/5/16

#
danpost wrote...
Lavenger wrote...
i dont quite get this, i got completely lost at the DoMe part
Did you create a DoMe (as I called it) class? if not, do so; if you did, show what you created.
i did, but it says null pointer exception at line 91
import greenfoot.*;
public class MyWorld extends World
{
    // fields usually (by convention) go first
    
    //For GIF background stuff
    GifImage gifImg = new GifImage("Umaru.gif");
    public int getHeight = 552, getWidth = 1200 ;
    
    //For Timing stuff
    private Actor GameTimeDisplay = new SimpleActor(), Cooldown = new SimpleActor(), PCBuffTimeDisplay = new SimpleActor(), CCBuffTimeDisplay = new SimpleActor(), BRABuffTimeDisplay = new SimpleActor();
    private int frames, Cframes = (3+Greenfoot.getRandomNumber(5))*55, PCBframes = 5*55, CCBframes = 5*55, BRABframes = 5*55;
    
    //For Yen stuff
    public float AYen; //precise
    public int DYen; //rounded
    public Yen YenDisplay = new Yen();
    
    //For Buttons stuff
    public Actor MKButton = new SimpleActor(), HButton = new SimpleActor(), BButton = new SimpleActor(), AButton = new SimpleActor(), SButton = new SimpleActor(), KButton = new SimpleActor(), EButton = new SimpleActor(), UButton = new SimpleActor(), PCButton = new SimpleActor(), CCButton = new SimpleActor(), BRAButton = new SimpleActor(), Buttons[] = {MKButton, HButton, BButton, AButton, SButton, KButton, EButton, UButton, PCButton, CCButton};
    private String ButtonImages[] = {"MKButton", "HButton", "BButton", "AButton", "SButton", "KButton", "EButton", "UButton", "PChips", "CCola"};
    private int ButtonsArraySize = Buttons.length;
    
    //For Menu Upgrade Panel stuff
    private double CharacterYenIncome;
    private int totalYen = 0;
    public int characterValue, MKLevel = 0, HLevel = 0, ALevel = 0, SLevel = 0, BLevel = 0, KLevel = 0, ELevel = 0, ULevel = 0, TLevel = 0;
    private String SelectedCharacter, SelectedCharacter2;
    public Actor MgrKanau = new MgrKanau(), Hikari = new Hikari(), Alex = new Alex(), Sylphynford = new Sylphynford(), Bomba = new Bomba(), Kirie = new Kirie(), Ebina = new Ebina(), Umaru = new Umaru(), UpgradeText = new SimpleActor(), UpgradeButton1 = new SimpleActor(),UpgradeButton5 = new SimpleActor(),UpgradeButton10 = new SimpleActor(), CharacterYenIncomeDisplay = new SimpleActor();
    //For PIP stuff
    PIP pip;
    World minor;
    public Boolean setActiveState = false;
    Actor mouseActor; // holds the actor being dragged
    int mouseOffX, mouseOffY; // holds the offsets of mouse location from center of object being dragged
    
    //For BGMs
    GreenfootSound MGBGM = new GreenfootSound("MainGameBGM.mp3"),M1BGM = new GreenfootSound("Minigame1BGM.mp3"), M2BGM = new GreenfootSound("Minigame2BGM.mp3"), M3BGM = new GreenfootSound("Minigame3BGM.mp3");
    // class constructors usually (by convention) go next
    
    //To construct MyWorld
    public MyWorld()
    {
        //For building the world window size
        super(1400, 675, 1);
        //Play Soundtrack
        MGBGM.playLoop();
        
        //For Yen stuff
        addObject(new Taihei(), 700, 338);
        adjustYen(0); // to initialize image
        addObject(YenDisplay, 1265, 50); // wherever
        
        //For updating the time display
        updateGameTimeDisplay();
        addObject(GameTimeDisplay, 1265, 20);
        
        //For triggering the minigame
        updateCooldownDisplay();
        addObject(Cooldown, 1265, 35);
        
        //For adding in the buttons to add the actors into the world
        for( int i = 0; i < ButtonsArraySize; i++)
        {
            Buttons[i].setImage(ButtonImages[i] + ".png"); Buttons[i].getImage().scale(70, 70); addObject(Buttons[i], 1212, (100 + (i*40)));
            i++;
            Buttons[i].setImage(ButtonImages[i] + ".png"); Buttons[i].getImage().scale(70, 70); addObject(Buttons[i], 1312, (100 + ((i-1)*40)));
        }
        BRAButton.setImage("BRAnime.png"); BRAButton.getImage().scale(70, 70); addObject(BRAButton, 1262, 500);
        //Upgrade Panel UI
        UpgradeText.setImage(new GreenfootImage("Upgrade by:", 20, Color.BLACK, new Color(0, 0, 0, 0))); addObject(UpgradeText, 1188, 600);
        UpgradeButton1.setImage("Upgr1.png"); UpgradeButton1.getImage().scale(70, 70); UpgradeButton1.getImage().scale(40,20); addObject(UpgradeButton1, 1262, 600);
        UpgradeButton5.setImage("Upgr5.png"); UpgradeButton5.getImage().scale(70, 70); UpgradeButton5.getImage().scale(40,20); addObject(UpgradeButton5, 1312, 600);
        UpgradeButton10.setImage("Upgr10.png"); UpgradeButton10.getImage().scale(70, 70); UpgradeButton10.getImage().scale(40,20); addObject(UpgradeButton10, 1362, 600);
        addObject(CharacterYenIncomeDisplay, 1262, 570);
    }
    //For GIF background
    private void gifAnimation()
    {
        for (Object obj : gifImg.getImages()) ((GreenfootImage)obj).scale(getWidth(), getHeight());
        setBackground(gifImg.getCurrentImage());
    }
    // methods (by convention) go last
    
    //For executing all preccesses in MyWorld
    public void act()
    {
        //For GIF background
        gifAnimation();
        //Minigame Stuff
        if(!minor.getObjects(DoMe.class).isEmpty())
        {
            DoMe doMe = (DoMe) minor.getObjects(DoMe.class).get(0);
            minor.removeObject(doMe);
            if(MiniUmaru.MiniPChipsScore ==1)
            {
                MiniUmaru.MiniPChipsScore = 0;
                addObject(new PChips(), 600, 600);
            }
            if(MiniUmaru.MiniCColaScore ==1)
            {
                MiniUmaru.MiniCColaScore = 0;
                addObject(new CCola(), 600, 600);
            }
            if(MiniUmaru.MiniBRAnimeScore ==1)
            {
                MiniUmaru.MiniBRAnimeScore = 0;
                addObject(new BRAnime(), 600, 600);
            }
        }
        //Menu Stuff
        setMenuUpgrDisplay();
        if(Greenfoot.mouseClicked(PCButton) && AYen >= 2000 && (getObjects(PChips.class).isEmpty())) {AYen -= 2000; addObject(new PChips(), 600, 600);}
        if(Greenfoot.mouseClicked(CCButton) && AYen >= 8000 && (getObjects(CCola.class).isEmpty())) {AYen -= 8000; addObject(new CCola(), 600, 600);}
        if(Greenfoot.mouseClicked(BRAButton) && AYen >= 36000 && (getObjects(BRAnime.class).isEmpty())) {AYen -= 36000; addObject(new BRAnime(), 600, 600);}
        //For updating the Timing stuff
        if ((++frames)%55 == 0) updateGameTimeDisplay();
        if ((--Cframes)%55 == 0) updateCooldownDisplay();
        if (!getObjects(PChips.class).isEmpty() && (--PCBframes)%55 ==0) updatePCBuffTimeDisplay();
        if (!getObjects(CCola.class).isEmpty() && (--CCBframes)%55 ==0) updateCCBuffTimeDisplay();
        if (!getObjects(BRAnime.class).isEmpty() && (--BRABframes)%55 ==0) updateBRABuffTimeDisplay();
        if (Cframes == 0) {Minigame(); Cframes += ((3+Greenfoot.getRandomNumber(5))*55); /*chooses a cooldown time between 3-7 minutes randomly*/}
        if (CCBframes == 0) CCBframes += 3*55;
        if (PCBframes == 0) PCBframes += 3*55;
        if (BRABframes == 0) BRABframes += 3*55;
        // control dragging of PIP objects
        if (Greenfoot.mousePressed(null) && mouseActor == null)
        {
            MouseInfo mouse = Greenfoot.getMouseInfo();
            if (mouse.getActor() == null || mouse.getActor().getClass() != PIP.class) return;
            mouseActor = mouse.getActor();
            mouseOffX = mouseActor.getX()-mouse.getX();
            mouseOffY = mouseActor.getY()-mouse.getY();
            removeObject(mouseActor);
            addObject(mouseActor, mouse.getX()+mouseOffX, mouse.getY()+mouseOffY);
        }
        if (mouseActor != null && Greenfoot.mouseDragged(mouseActor))
        {
            MouseInfo mouse = Greenfoot.getMouseInfo();
            mouseActor.setLocation(mouse.getX()+mouseOffX, mouse.getY()+mouseOffY);
        }
        if (mouseActor != null && Greenfoot.mouseClicked(mouseActor)) mouseActor = null;
        //for removing ended Minigames
        if (pip != null && pip.getWorld() == this && minor.getObjects(null).isEmpty()) {removeObject(pip); M1BGM.pause(); M2BGM.pause(); M3BGM.pause(); MGBGM.play();};
    }
    //For Yen Display stuff
    public int getAccumulatedYen() {return DYen;}
    public void adjustYen(float adjustment)
    {
        AYen += adjustment;
        DYen = (int) AYen;
        YenDisplay.setImage(new GreenfootImage("Yen: "+DYen+"¥", 20, new Color(113, 50, 255, 255), new Color(0, 0, 0, 0)));
    }
    
    //Time Displays
    //Potato Chip Buff
    private void updatePCBuffTimeDisplay()
    {
        int Time = PCBframes/55;
        String minutes = "0"+(Time/60)/* string remaining minutes*/, seconds = "0"+(Time%60)/* string remaining seconds*/, mins = minutes.substring(minutes.length()-2)/* minutes output string*/, secs = seconds.substring(seconds.length()-2)/* seconds output string*/, TimeFormat = "Buff: "+mins+":"+secs;// Preview: Buff: 03:27
        PCBuffTimeDisplay.setImage(new GreenfootImage(TimeFormat, 20, new Color(100, 255, 100, 40) , new Color(0, 0, 0, 0)));
    }
    //Coca Cola Buff
    private void updateCCBuffTimeDisplay()
    {
        int Time = CCBframes/55;
        String minutes = "0"+(Time/60)/* string remaining minutes*/, seconds = "0"+(Time%60)/* string remaining seconds*/, mins = minutes.substring(minutes.length()-2)/* minutes output string*/, secs = seconds.substring(seconds.length()-2)/* seconds output string*/, TimeFormat = "Buff: "+mins+":"+secs;// Preview: Buff: 01:19
        CCBuffTimeDisplay.setImage(new GreenfootImage(TimeFormat, 20, new Color(100, 255, 100, 40) , new Color(0, 0, 0, 0)));
    }
    //Blu-Ray Anime Buff
    private void updateBRABuffTimeDisplay()
    {
        int Time = BRABframes/55;
        String minutes = "0"+(Time/60)/* string remaining minutes*/, seconds = "0"+(Time%60)/* string remaining seconds*/, mins = minutes.substring(minutes.length()-2)/* minutes output string*/, secs = seconds.substring(seconds.length()-2)/* seconds output string*/, TimeFormat = "Buff: "+mins+":"+secs;// Preview: Buff: 04:54
        BRABuffTimeDisplay.setImage(new GreenfootImage(TimeFormat, 20, new Color(100, 255, 100, 40) , new Color(0, 0, 0, 0)));
    }
    //Game
    private void updateGameTimeDisplay()
    {
        int Time = frames/55/* total seconds*/, TotalMinutes = Time/60; // total minutes
        String hours = "0"+(TotalMinutes/60)/* string total hours*/, minutes = "0"+(TotalMinutes%60)/* string remaining minutes*/, seconds = "0"+(Time%60)/* string remaining seconds*/, hrs = hours.substring(hours.length()-2)/* hour output string*/, mins = minutes.substring(minutes.length()-2)/* minutes output string*/, secs = seconds.substring(seconds.length()-2)/* seconds output string*/, TimeFormat = "Time: "+hrs+"hrs "+mins+"mins "+secs+"secs"; //Preview: Time: 52462hrs 28mins 16secs
        GameTimeDisplay.setImage(new GreenfootImage(TimeFormat, 20, new Color(113, 0, 255, 255), new Color(0, 0, 0, 0)));
    }
    
    //Minigame stuff
    //For timing the appearance of the Minigame
    private void updateCooldownDisplay()
    {
        int Time = Cframes/55;
        String minutes = "0"+(Time/60)/* string remaining minutes*/, seconds = "0"+(Time%60)/* string remaining seconds*/, mins = minutes.substring(minutes.length()-2)/* minutes output string*/, secs = seconds.substring(seconds.length()-2)/* seconds output string*/, TimeFormat = "Minigame countdown: "+mins+"mins "+secs+"secs"; //Preview: Minigame countdown: 56mins 27secs
        Cooldown.setImage(new GreenfootImage(TimeFormat, 20, new Color(113, 25, 255, 255), new Color(0, 0, 0, 0)));
    }
    //For choosing and calling out the Minigame
    private void Minigame()
    {
        if (pip != null && pip.getWorld() != null) return; // will not add new pip if one is already in world
        minor = null;
        switch (Greenfoot.getRandomNumber(4))
        {
            case 0: if (!getObjects(Umaru.class).isEmpty()) {minor = new Minigame1(); MGBGM.pause(); M1BGM.playLoop();} break;
            case 1: if (!getObjects(Bomba.class).isEmpty()) {minor = new Minigame2(); MGBGM.pause();  M2BGM.playLoop();} break;
            case 2: if (!getObjects(Ebina.class).isEmpty()) {minor = new Minigame3(); MGBGM.pause();  M3BGM.playLoop();} break;
            case 3: if (!getObjects(Alex.class).isEmpty()) minor = new Minigame4(); break;
        }
        if (minor != null)
        {
            pip = new PIP(minor, new Class[] {});
            pip.setActiveState(true);
            addObject(pip, 690, 110);
        }
    }
    private void setMenuUpgrDisplay()
    {
        if (SelectedCharacter != null)CharacterYenIncomeDisplay.setImage(new GreenfootImage(SelectedCharacter+"¥"+CharacterYenIncome, 20, new Color(255, 255, 255, 255), new Color(0, 0, 0, 0)));
        else CharacterYenIncomeDisplay.setImage(new GreenfootImage("Click on a Character to see the stats", 20, new Color(100, 255, 100, 40) , new Color(0, 0, 0, 0)));
        if(Greenfoot.mouseClicked(MKButton))
        {
            SelectedCharacter2 = "MgrKanau";
            if(getObjects(MgrKanau.class).isEmpty())
            {
                if(AYen >= 100)
                {
                    AYen -= 100; MKLevel  += 1;
                    addObject(MgrKanau, 600, 600); SelectedCharacter = "Manager Kanau Income: ";
                }else {SelectedCharacter = "Price: "; CharacterYenIncome = 100;}
            }else {SelectedCharacter = "Manager Kanau Income: "; CharacterYenIncome = ((MgrKanau) MgrKanau).YenPerMin;}
        }
        if(Greenfoot.mouseClicked(HButton))
        {
            SelectedCharacter2 = "Hikari";
            if(getObjects(Hikari.class).isEmpty())  
            {
                if(AYen >= 200)
                {
                    AYen -= 200; HLevel  += 1;
                    addObject(Hikari, 600, 600); SelectedCharacter = "Hikari Income: ";
                }else{SelectedCharacter = "Price: "; CharacterYenIncome = 200;}
            }else{SelectedCharacter = "Hikari Income: "; CharacterYenIncome = ((Hikari) Hikari).YenPerMin;}
        }
        if(Greenfoot.mouseClicked(AButton))
        {
            SelectedCharacter2 = "Alex";
            if(getObjects(Alex.class).isEmpty())
            {
                if(AYen >= 400)
                {
                    AYen -= 400; ALevel  += 1;
                    addObject(Alex, 600, 600); SelectedCharacter = "Alex Income: ";
                }else {SelectedCharacter = "Price: "; CharacterYenIncome = 400;}
            }else {SelectedCharacter = "Alex Income: "; CharacterYenIncome = ((Alex) Alex).YenPerMin;}
        }
        if(Greenfoot.mouseClicked(SButton))
        {
            SelectedCharacter2 = "Sylphynford";
            if(getObjects(Sylphynford.class).isEmpty())
            {
                if(AYen >= 800)
                {
                    AYen -= 800; SLevel  += 1;
                    addObject(Sylphynford, 600, 600); SelectedCharacter = "Sylphynford Income: ";
                }else {SelectedCharacter = "Price: "; CharacterYenIncome = 800;}
            }else {SelectedCharacter = "Sylphynford Income: "; CharacterYenIncome = ((Sylphynford) Sylphynford).YenPerMin;}
        }
        if(Greenfoot.mouseClicked(BButton))
        {
            SelectedCharacter2 = "Bomba";
            if(getObjects(Bomba.class).isEmpty())
            {
                if(AYen >= 1600)
                {
                    AYen -= 1600; BLevel  += 1;
                    addObject(Bomba, 600, 600); SelectedCharacter = "Bomba Income: ";
                }else {SelectedCharacter = "Price: "; CharacterYenIncome = 1600;}
            }else {SelectedCharacter = "Bomba Income: "; CharacterYenIncome = ((Bomba) Bomba).YenPerMin;}
        }
        if(Greenfoot.mouseClicked(KButton))
        {
            SelectedCharacter2 = "Kirie";
            if(getObjects(Kirie.class).isEmpty())
            {
                if(AYen >= 3200)
                {
                    AYen -= 3200; KLevel  += 1;
                    addObject(Kirie, 600, 600); SelectedCharacter = "Kirie Income: ";
                }else {SelectedCharacter = "Price: "; CharacterYenIncome = 3200;}
            }else {SelectedCharacter = "Kirie Income: "; CharacterYenIncome = ((Kirie) Kirie).YenPerMin;}
        }
        if(Greenfoot.mouseClicked(EButton))
        {
            SelectedCharacter2 = "Ebina";
            if(getObjects(Ebina.class).isEmpty())
            {
                if(AYen >= 6400)
                {
                    AYen -= 6400; ELevel  += 1;
                    addObject(Ebina, 600, 600); SelectedCharacter = "Ebina Income: ";
                }else {SelectedCharacter = "Price: "; CharacterYenIncome = 6400;}
            }else {SelectedCharacter = "Ebina Income: "; CharacterYenIncome = ((Ebina) Ebina).YenPerMin;}
        }
        if(Greenfoot.mouseClicked(UButton))
        {
            SelectedCharacter2 = "Umaru";
            if(getObjects(Umaru.class).isEmpty())
            {
                if(AYen >= 12800)
                {
                    AYen -= 12800; ULevel  += 1;
                    addObject(Umaru, 600, 600); SelectedCharacter = "Umaru Income: ";
                }else {SelectedCharacter = "Price: "; CharacterYenIncome = 12800;}
            }else {SelectedCharacter = "Umaru Income: "; CharacterYenIncome = ((Umaru) Umaru).YenPerMin;}
        }
        if(Greenfoot.mouseClicked(UpgradeButton1))
        {
            if(SelectedCharacter2 == "MgrKanau")
            {
                if(!getObjects(MgrKanau.class).isEmpty())
                {
                    if(AYen >= (MKLevel*10)) {AYen -= MKLevel*10; MKLevel += 1; SelectedCharacter = "Manager Kanau Income: ";}
                    else {SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = MKLevel*10;}
                }
                else
                {SelectedCharacter = "Pls buy Manager Kanau 1st. Price: "; CharacterYenIncome = 100;}
            }
            else if(SelectedCharacter2 == "Hikari")
            {
                if(!getObjects(Hikari.class).isEmpty())
                {
                    if(AYen >= (HLevel*20)) {AYen -= HLevel*20; HLevel += 1; SelectedCharacter = "Hikari Income: ";}
                    else {SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = HLevel*20;}
                }
                else {SelectedCharacter = "Pls buy Hikari 1st. Price: "; CharacterYenIncome = 200;}
            }
            else if(SelectedCharacter2 == "Alex")
            {
                if(!getObjects(Alex.class).isEmpty())
                {
                    if(AYen >= (ALevel*40)) {AYen -= ALevel*40; ALevel += 1; SelectedCharacter = "Alex Income: ";}
                    else {SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = ALevel*40;}
                }
                else {SelectedCharacter = "Pls buy Alex 1st. Price: "; CharacterYenIncome = 400;}
            }
            else if(SelectedCharacter2 == "Sylphynford")
            {
                if(!getObjects(Sylphynford.class).isEmpty())
                {
                    if(AYen >= (SLevel*80)) {AYen -= SLevel*80; SLevel += 1; SelectedCharacter = "Sylphynford Income: ";}
                    else {SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = SLevel*80;}
                }
                else {SelectedCharacter = "Pls buy Sylphynford 1st. Price: "; CharacterYenIncome = 800;}
            }
            else if(SelectedCharacter2 == "Bomba")
            {
                if(!getObjects(Bomba.class).isEmpty())
                {
                    if(AYen >= (BLevel*160)) {AYen -= BLevel*160; BLevel += 1; SelectedCharacter = "Bomba Income: ";}
                    else {SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = BLevel*160;}
                }
                else {SelectedCharacter = "Pls buy Bomba 1st. Price: "; CharacterYenIncome = 1600;}
            }
            else if(SelectedCharacter2 == "Kirie")
            {
                if(!getObjects(Kirie.class).isEmpty())
                {
                    if(AYen >= (KLevel*320)) {AYen -= KLevel*320; KLevel += 1; SelectedCharacter = "Kirie Income: ";}
                    else {SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = KLevel*320;}
                }
                else {SelectedCharacter = "Pls buy Kirie 1st. Price: "; CharacterYenIncome = 3200;}
            }
            else if(SelectedCharacter2 == "Ebina")
            {
                if(!getObjects(Ebina.class).isEmpty())
                {
                    if(AYen >= (ELevel*640)) {AYen -= ELevel*640; ELevel += 1; SelectedCharacter = "Ebina Income: ";}
                    else {SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = ELevel*640;}
                }
                else {SelectedCharacter = "Pls buy Ebina 1st. Price: "; CharacterYenIncome = 6400;}
            }
            else if(SelectedCharacter2 == "Umaru")
            {
                if(!getObjects(Umaru.class).isEmpty())
                {
                    if(AYen >= (ULevel*1280)) {AYen -= ULevel*1280; ULevel += 1; SelectedCharacter = "Umaru Income: ";}
                    else {SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = ULevel*1280;}
                }
                else {SelectedCharacter = "Pls buy Umaru 1st. Price: "; CharacterYenIncome = 12800;}
            }
        }
        if(Greenfoot.mouseClicked(UpgradeButton5))
        {
            if(SelectedCharacter2 == "MgrKanau")
            {
                if(!getObjects(MgrKanau.class).isEmpty())
                {
                    for(int i = 0; i<5; i++)
                    {
                        totalYen += (MKLevel+(i+1))*10;
                    }
                    if(AYen >= totalYen) {AYen -= totalYen; MKLevel += 5; SelectedCharacter = "Manager Kanau Income: ";}
                    else {SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = totalYen;}
                }
                else
                {SelectedCharacter = "Pls buy Manager Kanau 1st. Price: "; CharacterYenIncome = 100;}
            }
            else if(SelectedCharacter2 == "Hikari")
            {
                if(!getObjects(Hikari.class).isEmpty())
                {
                    for(int i = 0; i<5; i++)
                    {
                        totalYen += (HLevel+(i+1))*20;
                    }
                    if(AYen >= totalYen) {AYen -= totalYen; HLevel += 5; SelectedCharacter = "Hikari Income: ";}
                    else {SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = totalYen;}
                }
                else {SelectedCharacter = "Pls buy Hikari 1st. Price: "; CharacterYenIncome = 200;}
            }
            else if(SelectedCharacter2 == "Alex")
            {
                if(!getObjects(Alex.class).isEmpty())
                {
                    for(int i = 0; i<5; i++)
                    {
                        totalYen += (ALevel+(i+1))*40;
                    }
                    if(AYen >= totalYen) {AYen -= totalYen; ALevel += 5; SelectedCharacter = "Alex Income: ";}
                    else {SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = totalYen;}
                }
                else {SelectedCharacter = "Pls buy Alex 1st. Price: "; CharacterYenIncome = 400;}
            }
            else if(SelectedCharacter2 == "Sylphynford")
            {
                if(!getObjects(Sylphynford.class).isEmpty())
                {
                    for(int i = 0; i<5; i++)
                    {
                        totalYen += (SLevel+(i+1))*80;
                    }
                    if(AYen >= totalYen) {AYen -= totalYen; SLevel += 5; SelectedCharacter = "Sylphynford Income: ";}
                    else {SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = totalYen;}
                }
                else {SelectedCharacter = "Pls buy Sylphynford 1st. Price: "; CharacterYenIncome = 800;}
            }
            else if(SelectedCharacter2 == "Bomba")
            {
                if(!getObjects(Bomba.class).isEmpty())
                {
                    for(int i = 0; i<5; i++)
                    {
                        totalYen += (BLevel+(i+1))*160;
                    }
                    if(AYen >= totalYen) {AYen -= totalYen; BLevel += 5; SelectedCharacter = "Bomba Income: ";}
                    else {SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = totalYen;}
                }
                else {SelectedCharacter = "Pls buy Bomba 1st. Price: "; CharacterYenIncome = 1600;}
            }
            else if(SelectedCharacter2 == "Kirie")
            {
                if(!getObjects(Kirie.class).isEmpty())
                {
                    for(int i = 0; i<5; i++)
                    {
                        totalYen += (KLevel+(i+1))*320;
                    }
                    if(AYen >= totalYen) {AYen -= totalYen; KLevel += 5; SelectedCharacter = "Kirie Income: ";}
                    else {SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = totalYen;}
                }
                else {SelectedCharacter = "Pls buy Kirie 1st. Price: "; CharacterYenIncome = 3200;}
            }
            else if(SelectedCharacter2 == "Ebina")
            {
                if(!getObjects(Ebina.class).isEmpty())
                {
                    for(int i = 0; i<5; i++)
                    {
                        totalYen += (ELevel+(i+1))*640;
                    }
                    if(AYen >= totalYen) {AYen -= totalYen; ELevel += 5; SelectedCharacter = "Ebina Income: ";}
                    else {SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = totalYen;}
                }
                else {SelectedCharacter = "Pls buy Ebina 1st. Price: "; CharacterYenIncome = 6400;}
            }
            else if(SelectedCharacter2 == "Umaru")
            {
                if(!getObjects(Umaru.class).isEmpty())
                {
                    for(int i = 0; i<5; i++)
                    {
                        totalYen += (ULevel+(i+1))*1280;
                    }
                    if(AYen >= totalYen) {AYen -= totalYen; ULevel += 5; SelectedCharacter = "Umaru Income: ";}
                    else {SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = totalYen;}
                }
                else {SelectedCharacter = "Pls buy Umaru 1st. Price: "; CharacterYenIncome = 12800;}
            }
        }
        if(Greenfoot.mouseClicked(UpgradeButton10))
        {
            if(SelectedCharacter2 == "MgrKanau")
            {
                if(!getObjects(MgrKanau.class).isEmpty())
                {
                    for(int i = 0; i<10; i++)
                    {
                        totalYen += (MKLevel+(i+1))*10;
                    }
                    if(AYen >= totalYen) {AYen -= totalYen; MKLevel += 10; SelectedCharacter = "Manager Kanau Income: ";}
                    else {SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = totalYen;}
                }
                else
                {SelectedCharacter = "Pls buy Manager Kanau 1st. Price: "; CharacterYenIncome = 100;}
            }
            else if(SelectedCharacter2 == "Hikari")
            {
                if(!getObjects(Hikari.class).isEmpty())
                {
                    for(int i = 0; i<10; i++)
                    {
                        totalYen += (HLevel+(i+1))*20;
                    }
                    if(AYen >= totalYen) {AYen -= totalYen; HLevel += 10; SelectedCharacter = "Hikari Income: ";}
                    else {SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = totalYen;}
                }
                else {SelectedCharacter = "Pls buy Hikari 1st. Price: "; CharacterYenIncome = 200;}
            }
            else if(SelectedCharacter2 == "Alex")
            {
                if(!getObjects(Alex.class).isEmpty())
                {
                    for(int i = 0; i<10; i++)
                    {
                        totalYen += (ALevel+(i+1))*40;
                    }
                    if(AYen >= totalYen) {AYen -= totalYen; ALevel += 10; SelectedCharacter = "Alex Income: ";}
                    else {SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = totalYen;}
                }
                else {SelectedCharacter = "Pls buy Alex 1st. Price: "; CharacterYenIncome = 400;}
            }
            else if(SelectedCharacter2 == "Sylphynford")
            {
                if(!getObjects(Sylphynford.class).isEmpty())
                {
                    for(int i = 0; i<10; i++)
                    {
                        totalYen += (SLevel+(i+1))*80;
                    }
                    if(AYen >= totalYen) {AYen -= totalYen; SLevel += 10; SelectedCharacter = "Sylphynford Income: ";}
                    else {SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = totalYen;}
                }
                else {SelectedCharacter = "Pls buy Sylphynford 1st. Price: "; CharacterYenIncome = 800;}
            }
            else if(SelectedCharacter2 == "Bomba")
            {
                if(!getObjects(Bomba.class).isEmpty())
                {
                    for(int i = 0; i<10; i++)
                    {
                        totalYen += (BLevel+(i+1))*160;
                    }
                    if(AYen >= totalYen) {AYen -= totalYen; BLevel += 10; SelectedCharacter = "Bomba Income: ";}
                    else {SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = totalYen;}
                }
                else {SelectedCharacter = "Pls buy Bomba 1st. Price: "; CharacterYenIncome = 1600;}
            }
            else if(SelectedCharacter2 == "Kirie")
            {
                if(!getObjects(Kirie.class).isEmpty())
                {
                    for(int i = 0; i<10; i++)
                    {
                        totalYen += (KLevel+(i+1))*320;
                    }
                    if(AYen >= totalYen) {AYen -= totalYen; KLevel += 10; SelectedCharacter = "Kirie Income: ";}
                    else {SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = totalYen;}
                }
                else {SelectedCharacter = "Pls buy Kirie 1st. Price: "; CharacterYenIncome = 3200;}
            }
            else if(SelectedCharacter2 == "Ebina")
            {
                if(!getObjects(Ebina.class).isEmpty())
                {
                    for(int i = 0; i<10; i++)
                    {
                        totalYen += (ELevel+(i+1))*640;
                    }
                    if(AYen >= totalYen) {AYen -= totalYen; ELevel += 10; SelectedCharacter = "Ebina Income: ";}
                    else {SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = totalYen;}
                }
                else {SelectedCharacter = "Pls buy Ebina 1st. Price: "; CharacterYenIncome = 6400;}
            }
            else if(SelectedCharacter2 == "Umaru")
            {
                if(!getObjects(Umaru.class).isEmpty())
                {
                    for(int i = 0; i<10; i++)
                    {
                        totalYen += (ULevel+(i+1))*1280;
                    }
                    if(AYen >= totalYen) {AYen -= totalYen; ULevel += 10; SelectedCharacter = "Umaru Income: ";}
                    else {SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = totalYen;}
                }
                else {SelectedCharacter = "Pls buy Umaru 1st. Price: "; CharacterYenIncome = 12800;}
            }
        }
    }
}
danpost danpost

2018/5/16

#
Lavenger wrote...
danpost wrote...
Did you create a DoMe (as I called it) class? if not, do so; if you did, show what you created.
i did, but it says null pointer exception at line 91 << Code Omitted >>
Okay -- modify it to this:
if(minor != null && !minor.getObjects(DoMe.class).isEmpty())
You need to login to post a reply.