Fragment blatu stołu na którym rozrzucone są kostki do gry.
Fragment blatu stołu na którym rozrzucone są kostki do gry.
Losowość i zmienne w Scratch
Zabawa w zgadywanie liczby
Może znasz grę w zgadywanie liczby? Zadaniem jednego z graczy jest odgadnięcie liczby naturalnej (np. nie mniejszej niż i nie większej niż ), którą pomyślał drugi gracz. Zagraj w zgadywankę z kolegą lub koleżanką. Poproś, żeby zapisał(a) na kartce liczbę ( tak, żebyś jej nie widział(a) ) i spróbuj ją zgadnąć. Kolega lub koleżanka będzie Ci podpowiadać mówiąc za dużo lub za mało. Pamiętaj, aby potem zamienić się rolami. Jeśli trudno Wam zgadnąć liczbę, ograniczcie zakres dozwolonych liczb, np. do lub .
Ćwiczenie 1
Zapisz w punktach rolę gracza, który pomyślał liczbę. Jakie kolejne czynności wykonuje?
RCvlHImwpOtZo
Źródło: GroMar, licencja: CC BY 3.0.
Wymyśl liczbę z określonego przedziału, na przykład od do , a następnie poproś kogoś, aby spróbował ją odgadnąć. Zapisuj kolejne kroki podczas gry, takie jak wyjaśnienie zasad, odczytywanie liczb i reagowanie na odpowiedzi osoby zgadującej. Kontynuujcie tę interakcję, aż osoba odgadnie właściwą liczbę.
Przykładowe postępowanie gracza, który pomyślał liczbę:
Zapisuje liczbę na kartce.
Prosi o zgadnięcie liczby i czeka na odpowiedź.
Jeżeli odpowiedź jest taka sama jak liczba zapisana na kartce: 3.1. Gratuluje zgadnięcia. 3.2. Kończy grę.
Jeżeli odpowiedź jest większa od liczby na kartce: 4.1. Mówi za dużo, w przeciwnym przypadku: 4.2. Mówi za mało.
Ponownie prosi o zgadnięcie liczby i czeka na odpowiedź.
Powtarza czynności od punktu .
Stwórzmy tę grę w języku Scratch. Potrzebne informacje na ten temat znajdziesz w materiale Wprowadzenie do środowiska ScratchP9AYGQXHJWprowadzenie do środowiska Scratch.
Rolę gracza, który pomyślał liczbę, będzie pełnij komputer. Twoim zadaniem będzie zaprojektowanie algorytmu postępowania komputera i zapisanie skryptu go realizującego. Wybierz z galerii (lub zaprojektuj własne w edytorze graficznym) tło sceny oraz duszka, który będzie reprezentował komputer w grze, czyli prosił Ciebie o zgadnięcie liczby i naprowadzał na poprawną odpowiedź.
RCoRparwvBM47
Obrazek przestawia salę dyskotekową z estradą, czyli podwyższeniem, na którym artyści wykonują swoje utwory. Znajduje się ono w centralnej części sceny. Na estradzie stoi dziewczynka ubrana na czerwono z bujną blond fryzurą. Skierowane są na nią 3 reflektory, a nad jej głową wisi kula dyskotekowa. Dziewczynka‑duszek zadaje użytkownikowi pytanie: "Zgadnij liczę, którą pomyślałam:". Na dole obrazka umieszczone jest okienko do podania odpowiedzi. Pomieszczenie jest przyozdobione w szereg innych reflektorów emitujących światło w różnych kolorach oraz głośniki znajdujące się na obrzeżach sceny służące do nagłaśniania wystąpień. Sama scena jest koloru szarego, a ściany sali są niebieskie.
Przykładowa implementacja gry w zgadywanie liczby.
Źródło: nn, licencja: CC BY 3.0.
Implementacja gry
Szanse na to, że zgadniesz liczbę za pierwszym razem są bardzo małe. Komputer będzie więc wielokrotnie prosił Ciebie o podanie liczby i udzielał podpowiedzi. Kiedy komputer powinien zakończyć zadawanie pytań? Odpowiedź jest oczywista: kiedy zgadniesz, czyli podasz liczbę pomyślaną przez komputer.
Ćwiczenie 2
Zapisz w punktach algorytm postępowania komputera sterującego grą w zgadywanie liczby. Niech komputer losuje liczbę, którą gracz powinien odgadnąć. Może być to liczba z zakresu od do .
RrJ5hkD6w36XW
Źródło: GroMar, licencja: CC BY 3.0.
Możesz zasugerować się algorytmem wykorzystanym w ćwiczeniu .
Przykładowy algorytm na grę w zgadywanie liczby może wyglądać następująco:
Po uruchomieniu (np. kliknięciu zielonej flagi):
Tworzę zmienną o nazwie losowa liczba.
Przypisuję zmiennej losową wartość z zakresu od do .
Proszę użytkownika o podanie odgadywanej liczby i czekam.
Powtarzam, aż podana odpowiedź jest równa wylosowanej liczbie: 4.1. Jeżeli podana odpowiedź jest większa niż wylosowana liczba: ⠀ 4.1.1. Informuję użytkownika, że podał za dużą liczbę. W przeciwnym razie: ⠀ 4.1.2. Informuję użytkownika, że podał za małą liczbę. 4.2. Proszę o ponowne podanie odgadywanej liczby i czekam.
Informuję użytkownika, że podał wylosowaną liczbę.
Kończę działanie skryptu.
W tym projekcie wykorzystasz zmienną do zapamiętania wylosowanej liczby. Utwórz ją wcześniej. Zwróć uwagę, że wartości zmiennych domyślnie są widoczne na scenie. W tej zabawie grający ma zgadnąć wylosowaną liczbę, więc powinna ona być ukryta. Możesz pozostawić ją widoczną na potrzeby testów, ale potem pamiętaj o wyłączeniu jej widoczności. Możesz wykorzystać także w skrypcie blok ukryj zmiennąiX7liXRCoZ_d357e138ukryj zmienną.
Ćwiczenie 3
Zapisz skrypt realizujący algorytm z powyższego zadania. Pamiętaj o sprawdzeniu poprawności działania skryptu.
Zwróć uwagę, żeby wybrać odpowiedni blok odpowiedzialny za powtarzanie instrukcji. Pozostałe potrzebne bloki do pobrania i odczytania wartości, takie jak zapytaj i czekajiX7liXRCoZ_d357e155zapytaj i czekaj oraz odpowiedźiX7liXRCoZ_d357e164odpowiedź znajdziesz w kategorii Czujniki.
Twój skrypt może wyglądać na przykład tak:
R1ag5dq1ESzdT
Zrzut ekranu przedstawiający skrypt, który losuje liczbę z przedziału od jeden do sto. Następnie użytkownik jest proszony o zgadnięcie tej liczby. W przypadku podania liczby za dużej, skrypt zwraca: "Za dużo!". W przypadku podania za małej liczby, skrypt zwraca: "Za mało!". Skrypt kończy się w sytuacji podania poprawnej liczby. Pierwszy wiersz: Kiedy kliknięto zieloną flagę. Drugi wiersz: Ustaw zmienną "losowa liczba" na losuj od jeden do sto. Trzeci wiersz: Zapytaj: "Pomyślałem liczbę naturalną od jeden do sto. Jaka to liczba?" i czekaj. Czwarty wiersz: Powtarzaj aż zmienna "losowa liczba" równa się zmiennej "odpowiedź". Piąty wiersz: Jeżeli zmienna "odpowiedź" jest większa od zmiennej "losowa liczba" to. Szósty wiersz: Powiedz: "Za dużo!" przez 3 sekundy. W przeciwnym razie: Siódmy wiersz: Powiedz: "Za mało!" przez 3 sekundy. Ósmy wiersz: Zapytaj: "Podaj ponownie liczbę!" i czekaj. Dziewiąty wiersz: Powiedz: "Brawo! To moja liczba!". Dziesiąty wiersz: Zatrzymaj ten skrypt.
Przykładowe rozwiązanie zadania - skrypt.
Źródło: GroMar, licencja: CC BY 3.0.
iX7liXRCoZ_d357e138
R10UOh8m4DV8v
Zrzut ekranu przedstawia blok języka Scratch z kategorii zmienne: "ukryj zmienną z wybraną wartością z listy: 'losowa liczba' ".
Blok "ukryj zmienną ...".
Źródło: GroMar, licencja: CC BY 3.0.
Wartość zmiennej o nazwie wybranej z listy rozwijalnej nie będzie wyświetlana na scenie. Blok działa analogicznie, jak edycyjne wyłączenie znacznika przy nazwie zmiennej.
iX7liXRCoZ_d357e155
RrUuqJIblA0Md
Zrzut ekranu przedstawia blok z kategorii "czujniki": "zapytaj ... i czekaj". Blok ten pyta użytkownika o daną rzecz, którą należy wypełnić w pozostawionej luce, a następnie czeka na jego odpowiedź.
Blok "zapytaj ... i czekaj".
Źródło: GroMar, licencja: CC BY 3.0.
Blok wyświetla w dymku komiksowym podany tekst oraz pole edycyjne na dole sceny do wprowadzenia odpowiedzi. Dana podana w polu edycyjnym dostępna jest w skryptach jako wartość bloku odpowiedź.
Przykład:
R2dMUYbtyTTAY
Zrzut ekranu przedstawia przykładowe działanie skryptu opartego o blok: "zapytaj ... i czekaj". Pierwszy wiersz: Kiedy kliknięto. Drugi wiersz: Zapytaj "Jak masz na imię?" i czekaj. Trzeci wiersz: Powiedz: "dzień dobry" i odpowiedź udzielona przez użytkownika. Czwarty wiersz: Zatrzymaj ten skrypt.
Przykład z użyciem bloku "zapytaj ... i czekaj".
Źródło: GroMar, licencja: CC BY 3.0.
iX7liXRCoZ_d357e164
R7yxtEuhXvzND
Zrzut ekranu przedstawia blok z kategorii "czujniki": "odpowiedź". Blok ten jest zmienną, w której przetrzymywana jest odpowiedź. Po lewej stronie bloku znajduje się kwadratowe okno, którego zaznaczenie powoduje pokazywanie się na ekranie aktualnej wartości tej zmiennej w trakcie działania programu.
Blok zmiennej "odpowiedź".
Źródło: GroMar, licencja: CC BY 3.0.
Wynik działania bloku Zapytaj i czekaj – podana przez użytkownika odpowiedź. Włączenie znacznika po lewej stronie bloku w obszarze wzorców powoduje wyświetlanie podanej odpowiedzi na scenie.
Przykład:
R1LsQR5bi0cPN
Zrzut ekranu przedstawia działanie skryptu opartego o blok: "zapytaj ... i czekaj". Pierwszy wiersz: Zapytaj: "Jak masz na imię?" i czekaj. Drugi wiersz: Powiedz: "dzień dobry" i udzielona odpowiedź. Czwarty wiersz: Zatrzymaj ten skrypt.
Przykład z użyciem zmiennej "odpowiedź".
Źródło: GroMar, licencja: CC BY 3.0.
Zadania uzupełniające
Ćwiczenie 4
Dodaj do gry w zgadywanie liczby licznik pytań. Po odgadnięciu liczby wyświetl informację, w której próbie udało się grającemu zgadnąć liczbę.
Przemyśl w którym momencie musisz stworzyć licznik, jaką powinien mieć wartość początkową oraz kiedy będziesz zwiększał jego wartość.
Przykładowy skrypt:
R19S93VGgnHRd
Zrzut ekranu przedstawia zmodyfikowany skrypt ze zgadywaniem wylosowanej liczby wraz z licznikiem. To znaczy, że użytkownik po podaniu poprawnej odpowiedzi dostanie informację zwrotną przy której próbie udało mu się to osiągnąć. Pierwszy wiersz: kiedy kliknięto zielona flagę. Drugi wiersz: ustaw zmienną: "losowa liczba" w zakresie jeden do sto. Trzeci wiersz: Ustaw zmienną "licznik" na jeden. Czwarty wiersz: Zapytaj: "Pomyślałem liczbę naturalną od jeden do sto. Jaka to liczba?" i czekaj. Piąty wiersz: Powtarzaj aż zmienna "losowa liczba" równa się zmiennej "odpowiedź". Szósty wiersz: Jeżeli podana odpowiedź jest większa od zmiennej "losowa liczba" to: siódmy wiersz: Powiedz: "Za dużo". W przeciwnym razie: Ósmy wiersz: Powiedz: "Za mało". Dziewiąty wiersz: Zmień licznik o jeden. Dziesiąty wiersz: Zapytaj: "Podaj ponownie liczbę" i czekaj. Jedenasty wiersz: Powiedz: "Brawo! To moja liczba! Udało Ci się ją zgadnąć przy próbie numer:" i podaj wartość zmiennej "licznik". Dwunasty wiersz: Zatrzymaj ten skrypt.
Przykładowe rozwiązanie zadania - skrypt.
Źródło: GroMar, licencja: CC BY 3.0.
Ćwiczenie 5
Zagraj kilkukrotnie w grę. Zapisz w punktach algorytm zgadującego, prowadzący do odgadnięcia liczby w jak najmniejszej liczbie prób.
Przemyśl, jaką liczbę należy podać, aby wykluczyć jak największą ilość niepoprawnych liczb przy każdej próbie.
Podajemy liczbę znajdującą się w połowie zakresu, z którego komputer losuje, dzięki temu dostajemy wiadomość zwrotną, w której połówce znajduje się poszukiwana liczba.
Na podstawie odpowiedzi komputera ustalamy nowy zakres, w którym znajduje się szukana wartość i kontynuujemy strategię wybierania liczby znajdującej się najbliżej połowy nowo ustalonego przedziału. Powtarzamy ten krok do czasu, aż odgadniemy wylosowaną przez komputer liczbę.
Ważne!
Stosując powyższą taktykę prawdopodobnie w wynik trafimy wcześniej, ale w razie pecha możemy doprowadzić do sytuacji, w której najmniejsza liczba zakresu będzie jednocześnie największą liczbą tego zakresu i liczbą, której poszukujemy.
Poniżej znajduje się pole tekstowe przeznaczone do zapisywania notatek. Możesz w nim zapisać wszystkie informacje, które uważasz za potrzebne.
R1d0TuXcBPO88
Pole tekstowe do zapisywania odpowiedzi i notatek.