首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我的海龟代码出了什么问题?看不懂

我的海龟代码出了什么问题?看不懂
EN

Stack Overflow用户
提问于 2020-07-14 21:39:33
回答 1查看 40关注 0票数 0

我正在做一个关于pixelart的学校项目,想要创造一个景观。怎么啦?

代码语言:javascript
运行
复制
""" 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'),但仍然不起作用。

谢谢你的帮忙!

EN

回答 1

Stack Overflow用户

发布于 2020-07-15 00:00:34

你的代码充满了错误:

代码语言:javascript
运行
复制
pen.pencolor(255, 255, 255)
t.pendown()

在这里,您正在与两个不同的海龟交谈,您的pen和默认的海龟,您以前从未接触过它,以后也不会再碰它。这里发生了什么:

代码语言:javascript
运行
复制
pen.xcor() == 150 or pen.xcor() == 150

有没有少了一个减号?pen.ycor()也是如此。这些语句的顺序是错误的:

代码语言:javascript
运行
复制
pen.pendown()
pen.penup()
pen.forward(1)

要在屏幕上实际做标记,请执行以下操作:

代码语言:javascript
运行
复制
pen.pendown()
pen.forward(1)
pen.penup()

在代码中的两个位置查找该错误。这个逻辑是:

代码语言:javascript
运行
复制
if cloud == 7:
    pen.pencolor(255, 255, 255)

下一步将完全撤消:

代码语言:javascript
运行
复制
rY = r.randint(0, 150)
gY = r.randint(0, 150)
bY = r.randint(0, 255)
pen.pencolor(rY, gY, bY)

这里遗漏了一个else子句。在此else子句中:

代码语言:javascript
运行
复制
else:
    print('Your landscape, look nice? ')

您可能还需要一条break语句,否则您将永远无法走出无限的while True:循环。

下面是我对你的代码的修改,以修复上面的问题,但我不会声称它做了任何有用的事情:

代码语言:javascript
运行
复制
"""
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()
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62896564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档