В прошлом уроке мы рассмотрели, как остановить Черепашку, когда она дошла до определенной границы.
from turtle import * shape('turtle') # форма - черепашка (а не треугольник) def move(): fd(5) if xcor() < 200: ontimer(move,30) move() done()
Теперь сделаем так, чтобы Черепашка разворачивалась, когда доходила до правой стороны экрана (x = 200)
from turtle import * shape('turtle') def move(): fd(5) if xcor() > 200: rt(180) ontimer(move,30) move() done()
2. Черепашка ползает влево-вправо, разворачиваясь на границах x = -200 и x = 200
3. Черепашка ползает вверх-вниз, разворачиваясь на границах y = -200, y = 200
Не менее интересным может быть вариант с замкнутыми границами слева и справа: дойдя до правой границе Черепашка оказывается слева:
from turtle import * shape('turtle') speed(0) # нужно, чтобы Черепашка мгновенно переходила с правой границы на левую. Если убрать - будет переходить плавно. def move(): fd(5) if xcor() > 200: setx(-200) # изменить координату x Черепашки ontimer(move,30) move() done()
В прошлом уроке было задание сделать так, чтобы Черепашка начинала двигаться в случайном направлении:
from turtle import * from random import randrange as rnd shape('turtle') speed(0) def click(x,y): h = rnd(0,360) seth(h) move() def move(): fd(5) ontimer(move,30) onscreenclick(click) done()
На этот раз задача сложная: рассчитать правильное отражение от стены. Угол падения равен углу отражения.
from turtle import * from random import randrange as rnd shape('turtle') speed(0) def click(x,y): h = rnd(0,360) seth(h) move() def move(): fd(5) x,y = pos() if x > 200 or x < -200: h = heading() seth(180-h) if y > 200 or y < -200: h = heading() seth(-h) ontimer(move,30) onscreenclick(click) done()
Следующие задания будут посвящены изменению скорости Черепашки.
Мы уже использовали переменную для скорости, когда учили Черепашку останавливаться по щелчку.
В этот раз обойдемся без щелчка, но значение скорости будем хранить в переменной.
from turtle import * from random import randrange as rnd shape('turtle') speed(0) def move(): fd(m) ontimer(move,30) m = 5 move() done()
Осталось добавить изменение скорости:
from turtle import * from random import randrange as rnd shape('turtle') speed(0) def move(): global m # изменения m должны сохранится fd(m) ontimer(move,30) m -= 1 m = 5 move() done()
Чтобы легче было разглядеть, что происходит, я изменил начальную скорость.
А чтобы было реалистичнее — направил Черепашку вверх.
urtle import * from random import randrange as rnd shape('turtle') speed(0) def move(): global m # изменения m должны сохранится fd(m) ontimer(move,30) m -= 1 lt(90) # поворот вверх m = 15 # начальная скорость стала больше move() done()
Черепашка падает вниз в бесконечность. Чтобы спасти ее от падения — добавим реакцию на щелчок:
from turtle import * from random import randrange as rnd shape('turtle') speed(0) def click(x,y): global m m += 10 def move(): global m # изменения m должны сохранится fd(m) ontimer(move,30) m -= 1 lt(90) # поворот вверх m = 15 # начальная скорость стала больше onscreenclick(click) move() done()
Щелкайте! Щелкайте!
В следующем уроке мы рассмотрим управление Черепашкой с помощью клавиатуры.