W klasie piątej przygotowywaliście projekt pt. „Zabawa w zgadywanie liczby”. Duszek losował liczbę naturalną, np. od 1 do 100, a zadaniem gracza było odgadnięcie tej liczby. Duszek pomagał graczowi, podpowiadając, czy jego liczba jest mniejsza, czy większa, od podanej.
Polecenie 1
Zagraj z komputerem w zgadywanie liczby. Uruchom poniższą aplikację. Postaraj się zgadnąć liczbę w jak najmniejszej liczbie prób.
R18oKA0tBe8Py1
Teraz twoim zadaniem będzie przygotowanie aplikacji, w której role zostaną odwrócone. To duszek zgadnie liczbę pomyślaną przez ciebie.
ibbyMZ8WPA_d5e122
Algorytm zgadującego
Ćwiczenie 1
Zapisz w postaci listy kroków algorytm zadawania pytań przez duszka. Możesz uruchomić poniższą aplikację, w której duszek zgaduje liczbę pomyślaną przez ciebie.
R1LFe6wKBSnW61
Wskazówka
Łatwo zauważyć, że duszek zawsze pyta się o liczbę będącą środkiem przedziału, w którym liczba na pewno się znajduje. W zależności od odpowiedzi odpowiednio zawęża przedział poszukiwań. Powinien więc pamiętać końce przedziału oraz wyznaczyć jego środek, a po otrzymaniu odpowiedzi zaktualizować jeden z końców. Jak dojdzie do sytuacji, że początek jest równy końcowi, to już wie jaka to liczba (chyba, że wcześniej przypadkowo zgadł).
Algorytm zgadującego liczbę naturalną z zakresu od 1 do 100: a – dolna granica przedziału, w którym znajduje się poszukiwana liczba; b – górna granica przedziału, w którym znajduje się poszukiwana liczba; c – środek przedziału od a do b. Przykładowy zapis algorytmu zgadującego: 1.Ustaw zmienną a na 1. 2.Ustaw zmienną b na 100. 3.Powtarzaj aż a=b: 3.1.Ustaw c na środek przedziału od a do b. 3.2.Zapytaj się, czy to liczba c. 3.3.Jeżeli tak to: 3.3.1.Powiedz „Zgadłem!”. 3.3.2.Zatrzymaj ten skrypt. 3.4.Jeżeli poszukiwana liczba jest większa to: 3.4.1.Ustaw zmienną a na c+1. w przeciwnym przypadku: 3.4.1.Ustaw zmienną b na c-1. 4.Powiedz „Wiem, Twoja liczba to:” a. 5.Zatrzymaj ten skrypt.
ibbyMZ8WPA_d5e211
Przygotowujemy aplikację
Ćwiczenie 2
Ustal zasady komunikacji z grającym. W przykładowej aplikacji komunikacja następowała za pomocą przycisków. W pierwszej wersji gry wygodniej będzie komunikować się za pomocą polecenia zapytaj i czekajibbyMZ8WPA_d403e140zapytaj i czekaj. Należy więc określić sposób odpowiadania przez gracza: jakich znaków, słów lub tekstów będzie używał jako odpowiedzi na zadawane pytania przez duszka.
Przykład 1: ”tak” – to moja liczba, ”mniej” – moja liczba jest mniejsza, ”więcej” – moja liczba jest większa. Przykład 2: ”=” – to moja liczba, ”<” – moja liczba jest mniejsza, ”>” – moja liczba jest większa. Przykład 3: ”tak” – to moja liczba, ”za dużo” – moja liczba jest mniejsza, ”za mało” – moja liczba jest większa.
Ćwiczenie 3
Zmodyfikuj zapis algorytmu w postaci listy kroków uwzględniając ustalenia z poprzedniego zadania. Należy także przewidzieć sytuację, że grający wpisze tekst niezrozumiały dla duszka – pomyli się, wpisując odpowiedź. Po uruchomieniu gry, np. zieloną flagą, daj czas graczowi na pomyślenie liczby, niech zadawanie pytań przez duszka rozpocznie się po określonym czasie lub po wciśnięciu wybranego klawisza na klawiaturze.
Przykładowe modyfikacje: Kiedy wciśnięto zieloną flagę: 1.Powiedz „Pomyśl liczbę całkowitą od 1 do 100, a ją zgadnę! Naciśnij spację, jak będziesz gotowy.” 2.Czekaj aż klawisz spacja naciśnięty. 3.Ustaw zmienną a na 1. 4.Ustaw zmienną b na 100. 5.Powtarzaj aż a=b: 5.1.Ustaw c na środek przedziału od a do b. 5.2.Zapytaj się, czy to liczba c. 5.3.Jeżeli odpowiedź=tak to: 5.3.1.Powiedz „Zgadłem!”. 5.3.2.Zatrzymaj ten skrypt. 5.4.Jeżeli odpowiedź=więcej to: 5.4.1.Ustaw zmienną a na c+1. w przeciwnym przypadku: 5.4.1.Jeżeli odpowiedź=mniej to: 5.4.1.1.Ustaw zmiennąbnac-1. w przeciwnym przypadku: 5.4.1.1.Powiedz „Nie rozumiem..., odpowiedz mi: tak, mniej lub więcej”. 6.Powiedz „Wiem, Twoja liczba to:” a. 7.Zatrzymaj ten skrypt.
Przygotuj interfejs użytkownika do gry, czyli wybierz scenę (lub zaprojektuj własną), dobierz duszka, który będzie zadawał pytania. Utwórz też zmienne, które będą potrzebne przy realizacji algorytmu zgadywania liczby.
Ćwiczenie 4
Utwórz skrypt realizujący algorytm zgadywania liczby przez duszka.
Wskazówka
Wyznaczając środek przedziału c=(a+b)/2 otrzymasz liczbę niecałkowitą dla a+b nieparzystego. Skorzystaj z klocka podłogaibbyMZ8WPA_d403e184klocka podłoga, aby uzyskać część całkowitą liczby. Do łączenia tekstu i wartości zmiennej w wyświetlanych dymkach skorzystaj z klocka połączibbyMZ8WPA_d403e190klocka połącz.
R1YPkLM8SYf7G1
ibbyMZ8WPA_d403e140
R12NYND7f3HqA1
ibbyMZ8WPA_d403e184
Rp0E0CjRiqWWY1
Funkcja podłoga zaokrągla liczbę rzeczywistą „w dół”, a funkcja sufit „w górę”. Wartością funkcji podłoga jest największa liczba całkowita mniejsza lub równa od parametru, a wartością funkcji sufit najmniejsza liczba całkowita większa od parametru. Funkcję należy wybrać z listy rozwijalnej.
R1Ob53iT0t4tu1
Przykłady:
R12q4GznVGjCo1
RhZBPS9qVhypu1
R2MWWh2R7eRX21
R1Hom7vpnwfDi1
ibbyMZ8WPA_d403e190
ROhbNJg8B3HTG1
ibbyMZ8WPA_d5e406
Zadania uzupełniające
Ćwiczenie 5
Wprowadź do aplikacji licznik pytań. Uruchom kilkukrotnie aplikację. Ile pytań maksymalnie zada duszek, aby zgadnąć liczbę pomyślaną przez ciebie?
Ćwiczenie 6
Zmień przedział, w którym znajduje się pomyślana liczba. Najlepiej, niech duszek się zapyta na początku o dolną i górną granicę, w jakim przedziale ma poszukiwać liczbę. Wypróbuj działanie aplikacji dla różnych przedziałów, np. od 1 do 1000, od 1 do 10000. Obserwuj liczbę pytań zadawanych przez duszka.
Ćwiczenie 7
Przygotuj aplikację z wykorzystaniem przycisków do udzielania odpowiedzi.
Wskazówka
Przyciski powinny być duszkami. Do komunikacji pomiędzy duszkami możesz wykorzystać mechanizm nadawania i odbierania komunikatówibbyMZ8WPA_d403e224mechanizm nadawania i odbierania komunikatów.
ibbyMZ8WPA_d403e224
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 mety:
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ładowy algorytm działania duszka kibicującego pierwszemu zawodnikowi może być następujący: Kiedy kliknięto zieloną flagę: