Рубрики
Без рубрики

Игра 21 с Python Turtle Graphics

Изучите игру 21 с помощью Python и Turtle Graphics. Визуализируйте выигрышную стратегию, нажав на клетки, чтобы переключить их цвет.

Автор оригинала: Robin Andrews.

Вот что-то веселое.

Игра 21 игра для подсчета двух игроков, где каждый игрок может добавить 1 , 2 или 3 , начиная с нуля, к общей сложности. Всего не должно превышать 21 и игрок, который приземляется на 21 проигрывает.

Python Console 21 игра

Вы можете играть в игру против компьютера, используя этот аксессуар – просто нажмите на Беги кнопка для начала.

Список кода Python для игры 21

Часто бывает отличная идея запустить код Python с помощью установленной версии Python на вашем компьютере, а не в браузере. Одной из причин в том, что некоторые реализации на основе браузера имеют тонко разные поведения в «реальной» установке Python, а другой – это то, что рано или поздно, если вы серьезно относитесь к программированию Python, вам нужно будет работать с полной версией, которая позволяет установить пакеты и доступ к вашей файловой системе. Итак, вот полное листинг кода для Python 3.

"""
The 21 Game - Compucademy
"""

import random
import time


while True:

    print(r"""
      _______ _            ___  __    _____                      
     |__   __| |          |__ \/_ |  / ____|                     
        | |  | |__   ___     ) || | | |  __  __ _ _ __ ___   ___ 
        | |  | '_ \ / _ \   / / | | | | |_ |/ _` | '_ ` _ \ / _ \
        | |  | | | |  __/  / /_ | | | |__| | (_| | | | | | |  __/
        |_|  |_| |_|\___| |____||_|  \_____|\__,_|_| |_| |_|\___|

    """)

    current_number = 1

    if random.randint(0, 1) == 0:
        current_player = "human"
    else:
        current_player = "computer"

    while current_number <= 21:

        print("The current number is " + str(current_number) + ".")
        print()

        if current_player == "human":

            print("Add 1, 2, or 3. Do not pass 21. The player who lands on 21 loses.")

            player_choice = ""
            while player_choice not in ["1", "2", "3"]:
                player_choice = input("What will you add? ")

            player_choice = int(player_choice)
            current_number = current_number + player_choice
            print()

            if current_number >= 21:
                print("The current number is " + str(current_number) + ".")
                print()
                print("Sorry, you lose.")
                break
            current_player = "computer"

        else:

            computer_choice = random.randint(1, 3)
            current_number = current_number + computer_choice
            print("Computer turn. The computer choses " +
                  str(computer_choice) + ".")
            print()
            time.sleep(1)

            if current_number >= 21:
                print("The current number is " + str(current_number) + ".")
                print()
                print("Well done, you won!")
                break
            current_player = "human"

    print()
    play_again = input("Do you want to play again? ")
    if play_again.lower().startswith("y"):
        continue
    else:
        print("Goodbye")
        break

Эта книга – отличное введение в создание игр с помощью Python:

Как ассортимент Amazon, я зарабатываю от квалификационных покупок.

Стратегия для 21 игры

Компьютерный противник в программе выше не использует какую-либо конкретную стратегию, поэтому с небольшим количеством умного мышления вы можете найти стратегию, которая позволяет вам выиграть все или большую часть времени, возможно, в зависимости от того, кто начинается. Один из способов изучить это с помощью Визуальное представление Отказ С Python один из моих любимых инструментов для создания визуальных представлений является Графический модуль черепахи.

Вы можете запустить код в браузере, используя встроенный REPL.IT кадр ниже. У меня есть reft.it steped of trinket.io, чтобы встроить код как reft.it имеет лучшую поддержку для некоторых методов графики черепахи, которые я использую в коде.

Код позволяет переключать цвет квадратов в представлении игры, чтобы вы могли видеть, как вы можете выиграть. Если вам нужен Подсказка В стратегии думайте, что может составить «безопасную площадь».

Вот полный список кодов. Вы можете использовать кнопки в верхней части, чтобы скопировать код, если вам нужно.

import turtle

TURTLE_SIZE = 20  # This is the default for a `square` turtle
SQUARE_SIZE = 20
FONT_SIZE = 12
FONT = ('Arial', FONT_SIZE, 'normal')


def toggle(box):
    """Toggles the colour of a Turtle when it is clicked."""
    if box.color()[0] == "Red":
        box.color("Green")
    else:
        box.color("Red")

# Screen setup
screen = turtle.Screen()
screen.setup(600, 200)
screen.title("The 21 Game")
screen.bgcolor("black")
# Disable animation
screen.tracer(0)

# Create 21 clickable squares
for i in range(21):
    box = turtle.Turtle("square")

    def click_callback(x, y, box=box):
        """Passes `box` to `toggle()` function."""
        return toggle(box)

    box.shapesize(SQUARE_SIZE / TURTLE_SIZE)
    box.color("Red")
    box.penup()
    box.goto(-231 + i * (SQUARE_SIZE + 2), 0)
    box.onclick(click_callback)

# Write numbers above the squares
pen = turtle.Turtle(visible=False)
pen.color("white")
pen.penup()
pen.goto(-231, 22)
for i in range(21):
    pen.write(str(i + 1), align="center", font=FONT)
    pen.forward(22)

# Restore animation
screen.tracer(1)
turtle.done()

Надеюсь, комментарии помогут понять, как работает этот код, но есть пара вещей, чтобы указать.

  • Click Callback (функция, которая называется событием Click, обнаружена на черепахе), нуждается в дополнительном параметре, поэтому его можно прикрепить к конкретной черепахе. Это заставило меня на некоторое время тупаться, но потом я нашел эта ссылка что объясняет, как это сделать. Если вы не знаете, Модуль черепахи построит на Tkinter Таким образом, решение проблемы, связанные с черепами, могут привлекать мышление о том, что происходит с Tkinter.

  • Чтобы сэкономить необходимость дождаться рисования, чтобы иметь место, я использовал Screen.Tracer (0) Тогда Screen.Traacer (1) Чтобы повторно включить анимацию после завершения рисунка.

Хитрость «Дополнительные аргументы» означает, что создание этого кода с нуля – это больше промежуточного упражнения, чем один для начинающих, но как демонстрация того, что возможно с Python Turtle Graphics а также полезный способ помочь вам стать экспертом на Игра 21 Я думаю, что это довольно аккуратно.

Я надеюсь, что вам нравится играть в эту игру и исследуя код Python, который он использует.