我正在做一个关于pixelart的学校项目,想要创造一个景观。怎么啦?
""" Landscape Drawer.py
Draws landscape on a turtle screen"""
import turtle as t
import random as r
pen = t.Pen()
pen.hideturtle()
pen.speed('fastest')
pixelno = 90000
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:
t.colormode(255)
controls()
if pen.ycor() < -75:
rX = r.randint(0, 150)
gX = r.randint(0, 255)
bX = r.randint(0, 150)
pen.pencolor(rX, gX, bX)
pen.pendown()
pen.penup()
pen.forward(1)
elif pen.ycor() > -150 or pen.ycor < 150:
cloud = r.randint(1, 7)
if cloud == 7:
pen.pencolor(255, 255, 255)
t.pendown()
rY = r.randint(0, 150)
gY = r.randint(0, 150)
bY = r.randint(0, 255)
pen.pencolor(rY, gY, bY)
pen.pendown()
pen.penup()
pen.forward(1)
else:
print('Your landscape, look nice? ')
pen.penup()
pen.goto(-300, -300)
allcode()
pen.exitonclick() 附注:我使用的是Python 3.8.2。
没有错误,但turtle屏幕完全空白。
我实际上已经尝试删除pen.hideturtle()和pen.speed('fastest'),但仍然不起作用。
谢谢你的帮忙!
发布于 2020-07-15 00:00:34
你的代码充满了错误:
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()在代码中的两个位置查找该错误。这个逻辑是:
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:循环。
下面是我对你的代码的修改,以修复上面的问题,但我不会声称它做了任何有用的事情:
"""
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()https://stackoverflow.com/questions/62896564
复制相似问题