В прошлом уроке мы рассмотрели, как остановить Черепашку, когда она дошла до определенной границы.
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()
Щелкайте! Щелкайте!
В следующем уроке мы рассмотрим управление Черепашкой с помощью клавиатуры.