使用Turtle绘制棋盘时屏幕不会打开

Screen Won't Open When Drawing Checker Board Using Turtle

我正在尝试使用 Turtle 库绘制棋盘,但 运行 遇到错误,棋盘 window 无法打开。大约 30 分钟前,它在我的会话开始时工作,但我更改了一些内容,想知道它为什么会更改。

这是我的代码:

##This program draws a checkboard using the turtle library
import turtle  

#below initiates the turtle pen and screen
penMain = turtle.Turtle()   
turtleMain = turtle.Screen() 
   
def turtleBoard(): 
   
    for x in range(4): 
        penMain.forward(30) 
        penMain.left(90) 
   
    penMain.forward(30)  
    turtleMain.setup(600, 600) 
    penMain.speed(50) 
        
    for a in range(8): 
        penMain.up()  
        penMain.setpos(0, 30 * a) 
        penMain.down() 
        for x in range(8): 
            if (a + x)% 2 == 0: 
                squareColor = 'black'
            else: 
                squareColor = 'white'
       
                penMain.fillcolor(squareColor)  
                penMain.begin_fill() 
                turtleBoard()  
                penMain.end_fill() 
    

我相信除了我的一个错误之外,这段代码还有效!预先感谢大家的帮助!

我无法说出您为获取当前代码所做的更改,但这段代码似乎有效:

##This program draws a checkboard using the turtle library
import turtle  

#below initiates the turtle pen and screen
penMain = turtle.Turtle()   
turtleMain = turtle.Screen() 
   
def turtleBoard(): 
    
    penMain.forward(30)  
    turtleMain.setup(600, 600) 
    penMain.speed(50) 
        
    for a in range(8): 
        for x in range(8): 
            penMain.up()  
            penMain.setpos(30 * x, 30 * a) 
            penMain.down() 
            penMain.begin_fill() 
            for xx in range(4): 
                penMain.forward(30) 
                penMain.left(90) 
            if a%2 == x%2: 
                squareColor = 'black'
            else: 
                squareColor = 'white'
       
            penMain.fillcolor(squareColor)  
            penMain.end_fill() 
            
turtleBoard()  
turtle.done()

我将最后 4 行的缩进与最后一个 'else' 语句对齐,它起作用了。谢谢大家!

既然我们已经看到您的代码可以工作,让我们考虑使用 stamping 而不是 drawing 来使其工作更简单更快捷:

from turtle import Screen, Turtle

SQUARES_PER_EDGE = 8
SQUARE_SIZE = 30  # in pixels
OFFSET = SQUARE_SIZE * (SQUARES_PER_EDGE / 2) - SQUARE_SIZE/2  # center the board

CURSOR_SIZE = 20

def turtleBoard():
    turtle.shape('square')
    turtle.shapesize(SQUARE_SIZE / CURSOR_SIZE)
    turtle.penup()

    for y in range(SQUARES_PER_EDGE):
        for x in range(SQUARES_PER_EDGE):
            turtle.goto(x * SQUARE_SIZE - OFFSET, y * SQUARE_SIZE - OFFSET)
            turtle.fillcolor('black' if y % 2 == x % 2 else 'white')
            turtle.stamp()

screen = Screen()
screen.setup(600, 600)

turtle = Turtle()
turtle.speed('fastest')  # because I have no patience

turtleBoard()

screen.exitonclick()