2.7. Mysz w labiryncie

Scenariusz gry

Pewnie nie raz bawiliście się grą, w której bohater musiał przejść przez jakiś labirynt, wykonując określone zadania - np. zebrać skarby, uniknąć spotkania z groźnymi przeciwnikami i dotrzeć do określonego celu. Twoje zadanie będzie polegało na stworzeniu podobnej gry.
Najpierw zastanów się nad scenariuszem gry, bohaterami, którzy w niej wystąpią, nad tym, co będzie ich zadaniem i jakie przeszkody napotkają. Musisz także pomyśleć, jak będzie wyglądała plansza gry, a następnie opisać wszystkie czynności, które powinien wykonywać komputer.
Zacznij od projektu, w którym występuje myszka (steruje nią gracz). Jej zadanie polega na pokonaniu labiryntu i zdobyciu jabłka. Sceneria gry będzie przypominać szachownicę. Gracz może przesunąć myszkę za każdym razem o jedno pole oraz zmienić kierunek, w którym myszka będzie się poruszała. Na planszy wystąpią pola w dwóch kolorach - zielonym i czerwonym. Zielony będzie oznaczał korytarz, czyli pola, po których myszka może się poruszać, a czerwony - ściany, czyli pola, niedostępne dla myszki. Gracz wygrywa, gdy doprowadzi myszkę do jabłka ukrytego w labiryncie.

Zadanie 2.7.1.

Zastanów się, czym powinno być jabłko, które ma zdobyć myszka. Rysunkiem, który wykonasz na scenie, drugim duszkiem – a może masz inne pomysły? Pomyśl i przedyskutuj z kolegami oraz nauczycielem, co będzie najlepszym rozwiązaniem.
Jeśli jabłko będzie dodatkowym duszkiem, można będzie łatwo zmieniać jego położenie na planszy i rozbudować grę o dodatkowe poziomy - np. o labirynt o innym układzie ścian. Grę będzie można również utrudnić przez zmianę pozycji jabłka po ustalonym czasie, jeśli myszka nie zdąży do niego dotrzeć wcześniej.

Zadanie 2.7.2.

Uruchom program Scratch i wczytaj do niego planszę z labiryntem jako nowe tło sceny. Pamiętaj o usunięciu domyślnego, białego tła. Plik z planszą możesz pobrać poniżej.

Zadanie 2.7.3.

Usuń domyślnego duszka – kotka. Dodaj z galerii duszki z postaciami myszki oraz jabłka. Zmień ich nazwy odpowiednio na: Myszka oraz Jabłko. Ustaw ich rozmiar w taki sposób, by w całości mieściły się na pojedynczym polu planszy.

Uwaga

Pamiętaj, żeby zapisać swój projekt - np. pod nazwą Labirynt 1. Następne wersje projektu możesz zapisywać, zmieniając jedynie numer w nazwie na kolejny. Dzięki temu będziesz mógł wrócić do dowolnej, wcześniejszej wersji.

Zasady gry i przepis dla komputera

Mając gotowy scenariusz, musisz uszczegółowić wszystkie czynności, które będzie wykonywał komputer. To znaczy, że powinieneś określić, kiedy i w jaki sposób komputer ma reagować, aby gra działała dokładnie tak, jak chcesz.

Zadanie 2.7.4.

Zastanów się, jakie czynności powinien wykonywać komputer w tej grze, czyli co trzeba zaprogramować. Podziel je na trzy kategorie:
  1. 1.
    czynności startowe (wszystkie czynności wykonywane przed rozpoczęciem gry, np. po wciśnięciu zielonej flagi),
  2. 2.
    sterowanie (jak gracz będzie poruszał myszką),
  3. 3.
    zdarzenia w grze (co ma się stać, np. gdy myszka dotrze do jabłka).
Zapisz przemyślenia na kartce, następnie przedyskutuj je z koleżankami, kolegami i nauczycielem.
  1. 1.
    Czynności startowe:
  • ustawienie myszki na polu startowym,
  • ustawienie jabłka na wybranym polu.
  1. 1.
    Sterowanie:
  • przesunięcie myszki o jedno pole do przodu,
  • obrót myszki w lewo.
  • obrót myszki w prawo.
  1. 1.
    Zdarzenia:
  • co się stanie, gdy myszka zostanie wprowadzona na czerwone pole,
  • co się stanie, gdy myszka dotrze do jabłka.

Zadanie 2.7.5.

