Zobacz pojedynczy post  Temat: Unreal Engine 1 Unreal Script 6 Pętle i instrukcja GoTo 
Autor Wiadomość
Raven
Admin
Admin


PostWysłany: Nie Gru 02, 2007 6:53 pm    Temat postu: Unreal Engine 1 Unreal Script 6 Pętle i instrukcja GoTo Odpowiedz z cytatem

Pętle
     Pętle służą do wykonywania wielokrotnie danej części kodu. Podczas ich stosowania należy pamiętać, żeby liczba powtórzeń nie była zbyt duża, gdyż spowoduje to błąd krytyczny UT.

Kod:
Error: "Runaway loop detected (over 100000 iterations)"


Pętla for
     Pętla for ma postać:

Unreal Script:
  1. for(ustalenie_początku; warunek_pętli; zwiększenie_licznika;)
  2. {
  3.      blok instrukcji
  4. }


     i służy do wykonania N razy danego bloku instrukcji. Jest przydatna np. w momencie gdy chcemy odczytać wartości z tablicy:

Unreal Script:
  1. local int i;
  2. for(i=0; i<20; i++;)
  3. {
  4.      BroadCastMessage("Petla for"$i);
  5. }


Pętla while

     Pętla while ma postać:

Unreal Script:
  1. while (warunek)
  2. {
  3.      blok instrukcji
  4. }


i w przeciwieństwie do pętli for można ją wykonywać bez określenia liczby jej powtórzeń - tzn., że może być wykonywana dopóki nie otrzymamy żądanego przez nas wyniku (np. odpowiedniego obiektu).

Unreal Script:
  1. while (i<10)
  2. {
  3.      i++;
  4. }


Instrukcja GoTo
     Jest to jedna z tych użytecznych instrukcji z którymi należy umieć się obchodzić. Powoduje ona skok do określonego miejsca w funkcji. Składa się ona z etykiety np.:

Unreal Script:
  1. Etykieta1:


     Która rozpoczyna dany blok funkcji, oraz instrukcji skoku np.:

Unreal Script:
  1. GOTO Etykieta1;


     Należy pamiętać, że nie można wykonać skoku do etykiet w innej funkcji. Niezwykle ważne także właściwe wykorzystanie. Nie można dopuścić aby instrukcja GOTO wpadała w nieskończone pętle:

Unreal Script:
  1. Etykieta1:
  2.   BroadCastMessage("Moja pierwsza instrukcja goto");
  3.   GOTO Etykieta1;


Coś takiego spowoduje następujący błąd:

Kod:
Error: "Runaway loop detected (over 100000 iterations)"


     Należy zatem wprowadzić jakieś ograniczenie, pozwoli zapobiec temu błędowi, np.:

Unreal Script:
  1. Etykieta1:
  2.   BroadCastMessage("Moja pierwsza instrukcja goto");
  3.   if(i<10)
  4.   {
  5.      i++;
  6.      GOTO Etykieta1;
  7.   }


     W tej postaci instrukcja warunkowa pozwoli tylko na 10 kolejnych wywołań instrukcji GOTO. Lekko zmieniona wersja tej instrukcji zostanie omówiona przy okazji stanów.
_________________

personal wiki
Zobacz profil autora Wyślij prywatną wiadomość Wyślij email Odwiedź stronę autora Numer GG Tlen Numer ICQ

Powered by phpBB © 2001,2002 phpBB Group