Prawdopodobnie domyślasz się, co będzie tematem tego tekstu. Zapewne masz już pewne pojęcie o grach w zgadywanie liczb i o tym, jak można je zaimplementować przy użyciu Pythona.
W tym artykule nauczymy się, jak samodzielnie stworzyć grę polegającą na odgadywaniu liczb.
Gra w zgadywanie numerów
Zasady gry są bardzo proste. Użytkownik musi odgadnąć liczbę, która została wygenerowana losowo w przedziale od 1 do 100. I to właściwie wszystko.
Czy gra rzeczywiście jest tak nieskomplikowana?
Tak, właśnie taka jest.
Jednak jest jeden element, który musimy zapewnić graczom, aby ułatwić im odgadnięcie właściwej liczby. Są to wskazówki. Należy przekazywać użytkownikowi informacje, czy podana przez niego liczba jest mniejsza, czy większa od wylosowanej. Dzięki temu użytkownik będzie wiedział, w jakim kierunku powinien zmierzać.
Możemy uatrakcyjnić grę poprzez dodanie dodatkowych opcji, takich jak ograniczenie liczby prób, poszerzenie zakresu liczb do odgadnięcia, wprowadzenie timera, itp.
Konieczne jest stworzenie działającej podstawowej wersji gry. Później możemy dodać kolejne udogodnienia, o których wspomniałem. W tym fragmencie skupimy się na zbudowaniu bazowej wersji. Następnie przejdziemy do implementacji nowych funkcjonalności.
Zachęcam Cię, abyś spróbował stworzyć grę samodzielnie, bez bezmyślnego kopiowania kodu. Najpierw przedstawię algorytm działania gry. To ułatwi Ci samodzielne kodowanie lub szybkie zrozumienie kodu.
Prześledźmy algorytm potrzebny do stworzenia gry w zgadywanie liczb.
Algorytm
Upewnij się, że w pełni rozumiesz algorytm, zanim przejdziesz do kodowania.
- Ustal zakres liczb. Domyślnie jest to przedział od 1 do 100, ale można go dostosować według uznania.
- Wygeneruj losową liczbę całkowitą z określonego zakresu (1-100).
- Rozpocznij grę, wyświetlając graczowi komunikat, np. „Odgadnij liczbę z zakresu od X do Y”. Możesz spersonalizować ten komunikat.
- Zainicjuj zmienną o wartości 0, która będzie zliczała liczbę prób podjętych przez użytkownika, aby poprawnie odgadnąć liczbę.
- Wprowadź nieskończoną pętlę.
- Poproś gracza o podanie liczby.
- Jeśli aktualnie odgadnięta liczba jest równa wylosowanej, wyświetl komunikat gratulacyjny, np. „Brawo! Odgadłeś liczbę w 5 próbach!”.
- Po pogratulowaniu użytkownikowi, przerwij działanie pętli.
- Jeśli aktualnie odgadnięta liczba jest mniejsza od wylosowanej, wyświetl komunikat „Podana liczba jest za mała” lub komunikat o podobnym znaczeniu.
- Jeśli aktualnie odgadnięta liczba jest większa od wylosowanej, wyświetl komunikat „Podana liczba jest za duża” lub komunikat o podobnym znaczeniu.
- Zwiększ liczbę prób podjętych przez gracza.
Po zapoznaniu się z algorytmem, powinieneś mieć w głowie zarys kodu. Nie przejmuj się, jeśli nie masz jeszcze pełnego obrazu. Najważniejsze, że rozumiesz przedstawiony algorytm.
Czas przejść do kodowania. Przejdźmy zatem od razu do sedna sprawy.
Kod
Czy podjąłeś próbę samodzielnego napisania kodu?
Jeśli tak i udało Ci się to zrobić, to gratulacje! Sprawdź teraz kod i przeanalizuj go, aby poszerzyć swoją wiedzę.
Nie przejmuj się, jeśli nie napisałeś kodu. Zapoznaj się z poniższym kodem i postaraj się go zrozumieć. Spróbuj go udoskonalić lub napisać na swój sposób, aby jeszcze lepiej zrozumieć.
Przejdźmy więc do kodu.
import random class NumberGuessingGame: def __init__(self): ## definiowanie zakresu self.LOWER = 1 self.HIGHER = 100 ## metoda generująca liczbę losową def get_random_number(self): return random.randint(self.LOWER, self.HIGHER) ## metoda uruchamiająca grę def start(self): ## generowanie liczby losowej random_number = self.get_random_number() print(f"Odgadnij losowo wygenerowaną liczbę z zakresu od {self.LOWER} do {self.HIGHER}") ## serce gry chances = 0 while True: user_number = int(input("Wprowadź odgadniętą liczbę: ")) if user_number == random_number: print(f"-> Brawo! Odgadłeś liczbę w {chances + 1} próbie{'s' if chances > 1 else ''}!") break elif user_number < random_number: print("-> Twoja liczba jest za mała") else: print("-> Twoja liczba jest za duża") chances += 1 ## inicjalizacja i uruchomienie gry numberGuessingGame = NumberGuessingGame() numberGuessingGame.start()
Z kodu można wyciągnąć kilka wniosków.
- Zakres liczb jest zdefiniowany w metodzie __init__, dzięki czemu jest dostępny w ramach wszystkich metod klasy.
- Możemy łatwo zmienić zakres w jednym miejscu, a ta zmiana będzie odzwierciedlona w całej aplikacji.
- Zastosowano osobną metodę do generowania liczby losowej, co jest zgodne z zasadą „oddzielania odpowiedzialności”. W tym przypadku metoda nie zawiera dużo kodu, ale może się to zmienić w przyszłości.
- Użycie klasy pozwoliło zgrupować wszystkie metody związane z grą w jednym miejscu, co ułatwia jej ponowne wykorzystanie w innych aplikacjach.
Powyższe uwagi są związane z pisaniem przejrzystego kodu. Powinniśmy dążyć do pisania kodu, który będzie zrozumiały nawet po wielu latach.
Przykładowy przebieg gry wygląda następująco.
$ python number_guessing_game.py Odgadnij losowo wygenerowaną liczbę z zakresu od 1 do 100 Wprowadź odgadniętą liczbę: 50 -> Twoja liczba jest za mała Wprowadź odgadniętą liczbę: 75 -> Twoja liczba jest za mała Wprowadź odgadniętą liczbę: 90 -> Twoja liczba jest za duża Wprowadź odgadniętą liczbę: 85 -> Twoja liczba jest za duża Wprowadź odgadniętą liczbę: 80 -> Brawo! Odgadłeś liczbę w 5 próbach!
Zakładam, że masz zainstalowanego Pythona, aby móc przetestować powyższy kod.
Dodatkowa funkcjonalność
Wprowadźmy teraz ograniczenie maksymalnej liczby prób, które użytkownik może podjąć, aby odgadnąć liczbę. Jeśli gracz nie odgadnie liczby w ramach dozwolonej liczby prób, przegrywa.
Jak to zrobimy?
To prosty proces, który składa się z dwóch etapów. Prześledźmy je.
- Ustal maksymalną liczbę prób, jakie ma użytkownik na odgadnięcie liczby.
- Sprawdzaj, czy użytkownikowi nie skończyły się próby przed kolejnym zapytaniem o wprowadzenie liczby. Jeśli tak, zakończ grę.
Poniższy fragment kodu wprowadzi tę funkcję.
- Dodaj poniższy kod wewnątrz metody __init__.
self.MAX_CHANCES = 10
- Dodaj poniższy warunek przed pobraniem kolejnej próby od użytkownika.
if chances == self.MAX_CHANCES: print("-> Niestety! Przegrałeś grę. Wykorzystałeś wszystkie próby")
Teraz przetestuj grę, nie zgadując prawidłowej liczby. Powinieneś zobaczyć wynik podobny do poniższego.
$ python number_guessing_game.py Odgadnij losowo wygenerowaną liczbę z zakresu od 1 do 100. Masz 10 prób na odgadnięcie. Wprowadź odgadniętą liczbę: 1 -> Twoja liczba jest za mała Wprowadź odgadniętą liczbę: 2 -> Twoja liczba jest za mała Wprowadź odgadniętą liczbę: 3 -> Twoja liczba jest za mała Wprowadź odgadniętą liczbę: 4 -> Twoja liczba jest za mała Wprowadź odgadniętą liczbę: 5 -> Twoja liczba jest za mała Wprowadź odgadniętą liczbę: 6 -> Twoja liczba jest za mała Wprowadź odgadniętą liczbę: 7 -> Twoja liczba jest za mała Wprowadź odgadniętą liczbę: 8 -> Twoja liczba jest za mała Wprowadź odgadniętą liczbę: 9 -> Twoja liczba jest za mała Wprowadź odgadniętą liczbę: 10 -> Twoja liczba jest za mała -> Niestety! Przegrałeś grę. Wykorzystałeś wszystkie próby
Wspaniale! Dodaliśmy nową funkcjonalność do naszej gry. Ale to jeszcze nie koniec. Możesz dodać kolejne elementy, aby uczynić ją jeszcze bardziej atrakcyjną dla użytkowników. Teraz Twoja kolej. Działaj i spraw, aby gra stała się jeszcze lepsza! :).
Podsumowanie
Stworzyliśmy prostą grę w zgadywanie liczb. Teraz Twoja kolej, aby zastanowić się nad grami, w które grałeś w dzieciństwie. Odtwórz je przy użyciu języka programowania i podziel się nimi z przyjaciółmi. Możemy zdigitalizować wiele naszych dziecięcych zabaw.
Następnie zapoznaj się z Python IDE i kompilatorem online, aby uruchamiać swój kod w Pythonie.
Udanej zabawy z kodowaniem! 🙂
Jeśli nie masz dosyć gier słownych, to sprawdź jak możesz grać lepiej w Wordle.
Podobał Ci się artykuł? Podziel się nim ze światem!
newsblog.pl