Proste prostopadłe i równoległe

Z Wiki Mistrzowie Kodowania
Wersja Iwona Brzózka-Złotnicka (dyskusja | edycje) z dnia 11:52, 15 kwi 2017

(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)
Skocz do: nawigacji, wyszukiwania

Założenia projektu: Projekt sprawdza umiejętność określania wzajemnego położenia prostych


Opis projektu:

“Proste prostopadłe i proste równoległe” to projekt, w którym występują 2 duszki:

  • Kot-przewodnik, który wydaje instrukcje i polecenia oraz ocenia poprawność wykonania zadania
  • prosta - linia, która pojawia się w dwóch miejscach na scenie pod różnymi kątami. Przy czym jedna nie porusza się (jest stemplem), a druga jest obracana przez gracza.

Kot będzie ustalał, czy mamy ustawić proste równolegle czy prostopadle. Dla lepszej czytelności tło pozostawiamy białe.


rys. 1 Początek gry

Realizacja: Tworzenie duszków oraz skryptów


Zacznijmy od przygotowania duszków. Kot pojawił się automatycznie, a linię prostą rysujemy samodzielnie (klikając pędzelek przy napisie “Nowy duszek”). Pamiętajmy, żeby kliknąć ikonkę linii, a nie ołówka. Po narysowaniu linii, duplikujemy ją, aby mieć w tym duszku 2 kostiumy wyglądające identycznie, różniące się wyłącznie kolorami (np. pierwsza czarna, a druga czerwona). Aby nasze linie sięgały od krawędzi do krawędzi, warto na początku ustawić jej rozmiar na np. 150%. Skoro mamy przygotowane duszki, musimy je gdzieś umieścić. Kot może być w którymś kącie, a proste: nieruchoma będzie zaczepiona np. w punkcie (-100,0), a ruchoma w punkcie (100,0). Zatem po uruchomieniu programu powinniśmy wyczyścić scenę, ustawić najpierw naszego duszka w wybranym miejscu, ustawić losowy kierunek i zapamiętać go (k=kierunek czarnej prostej), wykonać stempel, przeskoczyć w drugie miejsce.


rys. 2 Ustawienie czarnej prostej

Warto zastanowić się, z jaką dokładnością (skokiem) będziemy obracali prostą. Gdybyśmy obracali ją o 90 stopni, zadanie byłoby bardzo proste; gdyby o 1 stopień - bardzo trudno byłoby zauważyć, czy proste są prostopadłe, czy może jest między nimi kąt 89 lub 91 stopni. Dlatego wartość warto wybrać doświadczalnie. Przyjmijmy, że będzie to 15 stopni. Jeśli chcielibyśmy na początku (dla utrudnienia) zmienić kierunek czerwonej prostej, musimy obrócić ją o losową wielokrotność naszego skoku (15). W jakich granicach losować? Jeśli nie chcemy, aby były równoległe, to musimy do tego kierunku dodać kąt większy od zera, ale mniejszy od 180, zatem interesują nas wielokrotności 15 większe od 0 i mniejsze od 12. Jeśli chcemy uniknąć prostopadłości, to kąt obrotu musi być z zakresu (-90,90), czyli interesują nas wielokrotności od -5 do 5. Jak zdecydować, czy będziemy ustawiali proste prostopadle czy równolegle? Wprowadźmy na początku zmienną (p/r), która będzie losowała wartość spośród 2 liczb: jeśli wylosuje 1, to będziemy ustawiali prostopadłe, a 2 - równoległe.


rys. 3 Ustawienie prostych

Czerwoną prostą możemy obracać za pomocą klawiatury: prawa strzałka - obrót o 15 stopni w prawo (zgodnie z ruchem wskazówek), lewa strzałka - przeciwnie. Abyśmy wiedzieli, jakie zadanie nas czeka, może nam to zakomunikować Kot. On z kolei dowie się, że ma coś powiedzieć za pomocą komunikatu. Zatem po ustawieniu prostych, powinny one wysłać komunikat np. “zadanie”. Kiedy Kot go otrzyma, powie “Obróć czerwoną prostą, aby była do czarnej...” i po chwili dopowie w zależności od wartości zmiennej “p/r” - “PROSTOPADŁA” lub “RÓWNOLEGŁA”


rys. 4 Informacja o zadaniu


Teraz będziemy potrzebowali czasu na ustawienie prostej. Sygnałem dla komputera o wykonaniu zadania będzie naciśnięcie spacji. Wtedy Kot oceni poprawność wykonania zadania. W jaki sposób? Kierunek czarnej prostej zawiera się w przedziale <0,179> a czerwonej - <-179,180>. Zatem proste będą równoległe, jeśli będą miały taki sam kierunek lub jeśli czerwona będzie miała kierunek o 180 stopni mniejszy, a prostopadłe, jeśli różnica kierunków będzie wynosiła +/-90 lub +/-270. Możemy te warunki zapisać na różne sposoby. Najprostsze wydaje się zastosowanie reszty z dzielenia - modulo. Warto zauważyć, że w przypadku równoległości po podzieleniu przez 180 np. z kąta -110 otrzymamy resztę 70, a w przypadku prostopadłości wszystkie liczby: +/-90, +/-270 mod 180 = 90. Stąd sposób sprawdzania mógłby wyglądać tak:

rys. 5 Sprawdzanie poprawności wykonania zadania

Aby program nie zakończył się w tym momencie, można po ocenieniu wymusić kolejne uruchomienie komunikatem “zadanie”. Jednak komunikat ten powinien jednocześnie powodować nowe ustawienie prostych. W związku z tym należy zmodyfikować również skrypt duszka Prosta, który ostatecznie będzie wyglądał tak:


rys. 6 Ostateczny wygląd skryptów Prostej