Шахматная доска черепахи питона - PullRequest
0 голосов
/ 27 апреля 2018
import turtle

def main():
     t=turtle
     s=int(input("Enter the length of each square: "))
     t.screensize(2000,2000,"lightblue")
     for row in range(0,5):
         for column in range(0,5):
             if (row+column)%2==0:
                 t.pendown()
                 t.fillcolor("black")
                 t.begin_fill()
                 square(s,row,column)
             else:
                 t.pendown()
                 t.fillcolor("white")
                 t.begin_fill()
                 square(s,row,column)
             t.goto(s+row*s,s+column*s)
def square(s,row,column):
     t=turtle
     t.penup()
     n=0
     for count in range(4):
          t.pendown()
          t.forward(s)
          t.left(90)
     t.end_fill()
     t.penup()
main()

Итак, сегодня мне дали задание, которое попросило меня создать шахматную доску 5 на 5. Пока у меня есть этот код, который позволяет создать большую часть шахматной доски. Тем не менее, у меня все еще есть ошибка, или мне не хватает ключевой информации.

enter image description here

Прикрепленное изображение показывает, как программа выглядит с ошибкой.

Программа началась с создания черного квадрата, который можно увидеть в левом нижнем углу. Затем он работал до правого верхнего угла, где видно пустое пространство.

Пожалуйста, помогите.

Ответы [ 3 ]

0 голосов
/ 27 апреля 2018

Анил_М избил меня этим на несколько минут; но я хотел предложить дополнительную очистку кода, так как у вас слишком много ненужных penup s, pendown s и ненужной передачи параметров.

Попробуйте это:

import turtle

t = turtle.Turtle()
t.speed(0)

def main():
     s=int(input("Enter the length of each square: "))
     for row in range(5):
         for column in range(5):
             if (row+column)%2==0:
                 color = "black"
             else:
                 color = "white"
             t.penup()
             t.goto(row*s,column*s)
             t.pendown()
             filled_square(s, color)

def filled_square(s, color):
     t.fillcolor(color)
     t.begin_fill()
     for count in range(4):
          t.forward(s)
          t.left(90)
     t.end_fill()

main()
0 голосов
/ 27 апреля 2018

Давайте попробуем штамповка вместо рисунок . Это дает нам скорость и упрощает нашу логику. Мы ставим один большой черный квадрат, чтобы представить доску, а затем на него ставим белые квадраты:

from turtle import Turtle, Screen

SQUARES_PER_SIDE = 5
CURSOR_SIZE = 20

def main():
    length = int(input("Enter the length of each square: "))

    screen = Screen()
    screen.bgcolor("lightblue")

    turtle = Turtle('square', visible=False)
    turtle.shapesize(SQUARES_PER_SIDE * length / CURSOR_SIZE)
    turtle.speed('fastest')
    turtle.stamp()  # black background

    turtle.shapesize(length / CURSOR_SIZE)
    turtle.fillcolor("white")
    turtle.penup()

    edge = (1 - SQUARES_PER_SIDE) / 2 * length  # center of left or bottom square
    turtle.goto(edge, edge)

    for row in range(SQUARES_PER_SIDE):
        for column in range(SQUARES_PER_SIDE):
            if (row + column) % 2 == 0:
                turtle.stamp()  # white square

            turtle.forward(length)

        turtle.goto(edge, edge + (row + 1) * length)

    screen.exitonclick()

main()

OUTPUT

enter image description here

0 голосов
/ 27 апреля 2018

Перемещение t.goto(s+row*s,s+column*s) в начало внутреннего цикла for делает свое дело.

В основном нам нужно сначала переместить черепаху в исходное положение, а затем начать рисовать.

Я также очистил код, чтобы поместить лишние строки в функцию square. Также добавлено t.penup(), чтобы черепаха не показывала ничью, пока не достигла начальной позиции и не начала рисовать.

import turtle

def main():
     t=turtle
     t.penup()
     s=int(input("Enter the length of each square: "))
     t.screensize(2000,2000,"lightblue")
     for row in range(0,5):
         for column in range(0,5):              
              t.goto(s+row*s,s+column*s)
              if (row+column)%2==0:
                   square(s,row,column,"black")
              else:
                  square(s,row,column,"white")

def square(s,row,column,color):
     t=turtle
     t.pendown()
     t.fillcolor(color)
     t.begin_fill()
     t.penup()
     n=0
     for count in range(4):
          t.pendown()
          t.forward(s)
          t.left(90)
     t.end_fill()
     t.penup()
main()

enter image description here

...