【问题标题】:Turtle module for Python - circles glitch?Python 的 Turtle 模块 - 圆圈故障?
【发布时间】:2020-08-28 03:10:46
【问题描述】:

我一直在尝试使用 Python 的 Turtle 模块创建一个 naughts and crosss 游戏。我一直遇到的问题是,每次程序运行时,海龟都不会在同一位置绘制用于掩盖标记每个网格正方形的数字的白色圆圈(以便可以在那里写下零和十字) -它们位于相似的位置,但略有跳跃,因此不再掩盖下面的字母。这是我创建圆圈的代码部分:

def position_1(naught_cross): #each function contains the code to write its respective number in the correct place on the grid
    if naught_cross != "1": #i.e. when a 'o' or 'x' is submitted as an argument
        circle_drawer(-125,140) #calls function to draw circle in square before text is typed so text can be cleared when naughts/crosses are inputted in the grid sqaures
    t.penup()
    t.setpos(-115,130) #sets the position of the turltle head in pixels
    font = ("Arial",30,"normal")
    t.write(naught_cross,font=(font)) #having the variable 'naught_cross' enables it to change between the grid number and a naught/cross
def position_2(naught_cross):
    if naught_cross != "2":
        circle_drawer(-15,140) #calls function to draw box in square before text is typed so text can be cleared when naughts/crosses are inputted in the grid sqaures
    t.penup()
    t.setpos(-5,130) #sets the position of the turltle head in pixels
    font = ("Arial",30,"normal")
    t.write(naught_cross,font=(font))
def position_3(naught_cross):
    if naught_cross != "3":
        circle_drawer(85,140) #calls function to draw box in square before text is typed so text can be cleared when naughts/crosses are inputted in the grid sqaures
    t.penup()
    t.setpos(95,130) #sets the position of the turltle head in pixels
    font = ("Arial",30,"normal")
    t.write(naught_cross,font=(font))
def position_4(naught_cross):
    if naught_cross != "4":
        circle_drawer(-125,40) #calls function to draw box in square before text is typed so text can be cleared when naughts/crosses are inputted in the grid sqaures
    t.penup()
    t.setpos(-115,30) #sets the position of the turltle head in pixels
    font = ("Arial",30,"normal")
    t.write(naught_cross,font=(font))
def position_5(naught_cross):
    if naught_cross != "5":
        circle_drawer(-15,40)
    t.penup()
    t.setpos(-5,30) #sets the position of the turltle head in pixels
    font = ("Arial",30,"normal")
    t.write(naught_cross,font=(font))
def position_6(naught_cross):
    if naught_cross != "6":
        circle_drawer(85,40)
    t.penup()
    t.setpos(95,30) #sets the position of the turltle head in pixels
    font = ("Arial",30,"normal")
    t.write(naught_cross,font=(font))
def position_7(naught_cross):
    if naught_cross != "7": 
        circle_drawer(-125,-60) #calls function to draw box in square before text is typed so text can be cleared when naughts/crosses are inputted in the grid sqaures
    t.penup()
    t.setpos(-115,-70) #sets the position of the turltle head in pixels
    font = ("Arial",30,"normal")
    t.write(naught_cross,font=(font))
def position_8(naught_cross):
    if naught_cross != "8":
        circle_drawer(-15,-60) #calls function to draw box in square before text is typed so text can be cleared when naughts/crosses are inputted in the grid sqaures
    t.penup()
    t.setpos(-5,-70) #sets the position of the turltle head in pixels
    font = ("Arial",30,"normal")
    t.write(naught_cross,font=(font))
def position_9(naught_cross):
    if naught_cross != "9":
        circle_drawer(85,-60) #calls function to draw box in square before text is typed so text can be cleared when naughts/crosses are inputted in the grid sqaures
    t.penup()
    t.setpos(95,-70) #sets the position of the turltle head in pixels
    font = ("Arial",30,"normal")
    t.write(naught_cross,font=(font))


def circle_drawer(x,y): #paramters are x,y coordinates (contain actual coords in arguments when called) if grid in which white box must be drawn
    t.ht() #hides turtle
    t.lt(90)
    t.setpos(x,y) #sets turtle in poosition according to values in arguments 
    t.fillcolor("white") #sets the colour as white
    t.begin_fill() #fills circle
    t.circle(30) #draws a circle of radius 30
    t.end_fill() #ends filling circle

有没有人有办法解决这个问题?

【问题讨论】:

    标签: python turtle-graphics python-turtle


    【解决方案1】:

    没有足够的代码给出明确的答案,但我猜问题出在circle_drawer() 函数的这一行:

    t.lt(90)
    

    首先它是可疑的,因为它是唯一没有评论的行!其次,我们真的不知道海龟在此调用之前或之后是如何面向的,因为它取决于海龟在此函数调用之前所做的转数。我相信你真的想要:

    t.setheading(0)
    

    或 0(零)以外的其他角度。在进行绘图和写作之前,这会将海龟设置为一致的已知方向。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-16
      • 2020-01-02
      • 2014-12-22
      • 2013-12-02
      • 2018-11-29
      • 2017-10-20
      • 2018-01-01
      • 1970-01-01
      相关资源
      最近更新 更多