IF-Forum

» IF-Forum - Autorencafé - Schreiben! - Probleme mit if-Anweisung
AntwortenNeues ThemaNeue Umfrage

Probleme mit if-Anweisung

Geschrieben um 09:33 am 03.06.2011 | Zitat | Editieren | Löschen
Lukas
Mitglied
Bachelor Gumby
Beiträge: 42

In einem Raum meines Spieles habe ich folgende Abfrage mit if konstruiert:


class start:stdroom

{

    ...

    int gone_north=0;

    void goto(int dir, object x)

   {

      switch (dir)

            {

                 case(D_NORTH);

                   if(objekt.in(spieler) && !gone_north)

            {

               write("Text 1^");

               gone_north=1;

            }

            if(objekt.in(spieler) && gone_north)

            {

               write("Text 2^");

            }

            if (!objekt.in(spieler))   

            {         

                write("Text 3^");

             }

             break;

                  ...

Wenn jetzt allerdings der Spieler das Objekt hat, wird immer gar nichts ausgegeben. Nur Text 3 wird ausgegeben, wenn sich das Objekt nicht im Inventar befindet.

Ich habe jetzt die Abfrage anders konstruiert, in dem ein Ausgabestring je nach Bedingung mit "? :" einen anderen Wert zugewiesen bekommt, wenn der Spieler das Objekt im Inventar hat. Das funktioniert jetzt, aber was habe ich bei obiger Konstruktion falsch gemacht, dass sie nicht funktionierte?

Geschrieben um 12:27 am 03.06.2011 | Zitat | Editieren | Löschen
Sophie
Mitglied
Bachelor Gumby
Beiträge: 61

Deine Variable heißt 'object', aber du fragst nach 'objekt'? :)

Geschrieben um 13:27 am 03.06.2011 | Zitat | Editieren | Löschen
Lukas
Mitglied
Bachelor Gumby
Beiträge: 42

Sophie:

Deine Variable heißt 'object', aber du fragst nach 'objekt'? :)

Das sind in der Tat zwei verschiedene Variabeln, die soweit ich weiß nichts miteinander zu tun haben. Die Variable heißt auch x und ist vom Typ object - du hast den Quellcode falsch gelesen, glaube ich. Im Original heißt das Objekt "objekt" auch anders - ich habe nur hier fürs Forum alles "anonymisiert" ;o) ...

Geschrieben um 19:59 am 04.06.2011 | Zitat | Editieren | Löschen
Oliver Berse
Mitglied
Bachelor Gumby
Beiträge: 47

Die genannten Fehler mit der Statuszeile und den Abfragen sind in der neuen Version 3.0.4 behoben. Daneben gibt es noch ein paar Detailverbesserungen, Programmdateien für Windows und Mac und für Interessierte auch den Quelltext des Interpreters:

http://www.oliver-berse.de/

Geschrieben um 20:13 am 04.06.2011 | Zitat | Editieren | Löschen
Oliver Berse
Mitglied
Bachelor Gumby
Beiträge: 47

Zitat:

Das funktioniert jetzt, aber was habe ich bei obiger Konstruktion falsch gemacht, dass sie nicht funktionierte?

Bei der Auswertung des Operators ! in den Abfragen konnte leider ein Fehler auftreten. Das folgende Beispiel funktioniert jetzt:



class raum:stdroom {

   

   setShort("+Raum");

   setLong("Ein Raum.^");

   

   void goto(int dir, object x) {

      

      int north = 0;

      

      switch(dir) {

         case(D_NORTH);

            if (dings.in(spieler) && !north) {

               write("Text 1^");

               north = 1;

            }

                  

            if( dings.in(spieler) && north) {

               write("Text 2^");

            }

                  

            if (!dings.in(spieler)) {         

               write("Text 3^");

            }

                  

            break;     

         

         default;

            write("Stopp!^");         

      }

   }

}

class dings:stditem {

   setShort("Dings");

   moveto(spieler);

}

class spieler:stdcreature {

   moveto(raum);

}

void main() {

   setPlayer(spieler);

}```
Geschrieben um 17:23 am 05.06.2011 | Zitat | Editieren | Löschen
Oliver Berse
Mitglied
Bachelor Gumby
Beiträge: 47

Der Fehler im not-Operator hat ein weiteres Update notwendig gemacht, aktuell ist jetzt 3.0.4a.

AntwortenNeues ThemaNeue Umfrage
Powered by Spam Board SVN © 2007 - 2021
Impressum / Datenschutz