Zagraj w grę w krykieta ręcznego, używając Pythona

Zagraj w grę w krykieta ręcznego, używając Pythona

Z szacunkową liczbą 2,5 miliarda fanów krykiet jest jednym z największych i najpopularniejszych sportów na świecie. W samych Indiach krykiet jest wart aż 5,3 miliarda dolarów. Sachin Tendulkar, Donald Bradman, Brian Lara i MS Dhoni to tylko kilka legend, których nazwiska żyją w sercach milionów.

Nic dziwnego, że krykiet znalazł drogę do wirtualnej rzeczywistości, gier wideo i innych odmian, takich jak krykiet książkowy i ręczny. Posuń tę grę o krok dalej, budując grę w krykieta ręcznego za pomocą Pythona.

Co to jest krykiet ręczny?

Krykiet ręczny to gra, w której dwie osoby rywalizują ze sobą za pomocą palców. W każdej turze obaj gracze jednocześnie wyświetlają liczbę palcami. Jeśli wyniki się zgadzają, odbijający odpada, w przeciwnym razie zdobywają swój numer jako biegi. Na koniec gracz, który zdobędzie najwięcej punktów, wygrywa grę.

Możesz zbudować tę grę i grać w nią także z komputerem. Zamiast wyciągać palce, aby przedstawić partyturę, wprowadzasz ją do programu. Python jest jednym z najłatwiejszych i najwygodniejszych w użyciu języków. Jeśli nie masz wcześniejszego doświadczenia w korzystaniu z Pythona, możesz szybko zapoznać się z dowolnym z tych bezpłatnych internetowych kursów Pythona dla początkujących.

Gdy nauczysz się podstaw, dobrym pomysłem jest tworzenie mini-projektów i gier, aby utrwalić swoją naukę. Możesz zacząć od zbudowania zegara cyfrowego, rzucania kośćmi, quizu lub licznika słów. Możesz także czerpać inspirację z tych pomysłów na projekty w języku Python dla początkujących.

Jak zbudować grę w krykieta ręcznego za pomocą Pythona

Zaimportuj losową bibliotekę, wymaganą do pierwszego rzutu i wyborów komputera. Zdefiniuj funkcję o nazwie input_num , która przyjmuje dwa argumenty, odpowiednio min i max , aby sprawdzić poprawność danych wprowadzonych przez użytkownika. Za pomocą funkcji input() zapisz liczbę wprowadzoną przez użytkownika w zmiennej num i rzuć ją z domyślnego typu String na Integer za pomocą int() .

Jeśli liczba wprowadzona przez użytkownika jest większa niż limit maksymalny lub mniejsza niż limit minimalny, poproś użytkownika o wprowadzenie poprawnego wyboru przez rekurencyjne wywołanie funkcji. Jeśli liczba mieści się w zakresie, zwróć ją.

import random

def input_num(min, max):
    num = int(input())


    if num > max or num < min:
        print("Enter valid choice")
        return input_num(min, max)
    else:
        return num

Zdefiniuj innings funkcji , która akceptuje aktualnego odbijającego i biegi do pościgu jako argumenty wejściowe. Poproś użytkownika o wprowadzenie liczb z zakresu od jednego do sześciu. Zgodnie z zasadami gry w krykieta ręcznego, jeśli zarówno użytkownik, jak i komputer wybiorą ten sam numer, aktualny odbijający odpada.

Zainicjuj zmienną suma , aby przechowywać sumę obiegów zdobytych przez odbijającego i ustaw ją na zero. Rozpocznij nieskończoną pętlę while i wywołaj funkcję input_num () , aby zapisać i zweryfikować dane wejściowe użytkownika. Użyj funkcji randint() modułu losowego, aby wybrać losową liczbę od jednego do sześciu dla komputera.

Wyświetl wybory obu graczy, a następnie sprawdź, czy są one równe. Jeśli tak, pokaż, że odbijający jest wyautowany i zwróć sumę obiegów zdobytych w tych rundach.

W przeciwnym razie sprawdź, kto uderza i dodaj odpowiednią wartość do całkowitego wyniku, albo pnum , albo cnum . Wyświetl aktualny wynik odbijającego.

W przypadku drugiego inningsa chcesz sprawdzić, czy pałkarz pobił już wynik przeciwnika. Aby to zrobić, sprawdź, czy wartość to_chase nie jest pusta i czy wynik odbijającego jest wyższy. Jeśli tak, zwróć zwycięski wynik.

