在颜色选择中调用用户输入 - Python 乌龟

Calling User Input in Color Selection - Python Turtle

我不太确定我是否正确地表述了问题 - 目前我的代码如下:

import turtle

t = turtle.Turtle()

colors = {'red', 'blue', 'green', 'black'}

def drawSquare(t,x,y,size,fill_color):

    t.penup() # Pickup turtle
    t.goto(x,y) # Move Turtle
    t.pendown() # Drop turtle
    t.fillcolor(fill_color)
    t.begin_fill()  # Shape Fill begin
    for square in range(0,4):
        t.forward(size) # move forward
        t.right(90) # turn 90 degrees
    t.end_fill() # Shape Fill End

def drawBoard():

    square_color = turtle.textinput("Color Selection", "Enter a color:") # Set color to be user defined
    pos_x = turtle.numinput("Position Selection", "Enter a Position for X") # Set position x to be user defined
    pos_y = turtle.numinput("Position Selection", "Enter a Position for Y") # Set position y to be user defined
    box_size = turtle.numinput("Box Size Selection", "Enter a Box Size (1-50)") # Set box size to be user defined
    for squareOne in range(0,8): # Create a chess board dimension
        for squareTwo in range(0,8): 
            drawSquare(t,pos_x+squareTwo*box_size,pos_y+squareOne*box_size,box_size,square_color)
            square_color = 'Black' if square_color == 'white' else 'white' 
        square_color = 'Black' if square_color == 'white' else 'white' 

drawBoard() # Call drawBoard Function

turtle.done()

drawBoard 函数中的 square_color = 'Black' 行出现问题。我的目标是根据分配给变量 "square_color" 的用户输入来指定方块的颜色。不幸的是,我真的不太确定该怎么做——或者这是否是最有效的方法。

如果用户选择一种颜色,只有第一个方块是那个颜色,板的其余部分后面是编码的内容。不知道如何命名这个问题,否则我很乐意去打猎我。

谢谢!

这对我有用:


t = turtle.Turtle()

colors = {'red', 'blue', 'green', 'black'}

def drawSquare(t,x,y,size,fill_color):

    t.penup() # Pickup turtle
    t.goto(x,y) # Move Turtle
    t.pendown() # Drop turtle
    t.fillcolor(fill_color)
    t.begin_fill()  # Shape Fill begin
    for square in range(0,4):
        t.forward(size) # move forward
        t.right(90) # turn 90 degrees
    t.end_fill() # Shape Fill End

def drawBoard():

    square_color = turtle.textinput("Color Selection", "Enter a color:") # Set color to be user defined
    square_color = 'white' if square_color == 'black' else square_color # Changed here
    pos_x = turtle.numinput("Position Selection", "Enter a Position for X") # Set position x to be user defined
    pos_y = turtle.numinput("Position Selection", "Enter a Position for Y") # Set position y to be user defined
    box_size = turtle.numinput("Box Size Selection", "Enter a Box Size (1-50)") # Set box size to be user defined
    for squareOne in range(0,8): # Create a chess board dimension
        for squareTwo in range(0,8):
            drawSquare(t,pos_x+squareTwo*box_size,pos_y+squareOne*box_size,box_size,square_color if (squareTwo+squareOne)%2 == 0 else 'black') # Changed Here

drawBoard() # Call drawBoard Function

turtle.done()

因此,我只更改了两行: 我已将 square_color = 'white' if square_color == 'black' else square_color 移动到您代码的较早部分,这样如果用户输入白色,它会将颜色更改为黑色,这样您就可以拥有不同的颜色,而不是一大块。

我还更改了调用 drawSquare() 函数的位置,这样当您调用它时,它会决定是添加黑色方块,还是添加您选择的颜色之一。我这样做是通过使用模数来查看 squareOnesquareTwo 的组合是否均匀,然后使用它来更改颜色。