Освой Python играючи

Сайт Александра Климова

Шкодим

/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000

Python: Turtle (Черепашка)

Графическая библиотека 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()
Turtle Basic

Отражение мяча от стенок

Пример с анимацией мяча, который отражается от стенок. Бесконечный цикл обеспечивает непрерывное движение шарика. Пара условий отвечают за отражение шарика от стенок по законам геометрической оптики.


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
Turtle Ball

Бесконечное движение черепашек по кругу

Создаём пустой массив и заполняем его черепашками разных цветов. Каждая черепашка повернута относительно горизонтального положения на угол, равный 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)
Реклама