def innings(batsman, to_chase):
    print("Enter numbers between 1 and 6. If you both choose the same number then " + batsman + "is out")
    total = 0

    while True:
        pnum = input_num(1, 6)
        cnum = random.randint(1, 6)

        print("User chose", pnum)
        print("Computer chose", cnum)

        if pnum == cnum:
            print(batsman + "is out")
            return total
        else:
            total = total + (pnum if batsman == "User" else cnum)
            print(batsman + "score is", total)
            if to_chase is not None and total > to_chase:
                return total

Wyświetl komunikat o losowaniu i potwierdź wybór użytkownika za pomocą funkcji input_num() . Rzuć monetą i zapisz wynik w zmiennej coin . Zainicjuj domyślną wartość player_bowls na false. Jeśli rzut monetą pasuje do wyboru użytkownika, użytkownik wygrywa rzut i wybiera między mrugnięciem a kręgielnią.

Wybierz użytkownika i sprawdź, czy go wprowadził. Jeśli tak, oceń wyrażenie na true i zapisz je w zmiennej player_bowls . Wyświetl wybór użytkownika. Z drugiej strony, jeśli komputer wygrał losowanie, wykonaj randint() i oceń odpowiednią wartość player_bowls .

Wyświetl wybór komputera i rozpocznij innings.

print("Time for toss, Enter 0 for Heads and 1 for Tails")
choice = input_num(0, 1)
coin = random.randint(0, 1)
player_bowls = False

if coin == choice:
    print("You have won the toss")
    print("Select 0 to bat, 1 to bowl ")
    player_bowls = input_num(0, 1) == 1

    if player_bowls:
        print("You chose to bowl")
    else:
        print("You chose to bat")
else:
    print("Computer won the toss")
    player_bowls = random.randint(0, 1) == 1

    if player_bowls:
        print("Computer chose to bat")
    else:
        print("Computer chose to bowl")

Jeśli player_bowls ma wartość true, komputer uderza pierwszy i odwrotnie. Oblicz obiegi zdobyte w inningsie za pomocą zdefiniowanej wcześniej funkcji. Funkcja wymaga nazwiska aktualnego odbijającego i biegów do pościgu. Gdy pierwszy odbijający ustala wynik, uczyń go parametrem opcjonalnym i przekaż None . W drugiej rundzie podaj wynik odbijającego, który ustawił cel.

if player_bowls:
    comp_score = innings("Computer", None)
    user_score = innings("User", comp_score)
else:
    user_score = innings("User", None)
    comp_score = innings("Computer", user_score)

Jeśli komputer uzyska mniej punktów niż użytkownik, wygrywa użytkownik i odwrotnie. W przypadku, gdy wyniki są takie same, wyświetl remis.

if comp_score < user_score:
    print("User wins")
elif user_score < comp_score:
    print("Computer wins")
else:
    print("Match draw")

Połącz cały kod i przygotuj się do gry w krykieta ręcznego w dowolnym miejscu i czasie na wyciągnięcie ręki.

Dane wyjściowe krykieta ręcznego przy użyciu Pythona

Możesz zobaczyć wynik gry w krykieta ręcznego za pomocą Pythona w następujący sposób:

Wyjście Hand Cricket za pomocą Pythona

Kiedy uruchamiasz program, program prosi cię o wybranie opcji rzutu i przypisuje odpowiedni wynik. Jeśli wygrasz, możesz zdecydować, czy chcesz odbijać, czy rzucać, w przeciwnym razie komputer podejmie decyzję. Każda runda trwa do momentu, gdy numery się zgadzają i jeden odpada. Na koniec komputer porównuje wynik końcowy i ogłasza zwycięzcę.

Gry terminalowe w Pythonie

Tworzenie gier to niesamowity sposób na naukę języka Python, który zapewnia dużo zabawy. Nie musisz być ekspertem, aby zacząć kodować i eksperymentować w Pythonie. Dzięki odpowiednim podstawom możesz stworzyć niesamowite gry terminalowe.

Zacznij od zbudowania magicznej kuli ósemki, kata, nożyc do papieru kamiennego, generatora Mad Libs i gry w odgadywanie liczb. W miarę postępów eksploruj bibliotekę PyGame, aby tworzyć własne graficzne gry wideo.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *