Βρόχοι και εντολές break, continue και switch


Τα WME scripts υποστηρίζουν δύο ήδη βρόχων: for και while.

Βρόχοι for

Η εντολή for ορίζει μία αριθμητική μεταβλητή, μία συνθήκη ελέγχου και μία πράξη που αλλάζει και ενημερώνει την αριθμητική μεταβλητή. Πριν από κάθε επανάληψη του βρόχου ελέγχεται το αληθές της συνθήκης. Αν είναι θετικό ο κώδικας μέσα στο βρόχο εκτελείται. Αν όχι ο κώδικας δεν εκτελείται και το πρόγραμμα συνεχίζει από την πρώτη γραμμή που ακολουθεί τον βρόχο. Κάθε φορά που εκτελείται ο βρόχος η αριθμητική μεταβλητή αλλάζει πριν την επόμενη επανάληψη.

Ένα τυπικό παράδειγμα βρόχου από το 9 εώς το 9:

for(var i=0; i<10; i=i+1)
{
  // ... κάποιος κώδικας
}

Σημείωση: η WME προς το παρόν δεν υποστηρίζει τους μαθηματικούς συντελεστές "++" και "--".

Βρόχοι while

Ένας βρόχος while είναι παρόμοιος με έναν for. Η διαφορά τους είναι ότι ο βρόχος while δεν περιλαμβάνει μία προκαθορισμένη μεταβλητή ούτε μία πράξη ενημέρωσης αυτής. Ο κώδικας μέσα στο βρόχο εκτελείται διαρκώς εώς ότου η προκαθορισμένη συνθήκη γίνει θετική.

Παράδειγμα:

var MyVar = 5;
while(MyVar > 0)
{
  MyVar = MyVar - 1;
}

Εντολές break και continue

Η εντολή break χρησιμοποιείται για την διακοπή ενός βρόχου.
Η εντολή continue ξαναρχίζει τον βρόχο από την αρχή χωρίς να εκτελεστεί ο υπόλοιπος κώδικας που βρίσκεται μέσα σε αυτόν.

Παράδειγμα:

actor.GoToAsync(100, 200);
while(true) // βρόχος χωρίς τέλος
{
  if(actor.Ready) break; // σταμάτα τον βρόχο while όταν ο χαρακτήρας σταματήσει να περπατά
  Sleep(20); // σε αντίθετη περίπτωση επιστρέφει τον έλεγχο στη μηχανή και συνεχίζει με τον βρόχο
}

Η εντολή switch

Η εντολή switch επιτρέπει την εκτέλεση ενός ή περισσοτέρων τμημάτων κώδικα όταν μια δοσμένη τιμή είναι ίδια με έναν τίτλο.

switch (τιμή)
{

   case label :
       statementlist
   case label :
       statementlist
   ...
   default :
       statementlist
}

Η "τιμή" είναι η τιμή που ελέγχεται απέναντι στα "labels" (τίτλοι). Όταν ένας από τους τίτλους είναι ίδιος με την τιμή τότε ο κώδικας που ακολουθεί εκτελείται εώς ότου μία εντολή break τον διακόψει ή μέχρι να φτάσει στο τέλος της εντολής switch.

Αν κανένας από τους τίτλους δεν είναι ίσος με την τιμή τότε εκτελείτε ο κώδικας που ακολουθεί το default. Το τμήμα default πρέπει να βρίσκεται στο τέλος της λίστας.

Παράδειγμα:

switch (Color)
{
  case "black":
    actor.Talk("Τρομαχτικό");
  break;

  case "red":
    actor.Talk("Διασκεδαστικό");
  break;

  case "yellow":
    actor.Talk("Φωτεινό");
  break;

  default:
    actor.Talk("Ουδέτερο");
}