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

2018/5/5

How do I reference an actor's integer to the world

1
2
Lavenger Lavenger

2018/5/5

#
I am trying to get an integer from an actor to display it into the world but i cant seem to do it. Context: I've been trying to call an integer called YenPerMin inside of an method GainYen() from an actor called Umaru by calling out Umaru.GainYen().YenPerMin in the world class but there is an error that says "Cannot find symbol - method GainYen()" Why's that so?
danpost danpost

2018/5/5

#
There is never any code in your initial discussion posts. Why's that so?
Lavenger Lavenger

2018/5/5

#
danpost wrote...
There is never any code in your initial discussion posts. Why's that so?
Because i dont want to spam the post with unecessary information, giving unecessary information only makes the helper and me scroll down more than we require to and it's inconveinient so the solution is to only provide informations that are useful. ofcourse if the helper needs my code to help me, ill post it without a doubt
danpost danpost

2018/5/5

#
Lavenger wrote...
I've been trying to call an integer called YenPerMin inside of an method GainYen() from an actor called Umaru by calling out Umaru.GainYen().YenPerMin in the world class but there is an error that says "Cannot find symbol - method GainYen()" Why's that so?
You indicate an error which must reference some line of code -- that would be relevant (as well any code previous to it). It cannot find a method called GainYen -- showing its code and indicating what class you have it in is relevant. You call the method on Umaru, which could be the class name or a variable (or field) name. How it is defined is relevant. How and where (not just class, but where inside the class) the field you are trying to access, YenPerMin is relevant. Now, if you had just ask how to display the value of the field, I would just say to use something like this from in the Umaru class:
getWorld().showText("Yen per min: "+YenPerMin, 80, 20);
Lavenger Lavenger

2018/5/5

#
danpost wrote...
You indicate an error which must reference some line of code -- that would be relevant (as well any code previous to it).
i see, that was a heavy blunder that i didn't think of This is the class code of Umaru the int YenPerMin that i want to call out lies in line 12
import greenfoot.*;
public class Umaru extends Actor
{
    public void act() 
    {
        if(getWorld().getObjects(Umaru.class).size() != 0) GainYen();
    }
    public void GainYen() 
    {
        float YenAdjustment = 0; // every cycle this value will pe deposited onto the world's yen value
        MyWorld mw = (MyWorld)getWorld();
        int YenPerMin = mw.ULevel*8192;
        Greenfoot.setSpeed(50);
        YenAdjustment += YenPerMin / 60f /50;
        mw.adjustYen(YenAdjustment);
        // When buying something, only subtract the price from AGold!
    }
}
This is the class code of the world which I'm trying to put the display in. The error lies in line 201, i cant seem to call out the int YenPerMin from the GainYen() method from the Umaru class mentioned above
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 int UpgrMulti5 = 5, UpgrMulti10 = 10, CharacterYenIncome;
    public int MKLevel = 0, HLevel = 0, ALevel = 0, SLevel = 0, BLevel = 0, KLevel = 0, ELevel = 0, ULevel = 0, TLevel = 0;
    private String SelectedCharacter;
    public Actor UpgradeText = new SimpleActor(), UpgradeButton1 = new SimpleActor(),UpgradeButton5 = new SimpleActor(),UpgradeButton10 = new SimpleActor(), CharacterYenIncomeDisplay = new SimpleActor(), MgrKanau = new MgrKanau(), Hikari = new Hikari(), Alex = new Alex(), Sylphynford = new Sylphynford(), Bomba = new Bomba(), Kirie = new Kirie(), Ebina = new Ebina(), Umaru = new Umaru();
    
    //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(30,15); addObject(UpgradeButton1, 1262, 600);
        UpgradeButton5.setImage("Upgr5.png"); UpgradeButton5.getImage().scale(70, 70); UpgradeButton5.getImage().scale(30,15); addObject(UpgradeButton5, 1312, 600);
        UpgradeButton10.setImage("Upgr10.png"); UpgradeButton10.getImage().scale(70, 70); UpgradeButton10.getImage().scale(30,15); 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))                 {if(getObjects(MgrKanau.class).isEmpty())                                                       {if(AYen >= 100)                          {AYen -= 100;    addObject(MgrKanau, 600, 600);      MKLevel  += 1;     SelectedCharacter = "Manager Kanau Income: ";}   else {SelectedCharacter = "Price: "; CharacterYenIncome = 100;}}                 else SelectedCharacter = "MgrKanau Income: ";}
        if(Greenfoot.mouseClicked(HButton))                  {if(getObjects(Hikari.class).isEmpty())                                                         {if(AYen >= 200)                          {AYen -= 200;    addObject(Hikari, 600, 600);        HLevel  += 1;      SelectedCharacter = "Hikari Income: ";}          else {SelectedCharacter = "Price: "; CharacterYenIncome = 200;}}                 else SelectedCharacter = "Hikari Income: ";}
        if(Greenfoot.mouseClicked(AButton))                  {if(getObjects(Alex.class).isEmpty())                                                           {if(AYen >= 400)                          {AYen -= 400;    addObject(Alex, 600, 600);          ALevel  += 1;      SelectedCharacter = "Alex Income: ";}            else {SelectedCharacter = "Price: "; CharacterYenIncome = 400;}}                 else SelectedCharacter = "Alex Income: ";}
        if(Greenfoot.mouseClicked(SButton))                  {if(getObjects(Sylphynford.class).isEmpty())                                                    {if(AYen >= 800)                          {AYen -= 800;    addObject(Sylphynford, 600, 600);   SLevel  += 1;      SelectedCharacter = "Sylphynford Income: ";}     else {SelectedCharacter = "Price: "; CharacterYenIncome = 800;}}                 else SelectedCharacter = "Sylphynford Income: ";}
        if(Greenfoot.mouseClicked(BButton))                  {if(getObjects(Bomba.class).isEmpty())                                                          {if(AYen >= 1600)                         {AYen -= 1600;   addObject(Bomba, 600, 600);         BLevel  += 1;      SelectedCharacter = "Bomba Income: ";}           else {SelectedCharacter = "Price: "; CharacterYenIncome = 1600;}}                else SelectedCharacter = "Bomba Income: ";}
        if(Greenfoot.mouseClicked(KButton))                  {if(getObjects(Kirie.class).isEmpty())                                                          {if(AYen >= 3200)                         {AYen -= 3200;   addObject(Kirie, 600, 600);         KLevel  += 1;      SelectedCharacter = "Kirie Income: ";}           else {SelectedCharacter = "Price: "; CharacterYenIncome = 3200;}}                else SelectedCharacter = "Kirie Income: ";}
        if(Greenfoot.mouseClicked(EButton))                  {if(getObjects(Ebina.class).isEmpty())                                                          {if(AYen >= 6400)                         {AYen -= 6400;   addObject(Ebina, 600, 600);         ELevel  += 1;      SelectedCharacter = "Ebina Income: ";}           else {SelectedCharacter = "Price: "; CharacterYenIncome = 6400;}}                else SelectedCharacter = "Ebina Income: ";}
        if(Greenfoot.mouseClicked(UButton))                  {if(getObjects(Umaru.class).isEmpty())                                                          {if(AYen >= 12800)                        {AYen -= 12800;  addObject(Umaru, 600, 600);         ULevel  += 1;      SelectedCharacter = "Umaru Income: ";}           else {SelectedCharacter = "Price: "; CharacterYenIncome = 12800;}}               else {SelectedCharacter = "Umaru Income: "; CharacterYenIncome = Umaru.GainYen().YenPerMin;}}
        if(Greenfoot.mouseClicked(UpgradeButton1))
        {
            if(SelectedCharacter == "MgrKanau" && !getObjects(MgrKanau.class).isEmpty())
            {
                if(AYen >= (MKLevel*200))
                {
                    AYen -= MKLevel*200;
                    ULevel += 1;
                    SelectedCharacter = "Manager Kanau Income: ";
                }
                else
                {
                    SelectedCharacter = "Upgrade Price: ";
                    CharacterYenIncome = MKLevel*10;
                }
            }
            else
            {
                SelectedCharacter = "Pls buy Manager Kanau 1st. Price: ";
                 CharacterYenIncome = 100;
            }
        }
        else if(Greenfoot.mouseClicked(UpgradeButton1))      {if(!getObjects(Hikari.class).isEmpty())            {if(SelectedCharacter == "Hikari")           {if(AYen >= (HLevel*200))                 {AYen -= HLevel*200;                 ULevel += 1; SelectedCharacter = "Hikari Income: ";}              else{SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = HLevel*20;}}                      else{SelectedCharacter = "Pls buy Hikari 1st. Price: ";             CharacterYenIncome = 200;}}}
        else if(Greenfoot.mouseClicked(UpgradeButton1))      {if(!getObjects(Alex.class).isEmpty())              {if(SelectedCharacter == "Alex")             {if(AYen >= (ALevel*200))                 {AYen -= ALevel*200;                 ULevel += 1; SelectedCharacter = "Alex Income: ";}                else{SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = ALevel*40;}}                      else{SelectedCharacter = "Pls buy Alex 1st. Price: ";               CharacterYenIncome = 400;}}}
        else if(Greenfoot.mouseClicked(UpgradeButton1))      {if(!getObjects(Sylphynford.class).isEmpty())       {if(SelectedCharacter == "Sylphynford")      {if(AYen >= (SLevel*200))                 {AYen -= SLevel*200;                 ULevel += 1; SelectedCharacter = "Sylphynford Income: ";}         else{SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = SLevel*80;}}                      else{SelectedCharacter = "Pls buy Sylphynford 1st. Price: ";        CharacterYenIncome = 800;}}}
        else if(Greenfoot.mouseClicked(UpgradeButton1))      {if(!getObjects(Bomba.class).isEmpty())             {if(SelectedCharacter == "Bomba")            {if(AYen >= (BLevel*200))                 {AYen -= BLevel*200;                 ULevel += 1; SelectedCharacter = "Bomba Income: ";}               else{SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = BLevel*160;}}                     else{SelectedCharacter = "Pls buy Bomba 1st. Price: ";              CharacterYenIncome = 1600;}}}
        else if(Greenfoot.mouseClicked(UpgradeButton1))      {if(!getObjects(Kirie.class).isEmpty())             {if(SelectedCharacter == "Kirie")            {if(AYen >= (KLevel*200))                 {AYen -= KLevel*200;                 ULevel += 1; SelectedCharacter = "Kirie Income: ";}               else{SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = KLevel*320;}}                     else{SelectedCharacter = "Pls buy Kirie 1st. Price: ";              CharacterYenIncome = 3200;}}}
        else if(Greenfoot.mouseClicked(UpgradeButton1))      {if(!getObjects(Ebina.class).isEmpty())             {if(SelectedCharacter == "Ebina")            {if(AYen >= (ELevel*200))                 {AYen -= ELevel*200;                 ULevel += 1; SelectedCharacter = "Ebina Income: ";}               else{SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = ELevel*640;}}                     else{SelectedCharacter = "Pls buy Ebina 1st. Price: ";              CharacterYenIncome = 6400;}}}
        else if(Greenfoot.mouseClicked(UpgradeButton1))      {if(!getObjects(Umaru.class).isEmpty())             {if(SelectedCharacter == "Umaru")            {if(AYen >= (ULevel*200))                 {AYen -= ULevel*200;                 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(!getObjects(MgrKanau.class).isEmpty())          {if(SelectedCharacter == "MgrKanau")         {if(AYen >= (MKLevel*(UpgrMulti5*10)))    {AYen -= MKLevel*(UpgrMulti5*10);    ULevel += 1; SelectedCharacter = "Manager Kanau Income: ";}       else{SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = MKLevel*(UpgrMulti5*10);}}        else{SelectedCharacter = "Pls buy Manager Kanau 1st. Price: ";      CharacterYenIncome = 100;}}}
        else if(Greenfoot.mouseClicked(UpgradeButton5))      {if(!getObjects(Hikari.class).isEmpty())            {if(SelectedCharacter == "Hikari")           {if(AYen >= (HLevel*(UpgrMulti5*20)))     {AYen -= HLevel*(UpgrMulti5*20);     ULevel += 1; SelectedCharacter = "Hikari Income: ";}              else{SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = HLevel*(UpgrMulti5*20);}}         else{SelectedCharacter = "Pls buy Hikari 1st. Price: ";             CharacterYenIncome = 200;}}}
        else if(Greenfoot.mouseClicked(UpgradeButton5))      {if(!getObjects(Alex.class).isEmpty())              {if(SelectedCharacter == "Alex")             {if(AYen >= (ALevel*(UpgrMulti5*40)))     {AYen -= ALevel*(UpgrMulti5*40);     ULevel += 1; SelectedCharacter = "Alex Income: ";}                else{SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = ALevel*(UpgrMulti5*40);}}         else{SelectedCharacter = "Pls buy Alex 1st. Price: ";               CharacterYenIncome = 400;}}}
        else if(Greenfoot.mouseClicked(UpgradeButton5))      {if(!getObjects(Sylphynford.class).isEmpty())       {if(SelectedCharacter == "Sylphynford")      {if(AYen >= (SLevel*(UpgrMulti5*80)))     {AYen -= SLevel*(UpgrMulti5*80);     ULevel += 1; SelectedCharacter = "Sylphynford Income: ";}         else{SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = SLevel*(UpgrMulti5*80);}}         else{SelectedCharacter = "Pls buy Sylphynford 1st. Price: ";        CharacterYenIncome = 800;}}}
        else if(Greenfoot.mouseClicked(UpgradeButton5))      {if(!getObjects(Bomba.class).isEmpty())             {if(SelectedCharacter == "Bomba")            {if(AYen >= (BLevel*(UpgrMulti5*160)))    {AYen -= BLevel*(UpgrMulti5*160);    ULevel += 1; SelectedCharacter = "Bomba Income: ";}               else{SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = BLevel*(UpgrMulti5*160);}}        else{SelectedCharacter = "Pls buy Bomba 1st. Price: ";              CharacterYenIncome = 1600;}}}
        else if(Greenfoot.mouseClicked(UpgradeButton5))      {if(!getObjects(Kirie.class).isEmpty())             {if(SelectedCharacter == "Kirie")            {if(AYen >= (KLevel*(UpgrMulti5*320)))    {AYen -= KLevel*(UpgrMulti5*320);    ULevel += 1; SelectedCharacter = "Kirie Income: ";}               else{SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = KLevel*(UpgrMulti5*320);}}        else{SelectedCharacter = "Pls buy Kirie 1st. Price: ";              CharacterYenIncome = 3200;}}}
        else if(Greenfoot.mouseClicked(UpgradeButton5))      {if(!getObjects(Ebina.class).isEmpty())             {if(SelectedCharacter == "Ebina")            {if(AYen >= (ELevel*(UpgrMulti5*640)))    {AYen -= ELevel*(UpgrMulti5*640);    ULevel += 1; SelectedCharacter = "Ebina Income: ";}               else{SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = ELevel*(UpgrMulti5*640);}}        else{SelectedCharacter = "Pls buy Ebina 1st. Price: ";              CharacterYenIncome = 6400;}}}
        else if(Greenfoot.mouseClicked(UpgradeButton5))      {if(!getObjects(Umaru.class).isEmpty())             {if(SelectedCharacter == "Umaru")            {if(AYen >= (ULevel*(UpgrMulti5*1280)))   {AYen -= ULevel*(UpgrMulti5*1280);   ULevel += 1; SelectedCharacter = "Umaru Income: ";}               else{SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = ULevel*(UpgrMulti5*1280);}}       else{SelectedCharacter = "Pls buy Umaru 1st. Price: ";              CharacterYenIncome = 12800;}}}
             if(Greenfoot.mouseClicked(UpgradeButton10))     {if(!getObjects(MgrKanau.class).isEmpty())          {if(SelectedCharacter == "MgrKanau")         {if(AYen >= (MKLevel*(UpgrMulti10*10)))   {AYen -= MKLevel*(UpgrMulti10*200);  ULevel += 1; SelectedCharacter = "Manager Kanau Income: ";}       else{SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = MKLevel*(UpgrMulti10*10);}}       else{SelectedCharacter = "Pls buy Manager Kanau 1st. Price: ";      CharacterYenIncome = 100;}}}
        else if(Greenfoot.mouseClicked(UpgradeButton10))     {if(!getObjects(Hikari.class).isEmpty())            {if(SelectedCharacter == "Hikari")           {if(AYen >= (HLevel*(UpgrMulti10*20)))    {AYen -= HLevel*(UpgrMulti10*200);   ULevel += 1; SelectedCharacter = "Hikari Income: ";}              else{SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = HLevel*(UpgrMulti10*20);}}        else{SelectedCharacter = "Pls buy Hikari 1st. Price: ";             CharacterYenIncome = 200;}}}
        else if(Greenfoot.mouseClicked(UpgradeButton10))     {if(!getObjects(Alex.class).isEmpty())              {if(SelectedCharacter == "Alex")             {if(AYen >= (ALevel*(UpgrMulti10*40)))    {AYen -= ALevel*(UpgrMulti10*200);   ULevel += 1; SelectedCharacter = "Alex Income: ";}                else{SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = ALevel*(UpgrMulti10*40);}}        else{SelectedCharacter = "Pls buy Alex 1st. Price: ";               CharacterYenIncome = 400;}}}
        else if(Greenfoot.mouseClicked(UpgradeButton10))     {if(!getObjects(Sylphynford.class).isEmpty())       {if(SelectedCharacter == "Sylphynford")      {if(AYen >= (SLevel*(UpgrMulti10*80)))    {AYen -= SLevel*(UpgrMulti10*200);   ULevel += 1; SelectedCharacter = "Sylphynford Income: ";}         else{SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = SLevel*(UpgrMulti10*80);}}        else{SelectedCharacter = "Pls buy Sylphynford 1st. Price: ";        CharacterYenIncome = 800;}}}
        else if(Greenfoot.mouseClicked(UpgradeButton10))     {if(!getObjects(Bomba.class).isEmpty())             {if(SelectedCharacter == "Bomba")            {if(AYen >= (BLevel*(UpgrMulti10*160)))   {AYen -= BLevel*(UpgrMulti10*200);   ULevel += 1; SelectedCharacter = "Bomba Income: ";}               else{SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = BLevel*(UpgrMulti10*160);}}       else{SelectedCharacter = "Pls buy Bomba 1st. Price: ";              CharacterYenIncome = 1600;}}}
        else if(Greenfoot.mouseClicked(UpgradeButton10))     {if(!getObjects(Kirie.class).isEmpty())             {if(SelectedCharacter == "Kirie")            {if(AYen >= (KLevel*(UpgrMulti10*320)))   {AYen -= KLevel*(UpgrMulti10*200);   ULevel += 1; SelectedCharacter = "Kirie Income: ";}               else{SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = KLevel*(UpgrMulti10*320);}}       else{SelectedCharacter = "Pls buy Kirie 1st. Price: ";              CharacterYenIncome = 3200;}}}
        else if(Greenfoot.mouseClicked(UpgradeButton10))     {if(!getObjects(Ebina.class).isEmpty())             {if(SelectedCharacter == "Ebina")            {if(AYen >= (ELevel*(UpgrMulti10*640)))   {AYen -= ELevel*(UpgrMulti10*200);   ULevel += 1; SelectedCharacter = "Ebina Income: ";}               else{SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = ELevel*(UpgrMulti10*640);}}       else{SelectedCharacter = "Pls buy Ebina 1st. Price: ";              CharacterYenIncome = 6400;}}}
        else if(Greenfoot.mouseClicked(UpgradeButton10))     {if(!getObjects(Umaru.class).isEmpty())             {if(SelectedCharacter == "Umaru")            {if(AYen >= (ULevel*(UpgrMulti10*1280)))  {AYen -= ULevel*(UpgrMulti10*200);   ULevel += 1; SelectedCharacter = "Umaru Income: ";}               else{SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = ULevel*(UpgrMulti10*1280);}}      else{SelectedCharacter = "Pls buy Umaru 1st. Price: ";              CharacterYenIncome = 12800;}}}
    }
}
danpost danpost

2018/5/5

#
The actor may be an Umaru type object, but unless you specifically named the actor Umaru, then it is just an unnamed actor of type Umaru. The value of a local variable (one declared within a method) is only accessible to outside code when the method itself returns the value of that variable. Otherwise, the object must retain the value in a field (a variable declared outside the method).
Lavenger Lavenger

2018/5/5

#
danpost wrote...
The actor may be an Umaru type object, but unless you specifically named the actor Umaru, then it is just an unnamed actor of type Umaru.
so i need to declare the YenPerMin as a field outside of the method, declare Umaru umaru = new Umaru(); in the fields and use umaru.YenPerMin instead of Umaru.GainYen().YenPerMin?
danpost danpost

2018/5/5

#
Lavenger wrote...
so i need to declare the YenPerMin as a field outside of the method
Yes.
declare Umaru umaru = new Umaru(); in the fields and use umaru.YenPerMin instead of Umaru.GainYen().YenPerMin?
No. Actually, I had missed something when looking over your MyWorld class code. It was not hard to do as (1) it was in a field of type Actor; (2) because of the way you string out your lines of code; and (3) because it is named exactly the same as the class itself. You do already have a field named Umaru which contains a Umaru object declared as type Actor. So, you can access the field (once you correct the first part with:
CharacterYenIncome = ((Umaru) Umaru).YenPerMin;
Lavenger Lavenger

2018/5/5

#
danpost wrote...
It was not hard to do as (1) it was in a field of type Actor; (2) because of the way you string out your lines of code; and (3) because it is named exactly the same as the class itself. You do already have a field named Umaru which contains a Umaru object declared as type Actor. So, you can access the field (once you correct the first part with:
CharacterYenIncome = ((Umaru) Umaru).YenPerMin;
if possible, can you explain it out in detail? i wish to hear more about what i did wrong and what measures do you usually take to avoid them so i can spot and deal with the problem with more ease...
danpost danpost

2018/5/6

#
Lavenger wrote...
if possible, can you explain it out in detail? i wish to hear more about what i did wrong and what measures do you usually take to avoid them so i can spot and deal with the problem with more ease...
I would not say you did anything wrong, although some things could be done better. Preferably, you do not want to name objects exactly as their Type -- that is, you should refrain from naming an object created from the class Umaru as Umaru. umaru would be so much better, as then it is obvious that it is a named object and not a class name. Method names and most variables should all begin with a lowercase letter to make it easier to distinguish them from class names, which should all begin with uppercase letters. You should also refrain from creating lines of code that extend far to the right. Normally one command per line is appropriate. Occasionally, in certain circumstances, it is okay to have two or three on the same line (like in switch cases or for one-line if blocks and the such). Often, you can combine multiple if conditions into one set of conditions. It looks like that in your last set of ifs for the upgrades you are using the exact same condition for all else parts. If the condition was ever true, the first block will run and the rest will be ignored. Maybe the else parts should be moved inside the starting if blocks. That is:
// instead of this structure
if (conditionA) { if (conditionB) { } }
else if (conditionA) { if (conditionC) { } }

// use this structure
if (conditionA)
{
    if (conditionB) { }
    else if (conditionC) { }
}
Lavenger Lavenger

2018/5/8

#
it seems like im getting a null pointer exception error as follows:
java.lang.NullPointerException
	at MgrKanau.<init>(MgrKanau.java:5)
	at MyWorld.<init>(MyWorld.java:29)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at greenfoot.core.Simulation.newInstance(Simulation.java:617)
	at greenfoot.localdebugger.LocalDebugger$QueuedInstantiation.run(LocalDebugger.java:155)
	at greenfoot.core.Simulation.runQueuedTasks(Simulation.java:502)
	at greenfoot.core.Simulation.maybePause(Simulation.java:305)
	at greenfoot.core.Simulation.runContent(Simulation.java:218)
	at greenfoot.core.Simulation.run(Simulation.java:211)
I think this is due to the world not being built at that point so it gets a null pointer exception while referring to an integer called MKLevel in the world class code to build it's own YenPerMin integer, or am i wrong about this? This is the updated world class 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 MKLevel = 0, HLevel = 0, ALevel = 0, SLevel = 0, BLevel = 0, KLevel = 0, ELevel = 0, ULevel = 0, TLevel = 0;
    private String SelectedCharacter;
    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(30,15); addObject(UpgradeButton1, 1262, 600);
        UpgradeButton5.setImage("Upgr5.png"); UpgradeButton5.getImage().scale(70, 70); UpgradeButton5.getImage().scale(30,15); addObject(UpgradeButton5, 1312, 600);
        UpgradeButton10.setImage("Upgr10.png"); UpgradeButton10.getImage().scale(70, 70); UpgradeButton10.getImage().scale(30,15); 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))
        {
            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))
        {
            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))
        {
            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))
        {
            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))
        {
            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))
        {
            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))
        {
            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))
        {
            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(SelectedCharacter == "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(SelectedCharacter == "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(SelectedCharacter == "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(SelectedCharacter == "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(SelectedCharacter == "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(SelectedCharacter == "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(SelectedCharacter == "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(SelectedCharacter == "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(SelectedCharacter == "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(SelectedCharacter == "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(SelectedCharacter == "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(SelectedCharacter == "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(SelectedCharacter == "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(SelectedCharacter == "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(SelectedCharacter == "Ebina")
            {
                if(!getObjects(Ebina.class).isEmpty())
                {
                    for(int i = 0; i<5; i++)
                    {
                        totalYen += (ELevel+(i+1))*640;
                    }
                    if(AYen >= totalYen) {AYen -= totalYen; ELevel += 1; SelectedCharacter = "Ebina Income: ";}
                    else {SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = totalYen;}
                }
                else {SelectedCharacter = "Pls buy Ebina 1st. Price: "; CharacterYenIncome = 6400;}
            }
            else if(SelectedCharacter == "Umaru")
            {
                if(!getObjects(Umaru.class).isEmpty())
                {
                    for(int i = 0; i<5; i++)
                    {
                        totalYen += (ULevel+(i+1))*1280;
                    }
                    if(AYen >= totalYen) {AYen -= totalYen; ULevel += 1; SelectedCharacter = "Umaru Income: ";}
                    else {SelectedCharacter = "Upgrade Price: "; CharacterYenIncome = totalYen;}
                }
                else {SelectedCharacter = "Pls buy Umaru 1st. Price: "; CharacterYenIncome = 12800;}
            }
        }
        if(Greenfoot.mouseClicked(UpgradeButton10))
        {
            if(SelectedCharacter == "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(SelectedCharacter == "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(SelectedCharacter == "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(SelectedCharacter == "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(SelectedCharacter == "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(SelectedCharacter == "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(SelectedCharacter == "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(SelectedCharacter == "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;}
            }
        }
    }
}
And this is the updated actor class code:
import greenfoot.*;
public class Umaru extends Actor
{
    MyWorld mw = (MyWorld)getWorld();
    int YenPerMin = mw.ULevel*8192;
    public void act() 
    {
        if(getWorld().getObjects(Umaru.class).size() != 0) GainYen();
    }
    public void GainYen() 
    {
        float YenAdjustment = 0; // every cycle this value will pe deposited onto the world's yen value
        Greenfoot.setSpeed(50);
        YenAdjustment += YenPerMin / 60f /50;
        mw.adjustYen(YenAdjustment);
        // When buying something, only subtract the price from AGold!
    }
}
there are 8 of these class codes that does the exact same thing, the only differences are that each of them has their own picture, the U in Ulevel is changed according the the initials of the actor name(SLevel for Sylphynford and MKLevel for MgrKanau ect.)
Yehuda Yehuda

2018/5/8

#
Show the MgrKanau class code.
Lavenger Lavenger

2018/5/8

#
Yehuda wrote...
Show the MgrKanau class code.
import greenfoot.*;
public class MgrKanau extends Actor
{
    MyWorld mw = (MyWorld)getWorld();
    int YenPerMin = mw.MKLevel*8192;
    public void act() 
    {
        if(getWorld().getObjects(MgrKanau.class).size() != 0) GainYen();
    }
    public void GainYen() 
    {
        float YenAdjustment = 0; // every cycle this value will be deposited onto the world's yen value
        Greenfoot.setSpeed(50);
        YenAdjustment += YenPerMin / 60f /50;
        mw.adjustYen(YenAdjustment);
        // When buying something, only subtract the price from AGold!
    }
}
danpost danpost

2018/5/8

#
Line 4 is a problem, but will not fail. It assigns to mw the world the new MgrKanau object is in before it is in a world; so, it is assigned a null value (because there is no world that it is in at that time). With that, line 5 will fail because you try to access a value from a non-existent object (mw = null).
Yehuda Yehuda

2018/5/9

#
Have lines 4 and 5 just be:
int yenPerMin;

// then add the following method into the class
protected void addedToWorld(World world) {
    yenPerMin = world.MKLevel * 8192;
}
I was going to post this yesterday (right after question was asked) but I was out of time.
There are more replies on the next page.
1
2