Автор оригинала: Robin Andrews.
Вот веселая игра, написанная с Python Turtle Graphics Отказ Это называется Арахнофобия и в основном паук Версия Удар.
Обратите внимание, что пауки в основном невиновны и не заслуживают умереть только потому, что вы можете бояться их. Никакие пауки не пострадали в производстве этой игры.
Вы можете играть в игру онлайн в Это reft.it Отказ Цель состоит в том, чтобы использовать мышь, чтобы нажать на пауков, как они появляются. Однако именно здесь мы столкнулись с некоторыми ограничениями Программирование Python на основе браузера , так как самое быстрое время онлайн-версия может обрабатывать 1000 мс между «кадрами» (вы увидите, что я имею в виду, если вы играете …)
Версия на базе браузера Arachnophobia Python Turtle Graphics Graphics
Арахнофобия Python Turkle Graphics Graphics
Вы найдете, что запустите игру на Рабочий стол или Ноутбук даст вам гораздо лучший опыт. Для одного вы можете изменить скорость, регулируя Скорость Константа (попробуйте 500 , как в 500 мс между кадрами). Кроме того, если вы устанавливаете Playsound через PIP Установить Playsound , есть веселый звуковой эффект каждый раз, когда вы нажимаете на паук.
Ниже приведен список кода для игры. Как обычно, я настоятельно рекомендую вам ввести код для себя, даже если есть детали, которые вы не понимаете. Но если это похоже на сопротивление, просто вставьте его в новый файл уже сейчас и сохранить и запустить.
Я объясню некоторые детали после листинга, но обратите внимание, что, хотя мы используем модуль, который некоторые люди считают новичками в программировании, есть несколько довольно передовых методов, и многие из которых были сделаны, Результат значительного объема опыта, написав следующие виды игр.
Если вы хотите узнать больше о том, как писать игры, используя Python, почему бы не связаться с деталями на нашей странице контакта для получения дополнительной информации или забронировать бесплатный 1/2 часа без обязательства?
Вот это список:
Вам нужно будет скачать изображение SPIDER и сохранить его ту же папку, что и программа, называя его Spider.gif (щелкните правой кнопкой мыши, сохраните изображение как).
import turtle
import random
try:
import playsound # Not part of standard Library.
SOUND = True
except ImportError:
SOUND = False
WIDTH = 800
HEIGHT = 400
CURSOR_SIZE = 20
SQUARE_SIZE = 50
NUM_ROWS = 5
NUM_COLS = 5
BG_COLOR = "yellow"
TITLE = "Arachnophobia"
COLORS = ("red", "black")
SPEED = 500
NUM_TRIES = 20
def init_screen():
screen = turtle.Screen()
screen.title(TITLE)
screen.setup(WIDTH, HEIGHT)
canvas = screen.getcanvas()
return screen, canvas
def create_board():
board = []
for i in range(NUM_ROWS):
for j in range(NUM_COLS):
tur = turtle.Turtle(shape="square")
tur.setheading(90)
board.append(tur)
tur.penup()
tur.shapesize(SQUARE_SIZE / CURSOR_SIZE)
tur.color(COLORS[0] if i % 2 == j % 2 else COLORS[1])
tur.onclick(lambda x, y, tur=tur: click(tur))
x = -NUM_COLS / 2 * SQUARE_SIZE + j * SQUARE_SIZE + SQUARE_SIZE / 2
y = NUM_ROWS / 2 * SQUARE_SIZE - i * SQUARE_SIZE - SQUARE_SIZE / 2
tur.goto(x, y)
return board
def click(tur):
global score, high_score # These values are modified within this function.
if board.index(tur) == spider_pos:
if SOUND:
playsound.playsound("ouch2.mp3", False)
score += 1
if score > high_score:
high_score = score
update_score()
def toggle_turtle(tur):
if tur.shape() == "square":
tur.shape("spider.gif")
else:
tur.shape("square")
# Turtles lose their onclick binding when image is used, so we have to rebind.
tur.onclick(lambda x, y, tur=tur: click(tur))
screen.update()
def update_score():
pen.clear()
pen.write(f"Score: {score} High Score: {high_score}", font=("Arial", 16, "bold"))
def reset():
global spider_pos, pen, score, high_score, board, counter
# Reset screen
screen.clear()
screen.bgcolor(BG_COLOR)
screen.register_shape("spider.gif")
screen.tracer(0) # Disable animation
# Initialise board
board = create_board()
spider_pos = 0
toggle_turtle(board[spider_pos])
# Score
score = 0
pen = turtle.Turtle()
pen.hideturtle()
pen.penup()
pen.goto(-119, -160)
update_score()
# Let's go
counter = 0
screen.update()
game_loop()
def game_over():
pen.goto(-80, -20)
pen.color("white")
pen.write("Game Over", font=("Arial", 24, "bold"))
def game_loop():
global spider_pos, counter # These values are modified within this function.
toggle_turtle(board[spider_pos])
spider_pos = random.randrange(NUM_ROWS * NUM_COLS)
toggle_turtle(board[spider_pos])
counter += 1
if counter > NUM_TRIES:
spider_pos = -999 # Avoid clicking in between rounds
game_over()
canvas.after(2000, reset)
return # Very important to ensure loop is not called again.
screen.ontimer(game_loop, SPEED)
if __name__ == "__main__":
screen, canvas = init_screen()
high_score = 0
reset()
turtle.done()
Некоторые наблюдения по поводу вышеуказанного кода:
- Константы используются, чтобы избежать «волшебных чисел», разбросанных по всей программе
- Доска основана на концепции 2D-сетки отдельных предметов черепахи.
- Объекты черепахи имеют прикрепленный обработчик Click, но все события кликов обрабатываются одной функцией из-за использования
лямбдаВыражение (это довольно продвинутая техника). -
доскасоздается с использованием вложено для петли Отказ Смотрите ссылку для получения дополнительной информации. - Если вы обеспокоены использованием глобальных переменных, пожалуйста, прочитайте эта статья
- Это хорошая идея, чтобы очистить экран на сбросе, в противном случае может быть невидимое накопление пустых предметов черепахи, существующих в памяти, которые могут привести к замедлению программы, когда вы играете несколько раундов.
Вот и все сейчас. Как я уже сказал выше, написание такого рода игры нетривиальна, особенно если вы хотите иметь возможность сделать это полностью независимо в конце концов. Если у вас есть какие-либо вопросы, продолжайте и попросите либо в комментарии, либо по электронной почте, и я вернусь к вам с ответом.
Счастливые вычисления!