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

2020/4/27

How do I change a classes integer inside of the world

elamjeul elamjeul

2020/4/27

#
Inside one of my classes ElevatorDoors there is a interger Elevatorframe public int Elevatorframe = 1; Inside of my world class MainMenu I am trying to change Elevatorframe back to 1 so the doors open again when a certain class dies. I tried int ElevatorFrame = ((ElevatorDoors)(getObjects(ElevatorDoors.class).get(0))).ElevatorFrame(); but could not get it to work public void removeLives() { lives--; showLives(); Akari akari = new Akari(); addObject(akari,67,200); if(lives == 0 ) { Greenfoot.setWorld(new GameOver()); } }
danpost danpost

2020/4/27

#
What code do you have for the ElevatorFrame() method in your ElevatorDoors class?
elamjeul elamjeul

2020/4/27

#
import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
/**
 * Write a description of class Elevator here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class ElevatorDoors extends Interactables
{
    private GreenfootImage Elevator1 = new GreenfootImage("ELEVATOR1.png");
    private GreenfootImage Elevator2 = new GreenfootImage("ELEVATOR2.png");
    private GreenfootImage Elevator3 = new GreenfootImage("ELEVATOR3.png");
    private GreenfootImage Elevator4 = new GreenfootImage("ELEVATOR4.png");
    private GreenfootImage Elevator5 = new GreenfootImage("ELEVATOR5.png");
    private GreenfootImage Elevator6 = new GreenfootImage("ELEVATOR6.png");
    private GreenfootImage Elevator7 = new GreenfootImage("ELEVATOR7.png");
    private GreenfootImage Elevator8 = new GreenfootImage("ELEVATOR8.png");
    private GreenfootImage Elevator9 = new GreenfootImage("ELEVATOR9.png");
    private GreenfootImage Elevator10 = new GreenfootImage("ELEVATOR10.png");
    private GreenfootImage Elevator11 = new GreenfootImage("ELEVATOR11.png");
    private GreenfootImage Elevator12 = new GreenfootImage("ELEVATOR12.png");
    private GreenfootImage Elevator13 = new GreenfootImage("ELEVATOR13.png");
    private GreenfootImage Elevator14 = new GreenfootImage("ELEVATOR14.png");
    private GreenfootImage Elevator15 = new GreenfootImage("ELEVATOR15.png");
    private GreenfootImage Elevator16 = new GreenfootImage("ELEVATOR16.png");
    private GreenfootImage Elevator17 = new GreenfootImage("ELEVATOR17.png");
    private GreenfootImage Elevator18 = new GreenfootImage("ELEVATOR18.png");
    public int Elevatorframe = 1;
    public void act() 
    {
        open();
    }   
    public void open(){
        Elevatorframe++;
        if(Elevatorframe == 11)
        {
            setImage(Elevator1);
        }
        else if (Elevatorframe == 12)
        {
            setImage(Elevator2);
        }
                else if (Elevatorframe == 13)
        {
            setImage(Elevator3);
        }
                else if (Elevatorframe == 14)
        {
            setImage(Elevator4);
        }
                else if (Elevatorframe == 15)
        {
            setImage(Elevator5);
        }
                else if (Elevatorframe == 16)
        {
            setImage(Elevator6);
        }
                else if (Elevatorframe == 17)
        {
            setImage(Elevator7);
        }
                else if (Elevatorframe == 18)
        {
            setImage(Elevator8);
        }
                else if (Elevatorframe == 19)
        {
            setImage(Elevator9);
        }
                else if (Elevatorframe == 20)
        {
            setImage(Elevator10);
        }
                else if (Elevatorframe == 21)
        {
            setImage(Elevator11);
        }
                else if (Elevatorframe == 22)
        {
            setImage(Elevator12);
        }
                else if (Elevatorframe == 23)
        {
            setImage(Elevator13);
        }
                else if (Elevatorframe == 24)
        {
            setImage(Elevator14);
        }
                else if (Elevatorframe == 25)
        {
            setImage(Elevator15);
        }
                else if (Elevatorframe == 26)
        {
            setImage(Elevator16);
        }
                else if (Elevatorframe == 27)
        {
            setImage(Elevator17);
        }
                else if (Elevatorframe == 28)
        {
            setImage(Elevator18);
        }   
    }
    }

danpost danpost

2020/4/27

#
elamjeul wrote...
<< Code Omitted >>]
I do not see an ElevatorFrame method in this class. Would it be in your Interactables class or is it that there is no method called ElevatorFrames -- only a field?
elamjeul elamjeul

2020/4/27

#
Yeah right sorry, only a field
danpost danpost

2020/4/27

#
elamjeul wrote...
Yeah right sorry, only a field
Then, you were sort of close with your initial line; only, I do not see how that could possibly be an attempt to set its value back to 1. Try:
((ElevatorDoors)getObjects(ElevatorDoors.class).get(0)).Elevatorframe = 1;
danpost danpost

2020/4/27

#
Your ElevatorDoors class can be simplified to:
import greenfoot.*;

public class ElevatorDoors extends Interactables
{
    private GreenfootImage[] elevators = new GreenfootImage[18];
    private int frame = 1;
    
    public ElevatorDoors()
    {
        for (int i=0; i<18; i++) elevators[i] = new GreenfootImage("ELEVATOR"+(i+1)+".png");
    }
    
    public void act()
    {
        open();
    }
    
    private void open()
    {
        if (frame < 28)
        {
            frame++;
            if (frame > 10) setImage(elevators[frame-10];
        }
    }
}
elamjeul elamjeul

2020/4/27

#
You never cease to amaze me danpost, thanks for the help I really do appreciate it. And the simplification was something that someone else just suggested to me while i was streaming coding so that really helps a lot man!
elamjeul elamjeul

2020/4/27

#
import greenfoot.*;
 
public class ElevatorDoors extends Interactables
{
    public int Elevatorframe = 1;
    private GreenfootImage[] allFrames = new GreenfootImage[18];
    public ElevatorDoors()
    {
        for (int i=0; i<18; i++) allFrames[i] = new GreenfootImage("ELEVATOR"+(i+1)+".png");
    }
     
    public void act()
    {
        Elevatorframe++;
        if(Elevatorframe<allFrames.length){
            setImage(allFrames[Elevatorframe]);
        }
    }
}
Did a little bit of adjustment and such
You need to login to post a reply.