Back to Top
 
 

Napisz swoją pierwszą grę!

Zobaczcie, ile się już nauczyliśmy! Znamy już wszystkie elementy programowania, żeby napisać coś własnego: na przykład prostą zgadywankę. Jej zasady będą proste: komputer pomyśli liczbę od 1 do 10, a zadaniem gracza będzie odgadnięcie tej liczby. Komputer podpowie nam, czy nasza próba była trafna, albo czy zgadywana liczba jest większa, czy mniejsza od „pomyślanej” przez komputer.

Zanim to zrobimy, musimy nauczyć się jeszcze trzech prostych rzeczy.

Pobieranie danych od użytkownika

W Pythonie istnieje komenda input, która jako parametr przyjmuje napis. Ten napis, to komunikat, który się wyświetli, a potem komputer poczeka na odpowiedź użytkownika. Po wprowadzeniu informacji i naciśnięciu Enter, funkcja input zwróci wartość, którą można przypisać do zmiennej.

 

Oto przykład:

my_data = input(“Podaj swój wiek “)

Po wykonaniu tej instrukcji zmienna my_data będzie przechowywać wartość wpisaną przez użytkownika z klawiatury.

Uwaga: ta wartość to zawsze napis. Musimy zatem przekonwertować napis do liczby:

my_age = int(my_data)

Funkcja int podejmie próbę przekonwertowania napisu do liczby. Jeśli się jej to nie uda – zgłosi błąd ValueError. Poprawnie zostaną przekonwertowane te napisy, które składają się tylko z cyfr, np: “11”, “485”, “228”, ale “11a”, “1667.3”, “I am your father!” – już nie! Oczywiście Python pozwala na zabezpieczenie się przed takimi błędnymi wartościami, ale nie będziemy się tym zajmować w naszym samouczku, ponieważ skomplikowalibyśmy go nadmiernie.

Oto przykład funkcji int:

Importowanie

Python jest dystrybuowany z ogromną biblioteką standardową. Te dodatkowe funkcje pogrupowane w różne zestawy, nie są ładowane do pamięci wszystkie naraz (ile by to zajmowało zasobów komputera!). Są, zatem, dostępne w każdej chwili, ale na żądanie – musimy je zaimportować.

 

Oto przykład:

from <biblioteka> import <funkcja>

Dlaczego o tym piszemy?

Ponieważ właśnie w ten sposób włączymy do naszego programu funkcję randint, która wylosuje* nam liczbę naturalną z podanego przez nas zakresu. Ta funkcja znajduje się w bibliotece o nazwie random. Zatem, by ją zaimportować, musimy na początku programu napisać specjalny kod.

 

Na początku programu piszemy:

from random import randint
 

Gdy to już zrobimy, możemy od razu jej użyć:

print(randint(1,10))

Powyższa linijka wylosuje* nam liczbę z zakresu 1 – 10.

Oto przykład losowania:

Tak naprawdę komputer nie losuje liczby, on ją sobie oblicza na podstawie wielu danych nieustannie się zmieniających (np. czas zegara systemowego). Dlatego takie „wylosowane” liczby nazywamy liczbami pseudolosowymi.

Pętla while

W rozdziale o pętlach, nauczyliśmy się tworzyć pętle for – in, które są najczęściej spotykanym sposobem zapętlania naszego kodu. W Pythonie jest jeszcze jedna pętla: while.

Pętla while działa następująco:

  • dopóki jest spełniony warunek:

    • wykonuj ciało pętli

W rozdziale o pętlach, nauczyliśmy się tworzyć pętle for – in, które są najczęściej spotykanym sposobem zapętlania naszego kodu. W Pythonie jest jeszcze jedna pętla: while.

Pętla while działa następująco:

  • dopóki jest spełniony warunek:

    • wykonuj ciało pętli

 

Oto przykład:

a = 1
while a < 10:
    print("a =", a)
    a += 1

Jak to działa?

  • W pierwszej linijce deklarujemy zmienną a, nadajemy jej wartość 1,

  • Następnie mamy deklarację pętli while: będzie się wykonywać, dopóki a jest mniejsze od 10. Gdy tylko a osiągnie wartość 10, Python opuści pętlę i pójdzie dalej.

  • W kolejnych dwóch linijkach (dwukropek i wcięcie!) wykonuje się ciało pętli: wyświetlana jest wartość zmiennej a, a potem zmienna a jest inkrementowana.

  • Gdyby nie ostatnia linijka (a += 1), zmienna a nigdy nie zmieniałaby swojej wartości i w związku z tym warunek a < 10 zawsze byłby prawdziwy. Spowodowałoby to wieczne wykonywanie się ciała pętli.

Oto przykład pętli while:

 

Możesz zacząć pisać grę!

 

Zadanie

1. Na początku zaimportuj (patrz wyżej) funkcję randint z biblioteki random.

2. Następnie wylosuj* liczbę z zakresu 1 – 10 i przypisz ją do zmiennej riddle.

3. Zadeklaruj zmienną guessed – nadaj jej wartość logiczną False. To będzie tzw. flaga, którą podniesiemy (nadamy wartość True) w momencie, gdy gracz odgadnie liczbę.

Teraz czas na coś trudniejszego: rozpocznij pisanie pętli while. Niech warunkiem wykonywania tej pętli będzie guessed == False**. Oznacza to, że pętla będzie się wykonywać dopóki wartość tej zmiennej będzie fałszem, czyli dopóki gracz nie zgadnie liczby. Gdy ją zgadnie – podniesiemy flagę, a wtedy Python wyjdzie z pętli.

4. W ciele pętli pobieramy od użytkownika odpowiedź, konwertujemy ją z napisu na liczbę, po czym sprawdzamy następujące warunki:

  • jeśli odpowiedź jest mniejsza niż wylosowana liczba, wyświetlamy komunikat “za mało!”,

  • jeśli poprzedni warunek nie jest spełniony, ale odpowiedź jest większa, niż wylosowana liczba – wyświetlamy komunikat “za dużo!”,

  • jeśli oba powyższe przypadki nie są spełnione, oznacza to, że użytkownik wprowadził poprawną liczbę. Należy wtedy:

    • wyświetlić komunikat “brawo, to jest ta liczba!”,

    • do zmiennej guessed przypisać wartość True; spowoduje to, że warunek wykonywania pętli while przestanie być spełniony i program wyjdzie z pętli.

Gratuluję! Napisałeś/łaś swój pierwszy program

 
 

Potrzebujesz wskazówki?

Zobacz rozwiązanie zadania