Вызов пользовательского ввода в выборе цвета - Python Черепаха - PullRequest
1 голос
/ 10 марта 2020

Я не слишком уверен, правильно ли я формулирую вопрос - код, который у меня пока есть, приведен ниже:

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

Вокруг функции square_color = 'Black' в функции drawBoard все разбивается , Моя цель состоит в том, чтобы диктовать цвет квадратов на основе пользовательского ввода, назначенного переменной "square_color". К сожалению, я действительно не очень уверен, как это сделать - или если это будет даже самый эффективный способ сделать это.

Если пользователь выбирает цвет, этот цвет отображается только в первом квадрате, а за остальной частью доски следует то, что закодировано. Не знаю, как назвать эту проблему, в противном случае я был бы рад go охота на себя.

Спасибо!

1 Ответ

0 голосов
/ 10 марта 2020

Это работает для меня:


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 на более раннее значение в коде youn, чтобы, если пользователь вводит белый цвет, он изменяет цвет должен быть черным, так что вы можете иметь разные цвета, а не одну большую массу.

Я также изменил место, где вы вызываете вашу функцию drawSquare(), так что при ее вызове она будет решать, добавлять ли черный квадрат или один из цветов, которые вы выбрали. Я делаю это, используя модуль по модулю, чтобы увидеть, является ли комбинация squareOne и squareTwo четной, а затем использую это для изменения цвета.

...