Wieża Hanoi to klasyczna łamigłówka logiczna. Programowanie jej w Scratch uczy algorytmicznego myślenia. Możemy wykorzystać Scratch do wizualizacji. Dzieci zrozumieją rekurencję.
Przygotowanie Sceny i Duszków
Zacznijmy od przygotowania tła w Scratch. Potrzebne będą trzy słupki (wieże). Można je narysować jako prostokąty. Ustaw je w równej odległości od siebie.
Teraz stwórzmy duszki reprezentujące dyski. Każdy dysk powinien mieć inny rozmiar i kolor. Ułatwi to ich identyfikację. Upewnij się, że dyski są ustawione jeden na drugim na pierwszej wieży. Pamiętaj o nadaniu im nazw (np. dysk1, dysk2, dysk3).
Dodajmy również duszek, który będzie wyświetlał instrukcje. Może to być prosty tekst "Przenieś dysk...". Ten duszek może również pokazywać liczbę wykonanych ruchów.
Tworzenie Zmiennych
Do działania programu potrzebne są zmienne. Stwórz zmienne dla numeru ruchu. Potrzebne są też zmienne reprezentujące położenie każdego dysku. Zmienne te będą przechowywały informację, na której wieży znajduje się dany dysk (1, 2 lub 3).
Zmienna *liczba_dysków* przyda się, jeśli będziesz chciał rozbudować projekt. Zdefiniuj również zmienną *licznik_ruchów*. Ona zliczy, ile ruchów zostało wykonanych podczas rozwiązywania łamigłówki.
Implementacja Algorytmu
Algorytm Wieży Hanoi opiera się na rekurencji. Najważniejszym elementem jest funkcja, która przenosi stos dysków. Funkcja ta przyjmuje trzy argumenty: liczba dysków do przeniesienia, wieża źródłowa, wieża docelowa i wieża pomocnicza.
Podstawowa zasada działania algorytmu: aby przenieść n dysków z wieży A do wieży C, używając wieży B jako pomocniczej, należy najpierw przenieść n-1 dysków z A do B, następnie przenieść największy dysk z A do C, a na końcu przenieść n-1 dysków z B do C. Ważne jest zrozumienie tej rekurencyjnej zależności.
W Scratch możemy użyć bloków "stwórz własny blok" do zdefiniowania tej funkcji. Nazwij blok np. "przenieś dyski". Zdefiniuj parametry wejściowe. Użyj bloków *jeżeli*, *powtórz* oraz *zmień zmienną*.
Logika Przenoszenia Dysków
Musimy zaimplementować logikę przenoszenia duszków (dysków) między wieżami. Użyj bloków *ustaw x na* i *ustaw y na* dla każdego dysku. Zmieniaj współrzędne x w zależności od tego, na którą wieżę dysk ma zostać przeniesiony. Współrzędna y zależy od pozycji dysku na danej wieży.
Przed przeniesieniem dysku, sprawdź, czy na wieży docelowej nie ma mniejszych dysków. Jeśli tak, ruch jest niedozwolony. To kluczowy element zasad gry Wieża Hanoi. Możesz to zrobić za pomocą bloków *jeżeli... to... w przeciwnym razie...*.
Za każdym razem, gdy dysk jest przenoszony, zwiększ licznik ruchów. Wyświetlaj aktualną liczbę ruchów na ekranie. Użytkownik będzie widział postęp w rozwiązywaniu zagadki.
Interakcja z Użytkownikiem
Pozwól użytkownikowi kontrolować grę. Możesz dodać przyciski "Start", "Reset". Przycisk "Start" uruchomi algorytm rozwiązywania Wieży Hanoi. Przycisk "Reset" ustawi wszystko w początkowym stanie.
Możesz dodać opcję wyboru liczby dysków. Im więcej dysków, tym trudniejsza gra. Użytkownik wpisuje liczbę dysków. Program dostosowuje scenę i algorytm do tej liczby.
Dodaj komunikaty na ekranie. Informuj użytkownika o błędnych ruchach. Powiadamiaj o wygranej. Użyj bloków *powiedz* i *czekaj*. Sprawi to, że gra będzie bardziej przyjazna.
Typowe Błędy i Wskazówki dla Nauczycieli
Uczniowie często mają problem ze zrozumieniem rekurencji. Wyjaśnij to na prostych przykładach. Porównaj do układania klocków. Najpierw układasz mniejsze elementy, a potem większe.
Wiele osób myli wieżę źródłową z docelową. Upewnij się, że uczniowie rozumieją, która wieża jest źródłem, a która celem. Wykorzystaj kolorowe kody. Ułatwią orientację w programie.
Częstym błędem jest próba przeniesienia większego dysku na mniejszy. Przypomnij o zasadach gry. Wprowadź komunikat błędu. Pokaże, że ruch jest niedozwolony. Zachęć do ponownej próby.
Uatrakcyjnienie Zajęć
Zacznij od demonstracji realnej Wieży Hanoi. Uczniowie zobaczą, jak działa łamigłówka. Będą mogli dotknąć dysków. Spróbują samodzielnie ją rozwiązać.
Podziel uczniów na grupy. Każda grupa programuje fragment gry. Potem połączcie wszystkie fragmenty w jedną całość. Współpraca rozwija umiejętności społeczne.
Zorganizuj konkurs na najszybsze rozwiązanie Wieży Hanoi. Użyj programu Scratch. Wprowadź elementy rywalizacji. Zwiększy to zaangażowanie uczniów.
Wykorzystaj muzykę i efekty dźwiękowe. Uatrakcyjnią grę. Sprawią, że programowanie będzie bardziej zabawne. Dodaj element kreatywności.
Połącz Wieżę Hanoi z innymi zagadnieniami. Na przykład, z matematyką (liczba ruchów). Z informatyką (złożoność algorytmów). Pokazuj praktyczne zastosowania.
Rozszerzenia Projektu
Uczniowie mogą dodać opcję cofania ruchów. Umożliwi to naprawianie błędów. Zwiększy komfort użytkowania. Wymaga to przechowywania historii ruchów.
Można zaimplementować automatyczne rozwiązywanie Wieży Hanoi. Komputer sam wykonuje ruchy. Demonstruje działanie algorytmu rekurencyjnego. To wyzwanie dla bardziej zaawansowanych uczniów.
Dodaj ranking najlepszych wyników. Zapisuj liczbę ruchów i czas. Uczniowie będą mogli porównywać swoje osiągnięcia. Zwiększy to motywację do doskonalenia umiejętności.
Wieża Hanoi w Scratch to doskonały sposób na naukę programowania. W połączeniu z kreatywnością i zabawą, nauka staje się przyjemnością. Zachęcaj uczniów do eksperymentowania. Odkrywania nowych możliwości.