Do ustawienia duszków myszki oraz jabłka na pozycjach startowych możesz wykorzystać znany ci klocek idź do x: … y: … . Zastanów się i oblicz wartości x oraz y, które pozwolą umieścić postaci na środku tych samych pól, co na przykładowej planszy poniżej. Wpisz i sprawdź swoją odpowiedź.

Zadanie 2.7.6.

Zadanie 2.7.7.

Zadanie 2.7.8.

Zastanów się, co ma się stać, gdy myszka wejdzie na czerwone pole. Zanotuj swoje pomysły, a następnie przedyskutuj je z nauczycielem, z koleżankami i kolegami.
Na pewno masz wiele pomysłów. Na początek jednak zrealizuj prosty plan. Kiedy myszka znajdzie się na czerwonym polu:
  • niech wyda dźwięk (np. bird z biblioteki dźwięków),
  • wróci na poprzednie pole.
Zachowaj jednak swoje pomysły - przydadzą się później.

Zadanie 2.7.9.

Zastanów się, co ma się stać, gdy myszka dotrze do jabłka. Zanotuj swoje pomysły, a następnie przedyskutuj je z nauczycielem, koleżankami i kolegami.
Na pewno masz wiele pomysłów. Na początek jednak zrealizuj prosty plan. Kiedy duszek - myszki dotrze do jabłka niech:
  • wyświetli w komiksowym dymku napis: „Hura - wygrałam”,
  • zakończy działanie wszystkich skryptów.
Zachowaj jednak swoje pomysły - przydadzą się później.

Zadanie 2.7.10.

Zastanów się, jakie klawisze wykorzystasz do sterowania duszkiem - myszką. Zanotuj swoje pomysły, a następnie przedyskutuj je z nauczycielem, koleżankami i kolegami.
Na przykład:
strzałka w prawo: obróć o 90 stopni w prawo,
strzałka w lewo: obróć o 90 stopni w lewo,
spacja: przesuń o jedno pole (czyli 40 kroków).

Tworzenie skryptów duszków

Wykonując poprzednie zadania, ustaliłeś następujące reguły dotyczące gry:
  1. 1.
    Czynności startowe
  • Ustawienie myszki na polu startowym (np. x: -180 y: 120).
  • Ustawienie jabłka na odpowiednim polu (np. x: -180 y: -80).
  1. 1.
    Sterowanie
  • Strzałka w prawo: obróć o 90 stopni w prawo.
  • Strzałka w lewo: obróć o 90 stopni w lewo.
  • Spacja: przesuń o jedno pole (czyli 40 kroków).
  1. 1.
    Zdarzenia
  • Jeśli myszka zostanie wprowadzona na czerwone pole:
    • wyda dźwięk bird (dostępny w galerii dźwięków),
    • cofnie się na poprzednie pole.
  • Jeśli myszka dotrze do jabłka:
    • wyświetli w dymku komiksowym „Hura! Wygrałam”,
    • zakończy działanie wszystkich skryptów.
Należy jeszcze ustalić, w którym miejscu skryptów powinna nastąpić kontrola zdarzeń, czyli sprawdzenie, czy myszka nie weszła na czerwone pole lub nie znalazła jabłka. Zacznij jednak od utworzenia skryptów, które zrealizują czynności startowe oraz sterowanie. Później dodasz obsługę zdarzeń.

Zadanie 2.7.11.

Stwórz skrypt dla myszki, który po wciśnięciu zielonej flagi ustawi duszka - myszkę na pozycji startowej. Wykorzystaj obliczenia z poprzednich zadań. Nie zapomnij zakończyć działania tego skryptu. Przetestuj działanie skryptu i sprawdź, czy duszek znalazł się na pozycji startowej po wciśnięciu zielonej flagi.

Zadanie 2.7.12.

Stwórz skrypt dla jabłka, który po wciśnięciu zielonej flagi ustawi duszka - jabłko na wybranym polu w labiryncie. Wykorzystaj obliczenia z poprzednich zadań. Przetestuj działanie skryptu i sprawdź, czy duszek znalazł się na wybranym polu po wciśnięciu zielonej flagi.

Zadanie 2.7.13.

Stwórz skrypty sterujące duszkiem - myszką zgodnie z ustaleniami z poprzednich zadań.
  • Strzałka w prawo: obróć o 90 stopni w prawo.
  • Strzałka w lewo: obróć o 90 stopni w lewo.
  • Spacja: przesuń o jedno pole (czyli 40 kroków).

Przetestuj działanie skryptów. Sprawdź, czy możesz obracać duszka - myszkę oraz przesuwać na planszy.

Wskazówka

Każdy ze skryptów zacznij od klocka kiedy klawisz … naciśnięty. Pamiętaj również, by każdy ze skryptów prawidłowo zakończyć.
Zauważ, że duszek - myszka może w tej chwili poruszać się nie tylko po zielonych polach, ale także po czerwonych.

Zadanie 2.7.14.

Poszukaj klocków, które można byłoby wykorzystać do zbadania, czy myszka weszła na pole oznaczone kolorem czerwonym. Który z nich będzie najlepiej pasował?
Odpowiedź
W kategorii Czujniki znajduje się klocek dotyka koloru … ? . Dzięki niemu możemy sprawdzić, czy duszek - myszka dotyka koloru czerwonego, czyli, czy wszedł na zakazane pole (ścianę labiryntu).

Zadanie 2.7.15.

Zastanów się, kiedy powinniśmy sprawdzić, czy duszek - myszka znajduje się na czerwonym polu? Sprawdź, czy dobrze myślisz.
Odpowiedź
Jeżeli duszek - myszka został ustawiony dokładnie na środku pola, to dotknąć czerwonego pola może jedynie po przesunięciu go na pole sąsiednie. Dlatego badanie powinno być wykonane zaraz po przesunięciu duszka - czyli w skrypcie reagującym na naciśnięcie klawisza spacja.

Zadanie 2.7.16.

Zmodyfikuj skrypt wywoływany klawiszem spacja w taki sposób, aby po przesunięciu duszka badał, czy nie znalazł się na czerwonym polu. W tym celu wykorzystaj klocek dotyka koloru … ? oraz klocek jeżeli … to . Połącz je odpowiednio ze sobą. Jeżeli duszek dotyka koloru czerwonego, to zgodnie z planem powinien:
  • wydać dźwięk bird,
  • cofnąć się na poprzednie pole.

Wskazówka

W celu cofnięcia duszka możesz wykorzystać klocek przesuń o … kroków, w którym wpiszesz wartość ujemną. Będzie ona oznaczała ruch do tyłu. Duszek powinien zostać cofnięty dokładnie tyle kroków, o ile przesunął się do przodu. Po zmodyfikowaniu skryptu, przetestuj jego działanie - duszek nie może wejść na czerwone pole.
Przepis na działanie skryptu powinien wyglądać w następujący sposób.
Kiedy klawisz spacja naciśnięty:
  1. 1.
    Przesuń o 40 kroków.
  2. 2.
    Jeżeli dotyka koloru czerwonego:
    1. a.
      Zagraj dźwięk bird.
    2. b.
      Przesuń o -40 kroków.
  3. 3.
    Zakończ ten skrypt.
Uwaga:
Żeby wybrać dźwięk bird na liście klocka Zagraj dźwięk … , wcześniej musisz go odszukać w galerii dźwięków i dodać w zakładce Dźwięki.

Uwaga

Obejrzyj film ilustrujący, w jaki sposób ustawić prawidłowy kolor dla klocka dotyka koloru … ?
Teraz myszka nie może już wejść na czerwone pole. Pozostało jeszcze zaprogramować, co ma się stać, gdy dotrze do jabłka.

Zadanie 2.7.17.

Zmodyfikuj skrypt reagujący na naciśnięcie klawisza spacja, w taki sposób, aby sprawdzał po przesunięciu duszka - myszki, czy nie dotyka on duszka - jabłka. Zgodnie z ustaleniami, jeśli dotyka, to: wyświetla napis w komiksowym dymku: „Hura! Wygrałam!” i kończy działanie wszystkich skryptów.

Ważne

Zapisz swój projekt pod kolejną nazwą, np. Labirynt 2.

Dodanie licznika żyć myszki

W celu uatrakcyjnienia gry zmień nieco jej scenariusz. Dodaj licznik żyć dla myszki. Przy starcie wartość licznika ustal na przykład na 3 życia. Każde wejście na ścianę będzie odejmowało jedno życie. Jeżeli licznik osiągnie wartość zero, wówczas gra skończy się przegraną.
Realizacja powyższego scenariusza wymaga przechowania informacji o liczbie żyć, czyli danej. Dane mogą być przechowywane przez program w zmiennych. W uproszczeniu zmienna to skrytka (szufladka), w której chowa się na przykład liczbę. Program może do niej zajrzeć i sprawdzić, jaka jest wartość zmiennej (przechowywana liczba). Wolno także zmieniać tę wartość – na przykład dodać do niej inną liczbę.

