SWiSH Forum Strona Główna SWiSH Forum
Forum użytkowników programów SWiSH

FAQFAQ  SzukajSzukaj  UżytkownicyUżytkownicy  GrupyGrupy  StatystykiStatystyki
RejestracjaRejestracja  ZalogujZaloguj  DownloadDownload

Poprzedni temat «» Następny temat
Lekcja 20. Instrukcja warunkowa if ()
Autor Wiadomość
roland 
Site Admin
Roland Zimek



Wersja SWiSH: Max4
Pomógł: 31 razy
Wiek: 58
Dołączył: 21 Sty 2005
Posty: 424
Skąd: Opole
Wysłany: Sro 07 Wrz, 2005 10:41   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 <>)

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="400" height="200">
<param name="movie" value="http://swish.wodip.opole.pl/forum/_screen/script_zamalo_zaduzo.swf">
<param name="quality" value="high">
<embed src="http://swish.wodip.opole.pl/forum/_screen/script_zamalo_zaduzo.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="400" height="200"></embed>
</object>

Spróbuj rozbudować skrypt tak, by wyświetlał informację o tym, za którym razem udało się odgadnąć liczbę.
 
     
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  


Powered by phpBB modified by Przemo © 2003 phpBB Group
Nowe zasady dotyczące cookies. Wykorzystujemy pliki cookies, aby nasz serwis lepiej spełniał Państwa oczekiwania. Można zablokować zapisywanie cookies, zmieniając ustawienia przeglądarki.
         
Strona wygenerowana w 0.15 sekundy. Zapytań do SQL: 14