Автор оригинала: Robin Andrews.
В этой статье у нас будет веселее и игры с Графический модуль Python Turtle. Есть так много вещей, которые вы можете сделать с этим модулем из очень базовых программ до довольно сложных приложений, что делает его идеальным инструментом обучения для GCSE информатика науки.
Один ресурс на основе Python Turtle Graphics это не так хорошо известно, как это должно быть, это Бесплатный проект Python Games , в котором есть некоторые действительно веселые и хорошо написанные игры, которые вы можете играть, изучите код и измените для себя. В этой статье мы посмотрим версию классической аркадной игры Трон из этой коллекции.
Чтобы запустить программу, автор рекомендует установить FreeGames через Пип Отказ Если вы не знаете, как это сделать, вы можете узнать здесь. Еще один способ, который я предпочитаю, это скачать Утилиты файл и сохранить его как FreeGames.py В той же папке, что и фактические игры, и вы хороши, чтобы пойти.
Одна вещь, которую мне нравится в этом проекте с учебной точки зрения, заключается в том, что многие надовые пользователи реагируются в модуль утилит (состоящий из векторных классов и нескольких удобных функций), поэтому студенты могут сосредоточиться на игре Логика сама. Стиль кодирования очень кратко, почти как поэзия, некоторые могут сказать. Ниже приведен код для Tron Game.
"""Tron, classic arcade game."""
from turtle import *
from freegames import square, vector
p1xy = vector(-100, 0)
p1aim = vector(4, 0)
p1body = set()
p2xy = vector(100, 0)
p2aim = vector(-4, 0)
p2body = set()
def inside(head):
"Return True if head inside screen."
return -200 < head.x < 200 and -200 < head.y < 200
def draw():
"Advance players and draw game."
p1xy.move(p1aim)
p1head = p1xy.copy()
p2xy.move(p2aim)
p2head = p2xy.copy()
if not inside(p1head) or p1head in p2body:
print('Player blue wins!')
return
if not inside(p2head) or p2head in p1body:
print('Player red wins!')
return
p1body.add(p1head)
p2body.add(p2head)
square(p1xy.x, p1xy.y, 3, 'red')
square(p2xy.x, p2xy.y, 3, 'blue')
update()
ontimer(draw, 50)
setup(420, 420, 370, 0)
hideturtle()
tracer(False)
listen()
onkey(lambda: p1aim.rotate(90), 'a')
onkey(lambda: p1aim.rotate(-90), 'd')
onkey(lambda: p2aim.rotate(90), 'j')
onkey(lambda: p2aim.rotate(-90), 'l')
draw()
done()
Удаются несколько упражнений для изменения программы:
Exercises 1. Make the tron players faster/slower. 2. Stop a tron player from running into itself. 3. Allow the tron player to go around the edge of the screen. 4. How would you create a computer player?
Упражнение одно довольно просто – вы можете найти значение, которое контролирует скорость?
Другим простым изменением является изменение цвета фона и добавьте заголовок в окно черепахи:
setup(420, 420, 370, 0)
title("Tron")
bgcolor("black")
Упражнение 4 довольно интересно, и принимает нас в царство Ай или Искусственный интеллект. Это может быть довольно быстро сложным, но одна очень простая идея состоит в том, чтобы получить один из игроков (компьютер), чтобы изменить направление случайным образом с определенной вероятностью.
Идите, чтобы посмотреть, сможете ли вы реализовать эту функциональность для себя.
`from random import randint`
на вершину и изменить
`draw()`
к:
def draw():
"Advance players and draw game."
p1xy.move(p1aim)
p1head = p1xy.copy()
# Give a 10% chance of player 2 changing direction
change = randint(0, 9)
if change == 0:
p2aim.rotate(90)
elif change == 1:
p2aim.rotate(-90)
p2xy.move(p2aim)
p2head = p2xy.copy()
if not inside(p1head) or p1head in p2body:
print("Player blue wins!")
return
if not inside(p2head) or p2head in p1body:
print("Player red wins!")
return
p1body.add(p1head)
p2body.add(p2head)
square(p1xy.x, p1xy.y, 3, "red")
square(p2xy.x, p2xy.y, 3, "blue")
update()
ontimer(draw, 50)
И это это за сегодняшний взгляд в Бесплатный проект Python Games. Я надеюсь, что вы нашли это весело и интересно. Любые вопросы или комментарии, пожалуйста, дайте мне знать ниже.