O konkursie programistycznym na Słowacji (fragmenty)

Monika Tomcsányiová, Peter Tomcsányi

X Konferencja Eurologo 2005, Warszawa

… Konkurs (o nazwie Cologobežka) jest organizowany dla uczniów w wieku od 10 do 15 lat, co w Słowacji oznacza uczniów klas od 1 do 5 ośmioletniego gimnazjum bądź klas od 5 do 9 szkoły podstawowej. …

Celem konkursu jest motywowanie uczniów, którzy poznali Logo do poważniejszej aktywności programistycznej. …

Przygotowywanie konkursu zaczyna się w grudniu. Szkoły mogą zapisywać się do konkursu. Niektóre szkoły biorą w nim udział co rok, inne – raz czy dwa. Liczba uczestniczących szkół waha się w ostatnich latach około 20.

W każdej szkole jest nauczyciel odpowiedzialny za przeprowadzenie konkursu. Na wiosnę odbywa się etap szkolny konkursu. Musi on być organizowany przez szkoły w tym samym dniu. Nauczyciel odpowiedzialny otrzymuje zadania pocztą elektroniczną i w ten sam sposób odsyła rozwiązania uczniów… Zadania etapu szkolnego są rozwiązywane przy komputerach w ciągu 90 minut. W zestawie są 3 zadania.

W ciągu mniej więcej miesiąca organizatorzy  (zazwyczaj Monika) oceniają rozwiązania uczniów i wyniki ogłaszają w sieci. 15 najlepszych uczniów wybranych zostaje do udziału w etapie narodowym, który odbywa się w czerwcu w mieście Piešťany …

Etap finału narodowego odbywa się na tych samych zasadach co etap szkolny - są 3 zadania, które muszą być rozwiązane przy komputerach w ciągu 90 minut …

3. Zadania

Oba etapy konkursu składają się z 3 zadań do rozwiązania. Są one przygotowywane w ten sposób, żeby nawet początkujący  mogli rozwiązać przynajmniej jedno zadanie  i nie byli zawiedzeni z powodu zbyt wysokiego poziomu zadań. Ale z drugiej strony zadania muszą być na tyle wymagające, aby komisja konkursowa mogła wybrać najlepszych uczestników.

W wielu przypadkach zadania mają  2 poziomy – prostszy i bardziej zaawansowany. To także pomaga uczestnikom rozwiązać przynajmniej część zadania i nie wracać do domu bez żadnego osiągnięcia.

W następnych punktach opiszemy rodzaje zadań i podamy przykład każdego z nich. Więcej zadań po angielsku można znaleźć na stronie:
http://projects.eurologo2007.org/imaginecup/assignments.php?lang=en

3.1. Pierwsze zadanie – Geometria żółwia

Pierwsze zadanie zawsze wykorzystuje geometrię żółwia. Oznacza to, że rozwiązaniem jest program (zwykle jedna lub kilka procedur) rysujący zadany rysunek. Niektóre rysunki mają stałą wielkość, w innych zależy ona od parametru, a jeszcze inne mogą mieć elementy o wielkości dobieranej losowo.

Słońce

Narysuj obrazek Słońca, taki jaki widzisz na rysunku obok. Każdy z promieni składa się z pewnej liczby kwadratów. Rozmiar ich boków zmniejsza się o 3 kroki (żółwia). Słońce składa się z kilku promieni.

Utwórz procedurę Promień :MaxRozm :n gdzie MaxRozm jest rozmiarem największego kwadratu w promieniu, a n jest liczbą kwadratów, z których składa się promień.

Utwórz procedurę Słońce :Promienie :MaxRozm :n. Pierwszy argument określa liczbę promieni, kolejne dwa są przekazywane do każdego wywołania procedury Promień.

Wprowadź komendę Starter, która narysuje Słońce z 9 promieniami, z których każdy składa się z 7 kwadratów, bok największego kwadratu wynosi 30 kroków.

3.2. Drugie zadanie - animacja

Drugie zadanie jest zazwyczaj najłatwiejsze i wymaga od uczniów stworzenia jakiejś animacji, bardzo prostego demo lub quasi gry za pomocą grafiki bitmapowej w Komeniuszu albo Logomocji. Rozwiązanie tego zadania zazwyczaj wymaga utworzenia kilku żółwi, nadania im odpowiednich postaci i napisania kilku linijek kodu, żeby poruszać i animować żółwie względnie by reagowały one na klik lub inne zdarzenia generowane przez mysz.

