Tworzenie symulacji - wyścigi w środowisku Scratch
Wyścigi – scenariusz projektu
Projekt będzie polegał na opracowaniu programu symulującego wyścigi, z wykorzystaniem języka programowania Scratch. Od twojego wyboru zależy, jacy zawodnicy lub zawodniczki wezmą udział w danej konkurencji. Może to być bieg lekkoatletyczny, wyścig zwierząt, samochodów albo motocykli. Zawodom towarzyszyć powinna publiczność dopingująca swoich faworytów. Gdy konkurencja się zakończy, część publiczności będzie się cieszyła ze zwycięstwa swojego zawodnika, druga zaś będzie spokojnie stała po przegranej. Zobacz przykładowe działanie aplikacji na poniższym filmie.
RvNX6mjMkFgBa
Film: Przykładowe działanie programu symulującego wyścigi.
Film: Przykładowe działanie programu symulującego wyścigi.
Film: Przykładowe działanie programu symulującego wyścigi.
Aby wykonać to ćwiczenie, ważna jest znajomość podstaw obsługi środowiska Scratch. Jeśli nie masz doświadczenia z tym językiem, zachęcamy do zapoznania się z materiałem Wprowadzenie do środowiska ScratchDUVRjOY3CWprowadzenie do środowiska Scratch.
Polecenie 1
Zaplanuj scenerię dla projektu - zastanów się, gdzie umieścisz publiczność, tory wyścigowe, punkt startu oraz mety. Czy użytkownik będzie na nich patrzył z boku, a może z góry?
iHx6nhN4fB_d5e124
Wykorzystaj poniższy dzienniczek na zapisanie swoich notatek i przemyśleń.
RvMVGW2qBMwpj
Dzienniczek, w którym możesz zapisać swoje notatki i przemyślenia.
Dzienniczek, w którym możesz zapisać swoje notatki i przemyślenia.
Źródło: GroMar, licencja: CC BY 3.0.
Projektujemy działania duszków
3
Ćwiczenie 1
Zastanów się nad możliwym przebiegiem wyścigu i zapisz algorytmy, według których poruszać się będzie każdy zawodnik. Pamiętaj, żeby zaplanować ruch w taki sposób, by szanse na zwycięstwo obu zawodników były takie same oraz by w czasie wyścigu mogli zmieniać się na prowadzeniu. Symulacja dzięki temu będzie bardziej dynamiczna.
Aby szanse na wygraną były takie same, a symulacja dynamiczna możesz losować liczbę kroków, o jaką przesunie się dany zawodnik przed wykonaniem przez niego pojedynczego ruchu. Pamiętaj o ustawieniu zawodnika w punkcie startu oraz zaplanuj sygnał, po którym rozpocznie się wyścig, czyli uruchomi się symulacja.
Po uruchomieniu programu należy ustawić zawodnika na pozycji startowej:
Kiedy kliknięto zieloną flagę:
Idź do pozycji startowej.
Zatrzymaj ten skrypt.
Start wyścigu może rozpocząć się np. po daniu sygnału poprzez wciśnięcie klawisza spacji. Wówczas przepis na ruch zawodnika może wyglądać następująco:
Kiedy wciśnięto klawisz spacja:
Przesuń o wylosowaną liczbę kroków.
Zatrzymaj ten skrypt.
R1LWZjda79HTC
Ćwiczenie 1
Jak nazywa się blok który pozwala ustawić duszka w wybranym miejscu? Możliwe odpowiedzi: 1. Prawidłowa odpowiedź, 2. Nieprawidłowa odpowiedź A, 3. Nieprawidłowa odpowiedź B
Test jednokrotnego wyboru.
Źródło: GroMar, licencja: CC BY 3.0.
1
Ćwiczenie 2
Zapisz algorytm, który będzie rozpoznawał, że zawodnik osiągnął linię mety.
To, czy zawodnik osiągnął linię mety można sprawdzić na kilka sposobów:
sprawdzenie, czy jego liczba określająca położenie ( lub - w zależności od tego, w jakim kierunku porusza się zawodnik) jest większa lub mniejsza od ustalonej pozycji mety,
dodanie duszka - linia mety lub oznaczenie linię mety specjalnym kolorem - gdy duszek - zawodnik dotknie go, rozpozna, że dotarł do linii mety.
Jeżeli dodany zostanie duszek - linia mety, algorytm może wyglądać następująco:
Kiedy wciśnięto klawisz spacja:
Powtarzaj, aż dotyka duszka - linia mety: 1.1. Przesuń o wylosowaną liczbę kroków.
Zatrzymaj ten skrypt.
RptnB0FozlFCW
Ćwiczenie 2
W jakiej kategorii znajduje się blok umożliwiający sprawdzanie, czy duszek dotknął określonego koloru lub innego duszka? Możliwe odpowiedzi: 1. Czujniki, 2. Ruch, 3. Kontrola
Test jednokrotnego wyboru.
Źródło: GroMar, licencja: CC BY 3.0.
1
Ćwiczenie 3
Określ, w jaki sposób rozpoznać, że zawodnik wygrał lub przegrał.
To, czy zawodnik dodarł pierwszy, czy drugi na metę można sprawdzić wykorzystując np. zmienne.
Pierwszy sposób, to utworzenie dla każdego zawodnika zmiennej np. Miejsce pierwszego zawodnika oraz Miejsce drugiego zawodnika. Po uruchomieniu programu, wartości zmiennych należy ustawić na . Gdy zawodnik dotrze do mety, wartość zmiennej oznaczającej jego miejsce powinna zostać zmieniona na wartość zmiennej oznaczającej miejsce jakie zajmuje konkurent powiększoną o . Wówczas jeśli dotrze pierwszy, wartość ta wyniesie , jeśli drugi, to .
Drugi sposób to utworzenie zmiennych przechowujących czas jazdy poszczególnych zawodników. Przy każdym ruchu zawodnika można zapisywać czas, jaki upłynął od wystartowania korzystając z klocka stoperiHx6nhN4fB_d498e137stoper. Gdy zawodnicy dotrą do mety, w ich zmiennych będzie zapisany czas ich jazdy. Wystarczy sprawdzić, który zawodnik dotarł w krótszym czasie. W przypadku, gdy czasy są równe - mamy remis.
Trzecie rozwiązanie polega na sprawdzeniu, gdy zawodnik dotarł do mety, czy rywal znajduje się za nim, czy przed nim. Można w tym celu porównać liczby lub obu zawodników. To rozwiązanie pozwala uniknąć stosowania zmiennych.
Jeżeli zaplanujesz wykorzystanie zmiennych przechowujących informacje o miejscach, które zajęli poszczególni zawodnicy, algorytm działania pierwszego zawodnika może wyglądać następująco:
Kiedy wciśnięto klawisz spacja:
Powtarzaj, aż dotyka duszka - linia mety. 1.1. Przesuń o wylosowaną liczbę kroków.
Ustaw zmienną Miejsce pierwszego zawodnika na (Miejsce drugiego zawodnika + 1).
Zatrzymaj ten skrypt.
Należy pamiętać, aby po uruchomieniu aplikacji wyzerować zmienną przechowującą miejsce zawodnika. Przykładowy algorytm dla pierwszego zawodnika może wyglądać tak:
Kiedy kliknięto zieloną flagę:
Ustaw zmienną Miejsce pierwszego zawodnika na .
Idź do pozycji startowej.
Zatrzymaj ten skrypt.
RQmGuTkaxGX5C
Ćwiczenie 3
W jakiej kategorii znajduje się blok umożliwiający utworzenie nowej zmiennej? Możliwe odpowiedzi: 1. Zmienne, 2. Ruch, 3. Kontrola
Test jednokrotnego wyboru.
Źródło: GroMar, licencja: CC BY 3.0.
1
Ćwiczenie 4
W jaki sposób powinien zachowywać się duszek - kibic? Zapisz algorytmy postępowania kibica w trakcie wyścigu, a także po przegranej lub wygranej zawodnika któremu będzie kibicować.
Kibic powinien dopingować zawodników (np. poruszając się) od momentu ich ustawienia na pozycji startowej, do końca zawodów. Następnie może krzyczeć „Hura! Wygraliśmy” dalej się poruszając lub „Buuu! Przegraliśmy” stojąc nieruchomo - w zależności od tego, czy jego zawodnik wygrał lub przegrał. Informację o tym, który zawodnik wygrał można przekazać kibicom wykorzystując mechanizm nadawania i odbierania komunikatów.
Jeżeli planujemy wykorzystać mechanizm nadawania i odbierania komunikatów, to należy zmodyfikować algorytm działania zawodnika (przykład dla pierwszego zawodnika):
Kiedy wciśnięto klawisz spacja:
Powtarzaj aż dotyka duszka - linia mety: 1.1. Przesuń o wylosowaną liczbę kroków.
Ustaw zmienną Miejsce pierwszego zawodnika na (Miejsce drugiego zawodnika + 1).
Nadaj komunikat: Zawodnik nr 1 na mecie.
Zatrzymaj ten skrypt.
Wówczas przykładowe algorytmy działania duszka kibicującego pierwszemu zawodnikowi mogą być następujące:
Kiedy kliknięto zieloną flagę:
Idź do pozycji startowej.
Zawsze: 2.1. Czekaj sekundy. 2.2. Zmień kostium na następny.
Kiedy otrzymam komunikat Zawodnik nr 1 na mecie:
Jeżeli Miejsce pierwszego zawodnika = 1 to: 1.1. Powiedz „Hurra! Wygraliśmy.”. W przeciwnym razie: 1.2. Powiedz „Buuu! Przegraliśmy.”.
Zatrzymaj inne skrypty duszka.
Zatrzymaj ten skrypt duszka.
Rr9A31K0Dom1K
Ćwiczenie 4
Jak nazywa się kategoria w której możesz znaleźć bloki związane z komunikami? Możliwe odpowiedzi: 1. Zdarzenia, 2. Ruch, 3. Kontrola
Test jednokrotnego wyboru.
Źródło: GroMar, licencja: CC BY 3.0.
Jak można było zauważyć na filmie z przykładem działania programu, poszczególnym zawodnikom kibicuje całkiem duża grupa publiczności. Do powielenia pojedynczego kibica można użyć mechanizm klonowania duszków, który zostanie omówiony w dalszej części materiału.
iHx6nhN4fB_d498e137
ROy8C1OssOc4t
Na zdjęciu widać pojedynczy blok algorytmu wraz z polem zaznaczenia. Po lewej stronie znajduje się pole zaznaczenia. Po prawej stronie pola zaznaczenia widoczny jest blok. W bloku znajduje się napis: stoper. Pole zaznaczenia jest puste.
Blok "stoper" będący częścią kategorii "Czujniki".
Źródło: GroMar, licencja: CC BY 3.0.
Wartością jest czas liczony w sekundach od momentu ostatniego kliknięcia zielonej flagi lub wykonania bloczka resetuj stoper. Włączenie znacznika po lewej stronie powoduje wyświetlanie czasu na scenie.
Przykład:
RaaCtkh11xtDw
Na zdjęciu przedstawiono przykładowy algorytm z blokiem: stoper. W pierwszym bloku algorytmu znajduje się napis: kiedy kliknięto. Za napisem widoczna jest zielona flaga. W drugim bloku algorytmu widoczny jest napis: zawsze. Blok zawsze jest w kształcie obróconej litery: U. Wewnątrz bloku znajdują się jeden wewnętrzny blok algorytmu. W pierwszym wewnętrznym bloku algorytmu widoczny jest napis: powiedz. Za napisem znajduje się wewnętrzny blok z napisem: połącz upłynęło sekund: i stoper. Wyrazy: upłynęło sekund:, stoper są osobnymi wewnętrznymi blokami. Na końcu bloku zawsze znajduje się biała strzałka skierowana w górę. Po prawej stronie zdjęcia widać animowanego duszka. Duszek przypomina idącego kota. Nad duszkiem widnieje okno dialogowe. W oknie znajduje się napis: upłynęło sekund: cztery przecinek pięćset osiemdziesiąt siedem tysięcznych.
Przykładowy skrypt z zastosowaniem czujnika "stoper".
Źródło: GroMar, licencja: CC BY 3.0.
iHx6nhN4fB_d5e394
Tworzymy aplikację - budujemy skrypty
Mając zaprojektowane działania dla poszczególnych duszków, możesz przystąpić do stworzenia skryptów.
Polecenie 2
Przygotuj tło sceny na potrzeby wyścigów, dodaj dwa duszki - zawodników oraz dwa duszki - kibiców (po jednym dla każdego zawodnika), ewentualnie inne duszki - jeśli zostały uwzględnione w twoim planie. Nie zapomnij odpowiednio nazwać każdego duszka.
To jak przygotujesz tło sceny będzie miało wpływ na pozycje startowe zawodników, czy miejsca kibiców. Nie musisz sugerować się poniższymi wartościami. W twoich skryptach zawodnicy mogą ścigać się, np. w innym miejscu sceny.
2
Ćwiczenie 5
Stwórz skrypty dla każdego z duszków zgodnie z przygotowanymi algorytmami ich działania. Następnie przetestuj program. Uruchom go parokrotnie. Czy zawodnicy zwyciężają na zmianę? Czy każdego z zawodników dopinguje jeden kibic, który cieszy się, w przypadku zwycięstwa lub jest smutny, w przypadku przegranej?
Utwórz duszki obu zawodników, każdy z nich powinien mieć dwa skrypty:
ustawienia początkowe przed wyścigiem,
skrypt aktywujący sam wyścig.
Następnie utwórz skrypt kibica pierwszego zawodnika i skrypt kibica drugiego zawodnika. Każdy z kibiców również powinien mieć dwa skrypty:
ustawienia początkowe,
skrypt odpowiedzialny za reakcję na wygraną lub przegraną swojego zawodnika.
Przykładowe skrypty dla pierwszego zawodnika mogą wyglądać następująco:
RNSIJxtqrVRVO
Na zdjęciu przedstawiono dwa przykładowy algorytmy programu dla pierwszego zawodnika. Algorytm pierwszy, W pierwszym bloku algorytmu znajduje się napis: kiedy kliknięto. Za napisem widoczna jest zielona flaga. W drugim bloku algorytmu widoczny jest napis idź do x: minus sto pięćdziesiąt, y: trzydzieści. Wartości minus sto pięćdziesiąt oraz trzydzieści są w osobnych polach wartości. W trzecim bloku algorytmy znajduje się napis: ustaw miejsce pierwszego zawodnika na zero. Wyrażenie: miejsce pierwszego zawodnika jest w polu wyboru. Wyboru dokonuje się poprzez naciśnięcie białego trójkąta znajdującego się na końcu wyrażenia. Wartość zero jest w osobnym polu. W czwartym polu algorytmu widać napis: zatrzymaj ten skrypt. Napis: ten skrypt znajduje się w rozwijalnym polu wyboru. Drugi skrypt. W pierwszym bloku algorytmu znajduje się napis: kiedy klawisz spacja naciśnięty. Wyraz spacja znajduje się w polu wyboru. Drugi blok algorytmu stanowi blok: powtarzaj. Blok jest w kształcie odwróconej litery U. Blok: powtarzaj ma jeden blok wewnętrzny. Na początku bloku widać napis: powtarzaj aż dotyka linii mety?. Wyrażenie : Dotyka linii mety znajduje się w wewnętrznym bloku. Słowa linia mety znajduje się dodatkowo w polu wyboru. W pierwszym wewnętrznym bloku powtarzaj widoczny jest napis: przesuń o losuj liczbę od jeden do dziesięć krokówa). Wyrażenie losuj liczbę od jeden do dziesięć znajduje się w wewnętrznym bloku. Wartości jeden i dziesięć znajdują się polu wartości. Na końcu bloku: powtarzaj, znajduje się biała strzałka skierowana w górę. W trzecim głównym bloku algorytmu znajduje się napis: ustaw miejsce pierwszego zawodnika, na miejsce drugiego zawodnika plus jeden. Wyrażenie: miejsce pierwszego zawodnika znajduje się w polu wyboru. Wyrażenie: miejsce drugiego zawodnika plus jeden umieszczone jest w wewnętrznym bloku. Wartość: jeden znajduje się w polu wartości. W czwartym głównym bloku algorytmy znajduje się napis: nadaj komunikat zawodnik numer jeden na mecie, Wyrażenie: zawodnik numer jeden na mecie znajduje się w polu wyboru. W piątym głównym polu algorytmu widać napis: zatrzymaj ten skrypt. Napis: ten skrypt znajduje się w rozwijalnym polu wyboru.
Przykładowy skrypt dla pierwszego zawodnika.
Źródło: GroMar, licencja: CC BY 3.0.
Przykładowe skrypty dla kibica pierwszego zawodnika mogą wyglądać następująco:
RHkoqcqEgvYHm
Na zdjęciu przedstawiono dwa przykładowy algorytmy programu dla kibica pierwszego zawodnika. Algorytm pierwszy, W pierwszym bloku algorytmu znajduje się napis: kiedy kliknięto. Za napisem widoczna jest zielona flaga. W drugim bloku algorytmu widoczny jest napis idź do x: minus dwieście, y: sto dwadzieścia. Wartości minus dwieście oraz sto dwadzieścia są w osobnych polach wartości. Trzeci blok algorytmy stanowi blok zawsze. Blok zawsze jest w kształcie obróconej litery Blok zawsze zbudowany jest z dwóch wewnętrznych bloków algorytmu. Na górze bloku znajduje się napis: zawsze. W pierwszym wewnętrznym polu algorytmu widoczny jest napis: czekaj dwadzieścia pięć setnych sekund. Wartość liczbowa jest w osobnym polu wartości. W drugim wewnętrznym bloku znajduje się napis: następny kostium. Na końcu bloku: zawsze, znajduje się biała strzałka skierowana w górę. Algorytm drugi. W pierwszym bloku algorytmu znajduje się napis: kiedy otrzymałem zawodnik nr jeden na mecie, Wyrażenie zawodnik numer jeden na mecie znajduje się w polu wyboru. Dugi blok algorytmu jest blokiem warunku. W bloku znajdują się dwa warunki. Blok zaczyna się od wyrażenia: jeżeli miejsce pierwszego zawodnika równa się jeden to. Wyrażenie: miejsce pierwszego zawodnika znajduje się w wewnętrznym bloku algorytmu. Niżej znajduje się blok z napisem: powiedz hura! Wygraliśmy!. Słowa Hura!, Wygraliśmy! Umieszczone są w wewnętrznym polu. Niżej znajduje się blok z drugim warunkiem. W bloku widoczny jest napis: w przeciwnym razie: Pod blokiem znajduje się blok instrukcji z napisem: powiedz bu! Przegraliśmy!. Słowa Bu!, Przegraliśmy! umieszczone są w wewnętrznym polu. W trzecim głównym polu algorytmu widać napis: zatrzymaj inne skrypty duszka. Napis: inne skrypty duszka, znajduje się w rozwijalnym polu wyboru. W czwartym głównym polu algorytmu widać napis: zatrzymaj ten skrypt. Napis: ten skrypt znajduje się w rozwijalnym polu wyboru.
Przykładowy skrypt dla kibica dla pierwszego zawodnika.
Źródło: GroMar, licencja: CC BY 3.0.
RFkpWMdWtbFsi
Ćwiczenie 5
Jak nazywa się kategoria w której możesz znaleźć bloki związane z porównywaniem wartości zmiennych? W tej samej kategorii możesz również znaleźć blok związany z losowaniem liczby z określonego zakresu. Możliwe odpowiedzi: 1. Wyrażenia, 2. Zdarzenia, 3. Kontrola
Test jednokrotnego wyboru.
Źródło: GroMar, licencja: CC BY 3.0.
iHx6nhN4fB_d5e451
klonowanie_duszkow
Klonowanie to funkcja w Scratchu, która pozwala na tworzenie kopii duszków podczas projektu. Każdy klon ma te same cechy, takie jak wygląd, dźwięki, skrypty i zmienne, jak oryginał, ale działa niezależnie. Klonowanie różni się od stemplowania, ponieważ stemplowanie tworzy tylko obraz duszka na scenie, podczas gdy klony są oddzielnymi duszkami, które mogą interpretować skrypty i działać niezależnie. Stemplowanie domyślnie dotyczy tylko aktualnego obrazu duszka. Również, klony nie pojawiają się w okienku duszków tak jak zwykłe duplikaty, są tymczasowe i znikają po zakończeniu skryptu. W ten sposób, klonowanie w Scratchu pozwala na tworzenie dynamicznych kopii duszków, które mogą wykonywać różne czynności, co daje więcej możliwości programowania i interakcji w projekcie.
Klonowanie jest przydatne w przypadku projektów, w których istnieje wiele podobnych duszków wykonujących podobne zadania. Dzięki klonowaniu projekt tworzy kopie duszków, a nie użytkownik, co ułatwia zachowanie spójności między nimi. Ta funkcja zapobiega konieczności wprowadzania tych samych zmian w każdym z wielu duszków. Zamiast tego, użytkownik może wprowadzić zmiany w jednym duszku, a klonowane kopie automatycznie odzwierciedlą te zmiany. Dzięki temu klonowanie umożliwia bardziej efektywne zarządzanie projektami z wieloma podobnymi duszkami, zapewniając spójność i jednoczesne dostosowywanie zachowań każdego z nich.
Przykłady bloków związanych z klonowaniem, można je znaleźć w kategorii Kontrola:
R19qgMQvepFEs
Blok języka Scratch - "utwórz klona z siebie" z kategorii "Kontrola".
Źródło: GroMar, licencja: CC BY 3.0.
Powyższy blok odpowiada za utworzenie klona z wybranego duszka.
R10w8oNP0Ii2p
Blok języka Scratch - "gdy zaczynam jako klon" z kategorii "Kontrola".
Źródło: GroMar, licencja: CC BY 3.0.
Kiedy wybrany duszek jest sklonowany, ten blok zaczyna działanie skryptu w nowo utworzonym klonie.
RPDvyEE98CYVY
Blok języka Scratch - "usuń tego klona" z kategorii "Kontrola".
Źródło: GroMar, licencja: CC BY 3.0.
Powyższy blok odpowiada za usuwanie klona. Dodatkowo zatrzymuje wszystko swoje skrypty klona.
Zwiększamy liczbę kibiców
Podczas zawodów jednego zawodnika lub drużynę dopinguje zazwyczaj wielu kibiców. Dlatego także w twojej symulacji wyścigów warto zadbać o odpowiednią liczbę widzów.
2
Ćwiczenie 6
Zmodyfikuj działanie duszka - kibica tak, aby zwiększyć liczbę widzów dopingujących danego zawodnika. Wykorzystaj w tym celu mechanizm klonowaniaklonowanie_duszkowmechanizm klonowania.
Najpierw napisz skrypt zwiększania liczby kibiców. Zastosuj do tego określoną liczbę razy blok Utwórz klona.
Przykładowe skrypty, które można dodać dla duszka - kibica:
RYhqf8vLTw2Gu
Na zdjęciu przedstawiono dwa przykładowy algorytmy programu duszka kibica. Algorytm pierwszy, W pierwszym bloku algorytmu znajduje się napis: kiedy kliknięto. Za napisem widoczna jest zielona flaga. W drugim bloku algorytmu znajduje się napis: powtórz dziesięć razy. Wartość dziesięć znajduje się w wewnętrznym polu bloku. W pierwszym wewnętrznym bloku algorytmu widoczny jest napis: utwórz kolną z siebie. Wyrażenie: siebie, znajduje się w polu wyboru. Na końcu bloku: powtórz, znajduje się biała strzałka skierowana w górę. W trzecim głównym polu algorytmu widać napis: zatrzymaj ten skrypt. Napis: ten skrypt znajduje się w rozwijalnym polu wyboru. Algorytm drugi. W pierwszym wewnętrznym bloku algorytmu widoczny jest napis: gdy zaczynam jako klon. W drugim bloku algorytmu widoczny jest napis: przesuń o losuj liczbę od trzydziestu do czterystu kroków. Wyrażenie losuj liczbę od trzydziestu do czterystu znajduje się w wewnętrznym bloku. Wartości trzydzieści oraz czterysta są w osobnych polach wartości. Trzeci blok algorytmy stanowi blok zawsze. Blok zawsze jest w kształcie obróconej litery Blok zawsze zbudowany jest z dwóch wewnętrznych bloków algorytmu. Na górze bloku znajduje się napis: zawsze. W pierwszym wewnętrznym polu algorytmu widoczny jest napis: czekaj dwadzieścia pięć setnych sekund. Wartość liczbowa jest w osobnym polu wartości. W drugim wewnętrznym bloku znajduje się napis: następny kostium. Na końcu bloku: zawsze, znajduje się biała strzałka skierowana w górę.
Przykładowy skrypt dla duszka kibica.
Źródło: GroMar, licencja: CC BY 3.0.
R1RwFBdbQDxU0
Ćwiczenie 6
Jak nazywa się blok, który pozwala na zmianę kostiumu duszka na następny? Możliwe odpowiedzi: 1. Następny kostium., 2. Następne tło., 3. Zmień kostium na ... .
Test jednokrotnego wyboru.
Źródło: GroMar, licencja: CC BY 3.0.
iHx6nhN4fB_d5e505
Zadania uzupełniające
2
Ćwiczenie 7
Dodaj do aplikacji wyświetlanie czasów poszczególnych zawodników w podobny sposób, jak widać na filmie z przykładową aplikacją.
Do poprawnego wyświetlania czasu każdego z zawodników należy utworzyć nowe skrypty aktualizujące zmienne Czas pierwszego/drugiego samochodu. Każda zmienna powinna być aktualizowana podczas każdego przejścia przez pętlę, która sprawdza, czy samochód dojechał na metę.
Bloki Resetuj stoper oraz stoper znajdziesz w zakładce Czujniki.
Przykładowa implementacja (sposób zaprogramowania) licznika czasu pierwszego samochodu:
R1acRi9qXAVmm
Na zdjęciu przedstawiono skrypt licznika samochodu. W pierwszym bloku algorytmu znajduje się napis: kiedy klawisz spacja naciśnięty. Słowo: spacja, znajduje się w polu wyboru. W drugim bloku algorytmu znajduje się napis: resetuj stoper. W trzecim bloku algorytmu znajduje się napis: ustaw czas pierwszego samochodu na zero. Wyrażenie: czas pierwszego samochodu znajduje się polu wyboru. W czwartym bloku algorytmu widoczny jest napis: zawsze. Blok zawsze jest w kształcie obróconej litery: U. Wewnątrz bloku znajdują się trzy wewnętrzne bloki algorytmu. W pierwszym wewnętrznym bloku algorytmu widoczny jest napis: ustaw czas pierwszego samochodu na stoper. Wyrażenie: czas pierwszego samochodu znajduje się w polu wyboru. W drugim wewnętrznym bloku znajduje się blok z napisem: jeżeli miejsce pierwszego zawodnika większe od zera to. Wyrażenie miejsce pierwszego zawodnika większe od zera znajduje się w wewnętrznym bloku. Niżej znajduje się wewnętrzne pole warunku. W polu znajduje się napis: zatrzymaj ten skrypt. Wyrażenie; ten skrypt znajduje się w polu wyboru. Na końcu bloku zawsze znajduje się biała strzałka skierowana w górę.
Skrypt licznika czasu samochodu.
Źródło: GroMar, licencja: CC BY 3.0.
RNmlDMjieuYCG
Ćwiczenie 7
W jakiej kategorii znajduje się opcja, która umożliwia zmianę widoczności zmiennej? Możliwe odpowiedzi: 1. Zmienne., 2. Ruch., 3. Kontrola.
Test jednokrotnego wyboru.
Źródło: GroMar, licencja: CC BY 3.0.
2
Ćwiczenie 8
Dodaj do aplikacji wyświetlanie miejsca, które zajął dany zawodnik, w podobny sposób, jak widać na filmie z przykładową aplikacją.
W celu pokazywania wartości zmiennej przetrzymującej miejsce danego zawodnika należy ustawić widoczność zmiennej w zakładce Zmienne.
Jeżeli chcesz, aby wartość danej zmiennej była widoczna na scenie, zaznacz kwadrat znajdujący się po jej lewej stronie.
RZw3qlkXGGrM2
Na zdjęciu przedstawiono włączanie przykładowych zmiennych dla samochodu. W centralnej części zdjęcia widać pod sobą dwa pola zaznaczania. Po prawej stronie każdego z pól widoczny jest tekst czego dotyczy dane pole. Przykładowo: czas drugiego samochodu, czas pierwszego samochodu. Oba pola są zaznaczone.
Włączenie przykładowych zmiennych dla samochodu.
Źródło: GroMar, licencja: CC BY 3.0.
RRVPL09Tb1vjm
Ćwiczenie 8
Jak nazywa się blok który pozwala ustawić wartość zmiennej na podaną wartość? Możliwe odpowiedzi: 1. Ustaw ... na ... ., 2. Zmień ... o ... .
Test jednokrotnego wyboru.
Źródło: GroMar, licencja: CC BY 3.0.
2
Ćwiczenie 9
Przeprowadź kilkanaście wyścigów i zanotuj, ile razy wygrali poszczególni zawodnicy. Wyniki porównaj z kolegami i koleżankami. Czy można przyjąć, że przy odpowiednio wielu próbach, każdy z zawodników wygra mniej więcej tyle samo razy?
Niech każdy z was przeprowadzi różną liczbę wyścigów. Porównaj wyniki z kolegami i koleżankami oraz spróbujcie wyciągnąć z nich wnioski.
Wraz ze wzrastającą liczbą przeprowadzonych wyścigów, liczba wyścigów wygranych przez każdy z samochodów będzie się coraz bardziej wyrównywać.
RL2UOuFHerRkS
Ćwiczenie 9
Czy wraz ze wzrastającą liczbą wyścigów, różnica w wygranych wyścigach pomiędzy zawodnikami będzie się powiększać czy zmniejszać? Możliwe odpowiedzi: 1. Różnica będzie się pomniejszać., 2. Różnica będzie się zwiększać.
Test jednokrotnego wyboru.
Źródło: GroMar, licencja: CC BY 3.0.
3
Ćwiczenie 10
Zmodyfikuj aplikację w taki sposób, aby automatycznie po zakończeniu wyścigu startował następny. Niech program automatycznie zlicza i wyświetla łączną liczbę wygranych dla poszczególnych zawodników. Uruchom program i obserwuj wyniki. Czy twoje wcześniejsze obserwacje potwierdzają się?
Do wykonania tego zadania najlepiej wykorzystaj komunikaty, które możesz znaleźć w zakładce Zdarzenia.
Utwórz dodatkowy skrypt, który będzie cały czas sprawdzał, czy oba samochody zakończyły wyścig. Jeżeli tak, rozpocznij przygotowania do następnego wyścigu (skrypt, w którym samochody umieszczane są na miejsca startowe).
Ostatnią modyfikacją aplikacji będzie sposób, w jaki nowe wyścigi są rozpoczynane. Skrypt przygotowujący samochody do wyścigu powinien na końcu nadawać komunikat pozwalający na jego rozpoczęcie.
Przykładowa implementacja (sposób zaprogramowania) dla pierwszego samochodu:
R11SkDSLH1Tdx
Przykładowy skrypt nadający komunikat: przygotowanie do wyścigu.
Źródło: GroMar, licencja: CC BY 3.0.
R1W4quL7lhaXb
Na zdjęciu przedstawiono przykładowy skrypt dotyczący ustawienia pierwszego samochodu na starcie. W pierwszym bloku algorytmu znajduje się napis: kiedy otrzymam przygotowanie do wyścigu. Wyrażenie: przygotowanie do wyścigu znajduje się w polu wyboru. W drugim bloku algorytmu widoczny jest napis idź do x: minus sto pięćdziesiąt, y: trzydzieści. Wartości minus sto pięćdziesiąt oraz trzydzieści są w osobnych polach wartości. W trzecim bloku algorytmy znajduje się napis: ustaw miejsce pierwszego zawodnika na zero. Wyrażenie: miejsce pierwszego zawodnika jest w polu wyboru. Wyboru dokonuje się poprzez naciśnięcie białego trójkąta znajdującego się na końcu wyrażenia. Wartość zero jest w osobnym polu. W czwartym bloku algorytmu widać napis: nadaj komunikat rozpocznij wyścig. Wyrażenie rozpocznij wyścig znajduje się w rozwijalnym polu wyboru. W piątym bloku algorytmu widać napis: zatrzymaj ten skrypt. Napis: ten skrypt znajduje się w rozwijalnym polu wyboru.
Przykładowy skrypt dla ustawienia pierwszego samochodu na starcie.
Źródło: GroMar, licencja: CC BY 3.0.
RcbkTxhvCiOWS
Na zdjęciu przedstawiono przykładowy skrypt przebiegu wyścigu. W pierwszym bloku algorytmu znajduje się napis: kiedy otrzymam rozpocznij wyścig. Wyrażenie: rozpocznij wyścig znajduje się w rozwijalnym polu wyboru. W drugim polu algorytmu znajduje się napis: powtarzaj aż dotyka linia mety?. Wyrażenie: dotyka linia mety? znajduje się w wewnętrznym bloku. Sformułowanie: linia mety umieszczona jest w rozwijalnym polu wyboru. W pierwszym wewnętrznym bloku skryptu powtarzaj znajduje się napis: przesuń o losuj liczbę od jeden do dziesięć kroków. Wyrażenie losuj liczbę od jeden do dziesięć znajduje się w wewnętrznym bloku. Na końcu bloku: powtarzaj, znajduje się biała strzałka skierowana w górę. W trzecim głównym bloku algorytmu znajduje się napis: ustaw miejsce pierwszego zawodnika na miejsce drugiego zawodnika plus jeden. Wyrażenie: miejsce pierwszego zawodnika jest w polu wyboru. Wyboru dokonuje się poprzez naciśnięcie białego trójkąta znajdującego się na końcu wyrażenia. Wyrażenie: miejsce drugiego zawodnika plus jeden znajduje się w wewnętrznym bloku. Wartość jeden jest w osobnym polu. W czwartym głównym bloku algorytmu widać napis: nadaj komunikat: zawodnik numer jeden na mecie. Wyrażenie: zawodnik numer jeden na mecie znajduje się w rozwijalnym polu wyboru. W piątym bloku algorytmu znajduje się napis: jeżeli miejsce pierwszego zawodnika równa się jeden to. Wyrażenie miejsce pierwszego zawodnika równa się jeden znajduje się w wewnętrznym osobnym bloku. Niżej znajduje się wewnętrzny blok warunku. W pierwszym wewnętrznym bloku: jeżeli widać napis: zmień wygrane wyścigi przez pierwszy samochód o jeden. Wyrażenie: wygrane wyścigi przez pierwszy samochód umieszczone jest w rozwijalne pole wyboru. Na końcu bloku: jeżeli, znajduje się biała strzałka skierowana w górę. W szóstym bloku algorytmu widać napis: zatrzymaj ten skrypt. Napis: ten skrypt znajduje się w rozwijalnym polu wyboru.
Przykładowy skrypt przebiegu wyścigu.
Źródło: GroMar, licencja: CC BY 3.0.
RUZFYHVuhUsTr
Na zdjęciu przedstawiono skrypt dla pierwszego samochodu. W pierwszym bloku algorytmu znajduje się napis: kiedy otrzymam rozpocznij wyścig. Słowa: rozpocznij wyścig, znajduje się w polu wyboru. W drugim bloku algorytmu znajduje się napis: resetuj stoper. W trzecim bloku algorytmu znajduje się napis: ustaw czas pierwszego samochodu na zero. Wyrażenie: czas pierwszego samochodu znajduje się polu wyboru. W czwartym bloku algorytmu widoczny jest napis: zawsze. Blok zawsze jest w kształcie obróconej litery: U. Wewnątrz bloku znajdują się trzy wewnętrzne bloki algorytmu. W pierwszym wewnętrznym bloku algorytmu widoczny jest napis: ustaw czas pierwszego samochodu na stoper. Wyrażenie: czas pierwszego samochodu znajduje się w polu wyboru. W drugim wewnętrznym bloku znajduje się blok z napisem: jeżeli miejsce pierwszego zawodnika większe od zera to. Wyrażenie miejsce pierwszego zawodnika większe od zera znajduje się w wewnętrznym bloku. Niżej znajduje się wewnętrzne pole warunku. W polu znajduje się napis: zatrzymaj ten skrypt. Wyrażenie; ten skrypt znajduje się w polu wyboru. Na końcu bloku zawsze znajduje się biała strzałka skierowana w górę.
Przykładowy skrypt dla pierwszego samochodu.
Źródło: GroMar, licencja: CC BY 3.0.
RFnUytnpOASSp
Ćwiczenie 10
W jakiej kategorii znajdują się bloki umożliwiające liczenie czasu? Możliwe odpowiedzi: 1. Czujniki, 2. Ruch, 3. Kontrola