Освой Python играючи
/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000
Графическая библиотека Turtle предназначена для рисования геометрических фигур и анимаций с использованием стандартных базовых изображений: квадрат, круг, черепашка, стрелка. Библиотека поможет детям в игровой форме освоить возможости Python.
Для первого знакомства создадим простое окно синего цвета, зададим ему размер и заголовок. В центре окна выведем черепашку коричневого цвета.
import turtle
window = turtle.Screen()
window.bgcolor('navy')
window.setup(500, 400)
window.title("Черепашка")
turtle = turtle.Turtle('turtle')
turtle.color('brown')
turtle.shapesize(3)
turtle.showturtle()
Пример с анимацией мяча, который отражается от стенок. Бесконечный цикл обеспечивает непрерывное движение шарика. Пара условий отвечают за отражение шарика от стенок по законам геометрической оптики.
import turtle
window = turtle.Screen()
window.bgcolor('green')
window.setup(500, 500)
window.title("Отражение мяча")
ball = turtle.Turtle('circle')
ball.turtlesize(2)
ball.hideturtle()
ball.color('gold')
ball.penup()
box = turtle.Turtle()
box.hideturtle()
box.pensize(20)
box.penup()
box.goto(-200, 200)
box.pendown()
box.color('white')
# рисуем рамку
for side in range(4):
box.fd(400)
box.right(90)
ball.goto(100, 100)
dx, dy = 1.3, 2.3
ballX, ballY = 50, 50
ball.speed('fastest')
ball.showturtle()
while True:
ball.goto(ballX + dx, ballY + dy)
ballX, ballY = ball.xcor(), ball.ycor()
if ballX < -175 or ballX > 175:
dx = dx * -1
if ballY < -175 or ballY > 175:
dy = dy * -1
Создаём пустой массив и заполняем его черепашками разных цветов. Каждая черепашка повернута относительно горизонтального положения на угол, равный 45 * j, где j принимает 8 разных значений (0,1,2,3…7). Таким образом головы всех восьми черепах перед началом движения развёрнуты по кругу на углы, кратные 45 градусам. Бесконечное вращение каждой черепашки задаётся циклом, причём величина i1 принимает только 8 возможных значений, продвигая черепаху при каждом новом заходе в бесконечном цикле на 10 единиц вперёд и поворачивая её на 10 градусов влево.
import turtle
screen = turtle.Screen()
screen.tracer(2)
screen.bgcolor('navy')
turtles = []
colors = ['orange', 'red', 'blue', 'grey', 'gold', 'brown', 'black', 'pink']
for i in range(8):
turtles.append(turtle.Turtle('turtle'))
turtles[i].color(colors[i])
for j in range(8):
turtles[j].right(j * 45)
i = -1
while True:
i = i + 1
i1 = i % 8
turtles[i1].fd(10)
turtles[i1].left(10)