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

2018/11/21

Wie unterbreche ich eine Schleife, nachdem eine bestimmte Anzahl Actors vertreten ist?

DML DML

2018/11/21

#
public void steuern()
    {
        int rot = getRotation();
        posY = getY(); posX = getX();
        int actors = getWorld().numberOfObjects();

        while(actors <= 2){     [b]hier fängt die Schleife an, die ich unterbrechen will, sobald 2 Actors da sind[/b]
            while(Greenfoot.isKeyDown("right")){
                turnTowards(posX++, posY);
                if(!markeVorhanden())
                {
                    setzeMarke(); gehe();
                }
                else
                {
                    gehe();
                }}

            while(Greenfoot.isKeyDown("left")){
                turnTowards(posX--, posY); 
                if(!markeVorhanden())
                {
                    setzeMarke(); gehe();
                }
                else
                {
                    gehe();
                }
            }

            while(Greenfoot.isKeyDown("up")){
                turnTowards(posX, posY--);
                if(!markeVorhanden())
                {
                    setzeMarke(); gehe();
                }
                else
                {
                    gehe();
                }}

            while(Greenfoot.isKeyDown("down")){
                turnTowards(posX, posY++);
                if(!markeVorhanden())
                {
                    setzeMarke(); gehe();
                }
                else
                {
                    gehe();
                }}

            while(Greenfoot.isKeyDown("n")){
                wachsen(); Greenfoot.delay(1);}

            while(Greenfoot.isKeyDown("m")){
                schrumpfen(); Greenfoot.delay(1);}
                
            if(actors >= 2)
            {
            getWorld().addObject(new Display(),7,0);
            nachricht("Geschafft!"); Greenfoot.delay(5);
            }
        }     [b]hier endet die Schleife[/b]

        getWorld().addObject(new Display(),7,0);
        
    }
Super_Hippo Super_Hippo

2018/11/21

#
Zeile 5 wird ausgeführt, sodass "actors" ein Wert zugewiesen wird. Wenn nun innerhalb der Schleife weitere Objekte in die Welt gesetzt werden, wird dieser Wert nicht automatisch geändert. Ich verstehe nicht wirklich, was du mit den ganzen while-Schleifen vor hast, aber für die Lösung deines ursprünglichen Problems musst du entweder die Variable anpassen, wenn du ein Objekt entfernst (actors--) bzw. hinzufügst (actors++) oder du entfernst die Variable und ersetzt sie in Zeile 7 durch den Ausdruck in Zeile 5, sodass die Anzahl der Objekte vor jedem Durchlauf überprüft wird.
DML DML

2018/11/23

#
Danke :) Jetzt funktioniert es.
You need to login to post a reply.