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:
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