Zadanie 2.7.18.

Stwórz zmienną i nazwij ją Licznik żyć. Żeby stworzyć zmienną, należy przejść do kategorii Dane. Zmienna powinna być dostępna dla wszystkich duszków. Skorzystaj, w razie potrzeby, z zamieszczonego poniżej filmu, ilustrującego dodawanie nowej zmiennej.

Zadanie 2.7.19.

Zmodyfikuj skrypty w taki sposób, aby uwzględniony został licznik żyć myszki, który na początku przyjmie wartość, np. 3. Za każdym razem, gdy myszka wejdzie na ścianę, jego wartość zmniejsz o 1. Gdy wartość osiągnie 0, wyświetl napis „Koniec gry” przez 2 sekundy, następnie zatrzymaj wszystkie skrypty.

Wskazówka

Dodaj polecenie, które ustawi po kliknięciu zielonej flagi wartość licznika np. na 3 życia.
Następnie, w miejscu, w którym badasz, czy duszek nie wszedł na ścianę (czerwone pole), dodaj polecenia:
  1. 1.
    zmniejszające wartość zmiennej Licznik żyć o 1,
  2. 2.
    jeżeli zmienna Licznik żyć jest równa 0,
  3. 3.
    pokazujące komiksowy dymek z komunikatem „Koniec gry :(” przez 2 sekundy,
  4. 4.
    zatrzymujące wszystkie skrypty.
W razie potrzeby, przypomnij sobie film z zadania 13, który pokazuje, jak tworzy się warunek porównujący dwie wartości dla klocka jeżeli … to.
Sprawdź podczas testowania zmian, że nawet gdy myszka straci wszystkie życia, można nią dalej poruszać, a gdy dojdzie do jabłka - wyświetli napis „Hura! Wygrałam!” lub „Hura! Wygrałem!”. Dalsze poruszanie myszki, wynika z działania środowiska Scratch. Jednak możesz oprogramować grę w taki sposób, aby uniemożliwić wygraną, jeśli myszka nie ma więcej żyć, na przykład ukryć jabłko.

Zadanie 2.7.20.

Jeżeli gra zakończy się, ponieważ myszka wykorzystała wszystkie życia, ukryj jabłko. Wykorzystaj w tym celu zmienną Licznik żyć i zmodyfikuj odpowiednio skrypty duszka - jabłka.
Uwaga:
Nie zapomnij pokazać duszka - jabłka za każdym razem, gdy zostanie naciśnięta zielona flaga!

Wskazówka

Duszek - jabłko powinien cały czas sprawdzać, czy zmienna Licznik żyć jest równa 0. Jeśli jest równa, wówczas powinien zostać ukryty.

Ważne

Zapisz swój projekt pod kolejną nazwą, np. Labirynt 3.

Wskazówka

Więcej na temat zmiennych
Tworząc zmienne, możesz zdecydować, czy chcesz, aby dostęp do danej zmiennej miały tylko skrypty wybranego duszka, czy też wszystkie skrypty, niezależnie od tego, do którego z duszków zostały przypisane. Jeśli w twoim projekcie dwie postaci poruszałyby się po labiryncie, należy stworzyć dwie zmienne na przykład o nazwie Liczba żyć. Jednak każda z tych zmiennych powinna być przypisana w tym przyypadku do konkretnego duszka. Dzięki temu obie zmienne nazywałyby się tak samo, ale przechowywały wartość dostępną tylko dla wybranego duszka.
Jeżeli chcesz, aby duszki mogły sprawdzić, ile żyć pozostało temu drugiemu, należy utworzyć zmienne o różnych nazwach i udostępnić je wszystkim duszkom.
Pamiętaj, żeby nadawać zmiennym takie nazwy, które mówią, co w danej zmiennej jest przechowywane. Unikaj nazw typu Zmienna1, Zmienna2; A, B - zazwyczaj nic one nie znaczą i po pewnym czasie, gdy zajrzysz do skryptów, nie będziesz wiedział, do czego je wykorzystałeś.

Zadania uzupełniające

Zadanie 2.7.21.

Podstawowa wersja gry już działa, jednak sterowanie myszką jest dość trudne. Warto je uprościć, wykorzystując w tym celu na przykład klawisze strzałek w lewo, do góry, w prawo, na dół. Wciśnięcie każdego z tych klawiszy powinno przesunąć duszka w kierunku zgodnym z wciśniętą strzałką.
Zastanów się, jak zmodyfikować skrypt reagujący na naciśnięcie klawisza spacji w taki sposób, aby reagował na naciśnięcie klawisza strzałka w dół, a przed przesunięciem duszka ustawił go w kierunku do dołu.
Popraw skrypt i przetestuj jego działanie.
Następnie zbuduj skrypty, które reagując na klawisze pozostałych strzałek, skierują i przesuną duszka odpowiednio: w górę, w lewo lub w prawo. Pamiętaj, że każdy ze skryptów musi kontrolować, czy w wyniku przesunięcia myszka weszła na czerwone pole lub dotarła do jabłka.
Możesz zduplikować skrypt reagujący na klawisz strzałki w dół i przerobić go tak, by reagował na inny klawisz strzałki.
Uwaga:
Usuń skrypty obracające duszka. Nie będą dłużej potrzebne!

Wskazówka

Musisz zmienić klawisz, na który ma reagować skrypt. Zamiast spacji wybierz strzałkę w prawo. Następnie dodaj jako drugi od góry klocek, który skieruje duszka na dół.

Wskazówka

Duplikowanie skryptów:
Możesz powielić dowolny skrypt i na jego podstawie stworzyć nowy, wprowadzając odpowiednie zmiany. W tym celu wykonaj poniższe czynności.
  • Kliknij na pierwszym klocku skryptu od góry prawym klawiszem myszy.
  • Z menu wybierz opcję duplikuj. Przesuń kursor myszy - będzie się przesuwał razem z powielonym skryptem.
  • Kliknij lewym klawiszem myszy w miejscu, gdzie będzie widoczny cały skopiowany skrypt.

Zadanie 2.7.22.

Dodaj drugi kostium dla duszka - jabłka, który będzie wyglądał jak ugryzione jabłko. Następnie dodaj skrypt, który cały czas będzie badał, czy jabłko nie dotyka myszki. Jeżeli dotyka, to kostium zostanie zmieniony na ogryzek, a np. po 1 sekundzie duszek zostanie ukryty.
Uwaga:
Nie zapomnij ustawić kostiumu duszka - jabłka na całe jabłko oraz pokazać duszka za każdym razem, gdy zostanie wciśnięta zielona flaga!

Zadanie 2.7.23.

Dodaj drugie tło z innym labiryntem. Gdy gracz przejdzie przez pierwszy labirynt, zmień tło na następne. Pamiętaj, aby w tym przypadku ponownie ustawić wszystkie duszki na pozycjach startowych. Pozycje te mogą być inne niż na pierwszej planszy.

Zadanie 2.7.24.

Podobnie jak został dodany licznik żyć, można wprowadzić zdobywanie punktów. Punkty dodajemy na przykład za liczbę zebranych jabłek. W tym wypadku warto dodać kilka dodatkowych jabłek na planszy. Gra może kończyć się zwycięstwem, gdy gracz zbierze wszystkie jabłka.

Wskazówka

Jeśli wprowadzisz kilka jabłek, musisz badać oddzielnie, czy myszka nie dotyka któregoś z nich. W tym przypadku prościej będzie zbadać, czy myszka nie dotyka koloru, który znajduje się na jabłkach. Zwróć uwagę, że kolor czerwony znajdujący się na kostiumie jabłka jest inny niż kolor czerwonych pól planszy.

Zadanie 2.7.25.

Zrealizuj własne pomysły, co ma się stać, gdy myszka wejdzie na ścianę lub dotrze do jabłka. Zmodyfikuj projekt zgodnie z nimi.

Zadanie 2.7.26.

Spróbuj dodać do gry nowe duszki, które będą przeszkadzały myszce dotrzeć do jabłka. Mogą one poruszać się w określonych miejscach labiryntu, przenikać przez ściany lub działać tak, jak to zaplanujesz. Zastanów się również, w jaki sposób myszka powinna reagować na spotkanie z nimi, czy na przykład zakończyć grę, czy wrócić do punktu startowego? A może tylko stracić punkty lub zareagować w inny sposób?

Zadanie 2.7.27.

Dodaj plansze (nowe tła sceny), które pokazane zostaną, gdy gra się zakończy - zwycięstwem lub przegraną myszki.