W grze „W poszukiwaniu skarbu” przeprowadzisz duszka przez labirynt, sterując nim strzałkami i blokując przejście przez ściany. Najważniejszy mechanizm polega na tym, że po dotknięciu koloru ściany duszek cofa się o taką samą liczbę kroków, o jaką się przesunął.
Przygotowanie tła i postaci
Otwórz projekt w Scratchu i przejdź do zakładki Tła sceny. Narysuj labirynt widziany z góry. Zostaw korytarze w jasnym kolorze, a ściany oznacz jednym, wyraźnym kolorem. W miejscu wyjścia umieść skarb albo inny przedmiot, który będzie metą pierwszego poziomu.
Kolory mają znaczenie, ponieważ Scratch rozpoznaje kolizję na podstawie bloku „jeżeli dotyka koloru”. Ściany powinny mieć kolor jednolity i różny od tła korytarzy oraz pola wyjścia. Ustaw też duszka w miejscu, z którego ma rozpoczynać grę.
Na początku przygotuj następujące elementy:
- Tło sceny z narysowanym labiryntem.
- Duszka gracza dopasowanego rozmiarem do szerokości korytarzy.
- Kolor ścian używany później do wykrywania kolizji.
- Kolor mety umieszczony przy skarbie lub wyjściu.
Pozycję startową duszka określisz za pomocą współrzędnych X i Y. Na scenie wartość X określa położenie poziome, a Y pionowe. Zakres sceny wynosi od –240 do 240 dla X oraz od –180 do 180 dla Y. Kliknij duszka i odczytaj jego położenie, aby wykorzystać je w skrypcie startowym.
Logika poruszania się i kolizji
Ruch zaprogramujesz osobno dla każdego klawisza strzałki. Do sterowania wykorzystaj bloki zdarzeń, ruchu i czujników. Każdy ruch powinien mieć taką samą długość, na przykład 20 kroków.
- Utwórz skrypt rozpoczynający się blokiem „kiedy klawisz strzałka w górę naciśnięty”. Ustaw kierunek na 0 i dodaj „przesuń o 20 kroków”.
- Skopiuj podobny układ dla strzałki w dół. W tym przypadku ustaw kierunek na 180 i ponownie przesuń duszka o 20 kroków.
- Dla strzałki w prawo ustaw kierunek na 90, a dla strzałki w lewo na –90.
- W każdym skrypcie, zaraz po ruchu, dodaj blok „jeżeli dotyka koloru”. Wybierz pipetą dokładny kolor ściany z narysowanego labiryntu.
- Wewnątrz warunku umieść blok „przesuń o –20 kroków”. Ujemna wartość cofnie duszka do miejsca sprzed ostatniego ruchu.
- Przetestuj każdy kierunek i sprawdź, czy duszek zatrzymuje się przed ścianą, zamiast przechodzić przez jej fragment.
Mechanizm działa w dwóch etapach. Najpierw duszek wykonuje ruch, a następnie Scratch sprawdza, czy jego kostium dotyka koloru ściany. Jeżeli tak, drugi blok przesuwa go w przeciwną stronę. Ruch o 20 kroków i cofnięcie o –20 kroków znoszą się, więc postać wraca do poprzedniej pozycji.
Przykładowy układ dla ruchu w prawo wygląda logicznie tak: po naciśnięciu strzałki duszek ustawia kierunek 90, przesuwa się o 20 kroków, sprawdza kontakt z kolorem ściany i w razie kolizji cofa się o 20 kroków. Ten sam schemat zastosuj w pozostałych skryptach.
Uwaga: kolor wybrany w bloku „jeżeli dotyka koloru” musi być dokładnie taki sam jak kolor ściany na tle. Najbezpieczniej użyć pipety i wskazać ścianę bezpośrednio na rysunku. Nawet niewielka różnica odcienia może sprawić, że Scratch nie wykryje kolizji, a duszek zacznie przechodzić przez przeszkody.
Dodawanie poziomów i zmiennych
Przygotuj drugie tło, kopiując pierwsze i zmieniając układ ścian. Zachowaj ten sam kolor ścian, aby istniejące skrypty kolizji nadal działały. Przenieś wyjście w inne miejsce i zapisz tło jako „labirynt2”.
W każdym skrypcie ruchu dodaj drugi warunek. Tym razem sprawdzaj, czy duszek dotyka koloru mety. Po wykryciu tego koloru możesz użyć bloków:
„powiedz Hurra! Udało się! przez 2 sekundy”, a następnie „zmień tło na labirynt2”. Po zmianie tła ustaw nową pozycję startową duszka za pomocą bloku „idź do x: … y: …”. Dzięki temu postać nie pojawi się przypadkowo w środku drugiego labiryntu.
Skrypt uruchamiany zieloną flagą powinien ustawiać początkowe tło, pozycję duszka oraz wartości zmiennych. Utwórz zmienne „Poziom gry” i „Liczba ruchów”. Na starcie ustaw pierwszą na 1, a drugą na 0. Po przejściu na drugi poziom zmień „Poziom gry” na 2.
Jeśli chcesz liczyć ruchy, dodaj do każdego skryptu strzałki blok „zmień Liczba ruchów o 1”. Po ukończeniu drugiego poziomu duszek może wyświetlić komunikat z wynikiem, na przykład liczbą wykonanych ruchów.
Wyzwania dla ambitnych
Gotowy projekt możesz rozbudować o kolejne elementy:
- Dodaj licznik czasu, który ograniczy długość rozgrywki.
- Wprowadź punkty za zebranie skarbów lub innych przedmiotów.
- Przygotuj większą liczbę poziomów o różnym układzie ścian.
- Zmień liczbę kroków z 20 na 10 i sprawdź, jak wpływa to na precyzję sterowania.
Najpierw przetestuj podstawowy labirynt, a dopiero potem dodawaj kolejne funkcje. Gdy ruch, kolizje i zmiana tła działają poprawnie, możesz zapisać projekt jako „labirynt” i rozbudowywać go o czas, punkty lub następne poziomy.