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

2018/12/6

Variablen speichern und übergeben

Hässelhoff Hässelhoff

2018/12/6

#
Mann soll zwischen 2 Leveln wechseln können, welche beinah gleich aufgebaut sind, aber ein Hinderniss verschoben ist, so das man nur durch dieses Wechseln zum Ziel kommt. Jedoch wird die variable, welche für die Spieler Position zuständig ist immer wieder zurückgesetzt, sobald man in ein neues Level kommt.
    public void addedToWorld(World world) {
            if(!(getWorld() instanceof Level6))
        {
        startPosition(); //auf Anfangsposition setzen, geschieht zu Beginn jedes Levels
    }
    else
    {
       setLocation(xOld,yOld);
    }
    }
 public void act() 
    {
       if (Greenfoot.isKeyDown("left")||Greenfoot.isKeyDown("a")){
            setLocation(getX()-step,getY()); //einen schritt nach links bewegen
        }
        if (Greenfoot.isKeyDown("right")||Greenfoot.isKeyDown("d")){
            setLocation(getX()+step,getY()); //einen schritt nach rechts bewegen
        }
       if (getWorld() instanceof Level5 && Greenfoot.isKeyDown("Space") && afr == true) {//wenn die  Aktuelle Welt eine Level2 ist
              xOld = getX();
              yOld = getY();
              nextLevel();
        } 
 public void nextLevel()
    {
if (getWorld() instanceof Level5) {//wenn die  Aktuelle Welt eine Level2 ist
            Greenfoot.setWorld(new Level6()); //mache sie zu einer Level3-Welt
        }

    }  
Ich möchte bei addedToWorld und setLocation(xOld,yOld); die Werte von dem alten Level einfügen, jedoch werden sie zu beginn immer auf 0 gesetzt. Was auch gehen würde, wäre den Spieler (Player) beim positionieren in die Welt auf die richtigen Koordinaten zu setzen, leider weiß ich ebenfalls nicht wie.
danpost danpost

2018/12/6

#
Do not create a new player object when changing worlds. Create all secondary levels without a player and transfer the same player from world to world. For example, something like this (for in the class of the player):
World nextWorld = new Level2();
nextWorld.addObject(this, 0, 0);
You need to login to post a reply.