【问题标题】:Can you make the turtle the center of a circle in python?你能让乌龟成为python中的圆心吗?
【发布时间】:2021-10-29 10:12:09
【问题描述】:

我正在制作井字游戏,当用户按下“o”时,会打印一个圆圈,但圆圈始终位于海龟的左侧。我希望乌龟在一个盒子的中心并围绕它自己画一个圆圈。

【问题讨论】:

  • 欢迎来到 Stack Overflow,请添加一个最小的可复制示例。见:stackoverflow.com/help/how-to-ask
  • 我假设你知道这个圈子的radius - 所以你可以在xy 中将turtle 移动radius,下一个画圈,然后将它移回@ 987654327@.

标签: python turtle-graphics


【解决方案1】:

你必须自己移动海龟——使用left,right,forward,penup,pendowm


例子

import turtle

radius = 100

# move
turtle.penup()
turtle.right(90)
turtle.forward(radius)
turtle.left(90)
turtle.pendown()

# circle
turtle.circle(radius)

# move back
turtle.penup()
turtle.right(-90)
turtle.forward(radius)
turtle.left(-90)
turtle.pendown()

结果:

【讨论】:

    【解决方案2】:

    有几种方法可以在不移动海龟的情况下绘制以 Python 海龟为中心的圆。第一个是dot() 方法。它需要一个直径,而不是一个半径,并且可以选择允许您同时指定颜色:

    import turtle
    
    RADIUS = 100
    
    turtle.dot(RADIUS * 2)
    turtle.dot(RADIUS * 1.6, turtle.bgcolor())  # "unfill" the circle
    
    turtle.done()
    

    另一种方法是通过冲压,也就是把海龟光标本身做成一个圆,调整大小,然后调用stamp()

    import turtle
    
    RADIUS = 100
    CURSOR_RADIUS = 10
    
    turtle.hideturtle()
    turtle.shape('circle')
    turtle.fillcolor(turtle.bgcolor())
    turtle.shapesize(RADIUS / CURSOR_RADIUS, outline=RADIUS/5)
    turtle.stamp()
    
    turtle.done()
    

    以上两种方法都有覆盖圆圈周围的任何东西的副作用,这对于井字游戏来说似乎不是问题。为避免这种情况,您当然可以按照@furas 的建议临时改变海龟的位置:

    import turtle
    
    RADIUS = 100
    
    turtle.width(RADIUS/5)
    
    turtle.penup()
    turtle.sety(turtle.ycor() - RADIUS)
    turtle.pendown()
    
    turtle.circle(RADIUS)
    
    turtle.penup()
    turtle.sety(turtle.ycor() + RADIUS)
    turtle.pendown()
    
    turtle.done()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-22
      • 2023-03-28
      • 1970-01-01
      相关资源
      最近更新 更多