SWiSH Forum
Forum użytkowników programów SWiSH

Podstawy języka skryptowego - Lekcja 20. Instrukcja warunkowa if ()

roland - Sro 07 Wrz, 2005 11:41
Temat postu: Lekcja 20. Instrukcja warunkowa if ()
Do tej pory nasze skrypty musiały przebiegać liniowo, to znaczy były wykonywane po kolei jeden wiersz po drugim. Czasami zachodzi jednak konieczność pominięcia lub wykonania pewnych innych instrukcji w zależności od zaistniałej sytuacji. W ten sposób możemy utworzyć rozgałęzienie skryptu.
Gdy określony przez nas warunek zostanie spełniony, to zostaną wykonane jedne instrukcje, a w przeciwnym razie drugie.

Naszą animacją w której przećwiczymy taką instrukcję warunkową jest popularna gra „Za mało, za dużo”. Będziemy musieli zgadnąć liczbę którą wylosował komputer. Ale za nim zaczniemy, powiedzmy sobie w jaki sposób skrypt może wylosować liczbę. Posłużymy się prostą funkcją Math.randomInt(). Na przykład zapis:
Math.randomInt(10)
spowoduje wylosowanie liczby z zakresu od 0 włącznie do 9 włącznie.

Funkcja ta zawsze losuje od 0 włącznie do podanej przez nas liczby (ale bez niej) wartości całkowite. Fakt, iż losuje ona zawsze od zera, nie ogranicza nas gdy będziemy chcieli wylosować liczbę, przykładowo z zakresu od 1 do 6 (czyli symulacja rzutu kostką do gry). Możemy to zrealizować w następujący sposób:
Math.randomInt(6)+1

Oczywiście w ten sposób wylosowaną liczbę zawsze będziemy musieli podstawić pod zmienną lub wykorzystać w warunku.

Przejdźmy zatem do realizacji naszego przykładu. Utwórz pole tekstowe w którym użytkownik będzie miał możliwość wpisania liczby, nazwijmy je Liczba. Tworzymy także obiekt na którym będziemy musieli kliknąć, aby skrypt sprawdził, czy wpisaliśmy poprawną wartość, oraz pole tekstowe w którym podamy czy udało się trafić w wylosowaną liczbę (niech się nazywa Odpowiedz).

Następnie wybieramy w zakładce Outline, Scene_1 i wpisujemy następujący kod:
Kod:
onLoad () {
    Losowa=Math.randomInt(101);
}

w ten sposób zaraz po uruchomieniu animacji zostanie wylosowana liczba i podstawiona pod zmienną o nazwie Losowa.

Teraz wskazujemy obiekt na którym użytkownik będzie mógł kliknąć i przypisujemy mu skrypt:
Kod:
on (press) {
    if (Number(Liczba.text)==Losowa) {
        Odpowiedz.text="Zgadłeś";
    }
}

w ten sposób po kliknięciu na nim instrukcja warunkowa if () sprawdzi czy wpisana została w polu Liczba poprawna wartość. Jeżeli warunek Number(Liczba.text)==Losowa okaże się prawdziwy, to zostanie wykonane polecenie Odpowiedz.text="Zgadłeś";. Gdyby jednak została podana niepoprawna liczba to instrukcja warunkowa if () nie wykona zawartego w niej polecenia, gdyż warunek okazał się fałszywy.
Zwróć uwagę także na fakt, że sprawdzenie zostało zrealizowane przy pomocy podwójnego znaku równości (==). gdyż pojedynczy znak równości (=) służy jedynie do przypisania jednej zmiennej pod inną.

Składnia instrukcji warunkowej if () jest następująca:
if (warunek) {instrukcje}
gdzie:
    • warunek – jest zapisem warunku który instrukcja sprawdza,
    • instrukcje – są instrukcjami do wykonania w przypadku prawdziwego warunku.


Niestety nasz skrypt nie wyświetli żadnego komunikatu, gdy podana zostanie niewłaściwa liczba. Powinniśmy więc sprawdzić także pozostałe sytuacje:
Kod:
on (press) {
    if (Number(Liczba.text)<Losowa) {
        Odpowiedz.text="Za mało";
    }
    if (Number(Liczba.text)>Losowa) {
        Odpowiedz.text="Za dużo";
    }
    if (Number(Liczba.text)==Losowa) {
        Odpowiedz.text="Zgadłeś. Możesz zagrać ponownie";
        Losowa=Math.randomInt(101);
    }
}

Dodatkowo, gdy użytkownik zgadnie liczbę, wpisane zostało polecenie umożliwiające rozpoczęcie zabawy od nowa poprzez wylosowanie nowej wartości. Możesz pobrać powyższy przykład w postaci pliku na końcu tej lekcji.

W warunkach możesz używać między innymi następujących operatorów:
    == – jest równe,
    < – jest mniejsze niż,
    > – jest większe niż,
    <= – jest mniejsze niż lub równe,
    >= – jest większe niż lub równe,
    <> – jest różne od
    != – jest różne od (działa identyczne jak <>)







Spróbuj rozbudować skrypt tak, by wyświetlał informację o tym, za którym razem udało się odgadnąć liczbę.


Powered by phpBB modified by Przemo © 2003 phpBB Group