Aby pomóc uczniom w wykonaniu zadania w ciągu 90 minut i nie zniechęcić  programistów, którzy nie są za dobrzy w rysowaniu, organizatorzy przygotowują pliki graficzne do wykorzystania przy rozwiązywaniu zadania.

Wybierz grę

Programista stworzył 4 zabawne gry. Ma zamiar połączyć je i sprzedawać jako jeden zestaw. Chce on wprowadzić ekran startowy, który pozwoli użytkownikowi dokonać wyboru jednej z gier. Pomóż programiście wykonać to zadanie.

Ekran startowy składa się z obrazu zamku z 4 bramami.

Wersja uproszczona: Gdy użytkownik klika w bramę zaczyna się jej animacja – następuje otwarcie bramy, potem zamknięcie i animacja się kończy. Tylko jedna brama może być animowana w danym momencie. Gdy użytkownik klika w bramę, która jest aktualnie animowana wtedy wchodzi do gry, tzn. do ekranu startowego danej gry (i cała reszta będzie oprogramowana przez kogoś innego).

Wersja zaawansowana: Brama rozpoczyna animację,  gdy kursor myszy na nią najeżdża (bez kliknięcia). Więcej niż jedna brama może być animowana w danym momencie, jeśli użytkownik porusza szybko wskaźnikiem myszy. Gdy użytkownik klika w bramę, która jest animowana, wtedy wchodzi do wybranej gry w ten sam sposób, jak to opisano w wersji uproszczonej.

Nie zapomnij dodać procedury starter, która wywoła na ekran zamek z bramami. Obraz zamku znajduje się w pliku castle.bmp, obrazy animowanych bram - w plikach gate1.lgw, gate2.lgw, gate3.lgw i gate4.lgw. Ekrany startowe czterech gier znajdują się w plikach: flowers.bmp, dots.bmp, mastermind.bmp i chess.bmp.

3.3. Trzecie zadanie - gra

Trzecie zadanie jest dla najbardziej zaawansowanych młodych programistów. Wymaga od nich zaprogramowania kompletnej gry. Często jest to gra logiczna lub tablicowa. Komputer powinien jedynie służyć za miejsce, gdzie gra jeden lub kilku użytkowników (tzn. komputer nie występuje w roli gracza, ale może obliczać wynik gry i sprawdzać czy jeden z użytkowników wygrał).

Zazwyczaj tylko kilku uczniów jest w stanie skończyć to zadanie, a kilku innych wykonać je częściowo. Tak więc to zadanie wyłania najlepszych uczniów i jest dla nich zadaniem na tyle poważnym, by nie tracili motywacji. Wynikiem zadania jest prosta gra, w którą można zagrać.

Domino

Pewnie znasz całkiem dobrze tradycyjną grę w domino. Twoim zadaniem będzie stworzenie komputerowej wersji tej gry, aby komputer był miejscem gdzie dwóch graczy może zagrać.

Ekran jest podzielony na cztery części. W lewej żółtej części znajdują się kostki, które nie są jeszcze w grze. Gracz zielony kładzie swoje jeszcze nie wykorzystane kostki w górnej części, gracz niebieski – w dolnej. Szara środkowa część jest placem gry, na którym układa się klocki.

Gdy gra się zaczyna, wszystkie, czyli 28 klocków domino pojawia się w żółtej części pokazując rewersy (zakryte strony) tak, że gracze nie widzą ich wartości. Po kliknięciu w klocek, odwraca się on i gracz widzi jego wartość. Wtedy klocek może być przeciągnięty za pomocą myszy. Klawisz spacji na klawiaturze powoduje obracanie klocka tak, że przyjmuje on cztery możliwe położenia (orientacje). Za pomocą tych manipulacji gracz może umieścić wybrany klocek albo w środkowej szarej części albo w części zielonej, względnie niebieskiej ekranu. Program nie próbuje sprawdzać, czy klocek został położony we właściwym miejscu.

Możesz znaleźć obrazki 28 klocków ze swoimi fazami w pliku dominoS.lgw – każdy klocek ma cztery fazy ponieważ może przyjmować cztery położenia (orientacje). Rewers (odwrotna strona) klocka znajdujes się w pliku reverse.lgw. Plansza gry jest w pliku domino.bmp. Ma ona wymiary pełnego ekranu 800x600.

Tłumaczenie: Witek Kranas