【问题标题】:What is wrong with my turtle code? Cannot understand我的海龟代码有什么问题?不能理解
【发布时间】:2020-07-14 13:39:32
【问题描述】:

我正在做一个关于像素艺术的学校项目,想创造一个风景。 怎么了?

""" 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。

没有错误,但是乌龟屏幕完全空白。

我实际上已经尝试删除pen.hideturtle()pen.speed('fastest'),但它仍然不起作用。

感谢您的帮助!

【问题讨论】:

    标签: python turtle-graphics python-3.8 python-turtle


    【解决方案1】:

    您的代码充满了错误:

    pen.pencolor(255, 255, 255)
    t.pendown()
    

    这里你正在和两个不同海龟交谈,你的pendefault海龟,你以前没有碰过,也不会再碰过。这是怎么回事:

    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()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-07
      • 2022-06-16
      • 2014-04-18
      • 2017-08-01
      • 2021-01-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多