Ваш код пронизан ошибками:
pen.pencolor(255, 255, 255)
t.pendown()
Здесь вы разговариваете с двумя разными черепахами, pen
и по умолчанию черепахой, которая вы не прикасались ни раньше, ни когда-либо снова. Что здесь происходит:
pen.xcor() == 150 or pen.xcor() == 150
отсутствует ли знак минус? То же самое для pen.ycor()
. Эти операторы расположены в неправильном порядке:
pen.pendown()
pen.penup()
pen.forward(1)
Чтобы сделать отметку на нужном экране:
pen.pendown()
pen.forward(1)
pen.penup()
Найдите эту ошибку в двух местах вашего кода. Этот лог c:
if cloud == 7:
pen.pencolor(255, 255, 255)
полностью отменяется следующим:
rY = r.randint(0, 150)
gY = r.randint(0, 150)
bY = r.randint(0, 255)
pen.pencolor(rY, gY, bY)
Вам не хватает предложения else
. В этом предложении else
:
else:
print('Your landscape, look nice? ')
вам, вероятно, также понадобится оператор break
, иначе вы никогда не выйдете из своей бесконечности while True:
l oop.
Ниже это моя переработка вашего кода, чтобы исправить вышеуказанное, но я не утверждаю, что он делает что-то полезное:
"""
Landscape Drawer.py
Draws landscape on a turtle screen
"""
from turtle import Screen, Pen
from random import randint
def controls():
if pen.xcor() == -150 or pen.xcor() == 150 or pen.ycor() == -150 or pen.ycor() == 150:
pen.right(90)
pen.forward(1)
pen.right(90)
def allcode():
while True:
controls()
if pen.ycor() < -75:
r = randint(0, 150)
g = randint(0, 255)
b = randint(0, 150)
pen.pencolor(r, g, b)
pen.pendown()
pen.forward(1)
pen.penup()
elif pen.ycor() > -150 or pen.ycor() < 150:
cloud = randint(1, 7)
if cloud == 7:
pen.pencolor(255, 255, 255)
else:
r = randint(0, 150)
g = randint(0, 150)
b = randint(0, 255)
pen.pencolor(r, g, b)
pen.pendown()
pen.forward(1)
pen.penup()
else:
print('Your landscape, look nice? ')
break
screen = Screen()
screen.colormode(255)
pen = Pen()
pen.hideturtle()
pen.speed('fastest')
pen.penup()
pen.goto(-300, -300)
allcode()
screen.exitonclick()