海龟文本看似随机增加,我该如何解决?
Turtle text increases by a seemingly random amount, how do I fix this?
我对使用 python 编码还很陌生,所以我很困惑。我目前正在开发一款饼干唱首歌类游戏。这是到目前为止的代码。
import turtle as t
#screen
wn = t.Screen()
wn.bgcolor("DarkSlateGray")
wn.setup(width=1366, height=768)
#clicks
clicks = 0
#square
sq = t.Turtle()
sq.speed(0)
sq.shape("square")
sq.color("coral2")
sq.shapesize(stretch_wid=5, stretch_len=5)
sq.penup()
sq.goto(0,0)
#pen
pen = t.Turtle()
pen.speed(0)
pen.color("white")
pen.penup()
pen.hideturtle()
pen.goto(0, 270)
pen.write("Times clicked: 0", align="center", font=("Comic Sans MS", 24, "normal"))
#click function
def getclick(sq, clicks):
clicks += 1
pen.clear()
pen.write("Times clicked: {}".format(clicks), align="center", font=('Comic Sans MS', 24, 'normal'))
#click detection
wn.listen()
sq.onclick(getclick)
函数“getclick”应该使“点击次数”增加 1,然后函数的其余部分写入新的点击次数。但是,当我测试这段代码时,数字并没有增加 1,而是增加了一个介于 -49.0 和 49.0 之间的随机数。例如,我将 运行 程序,然后单击海龟,数字变为 -29.0,然后再次变为 34.0,但是如果我再次单击它,它不会执行任何操作。
sq.onclick(getclick)
的使用存在一些问题。来自turtle documentation:turtle.onclick
的签名是
turtle.onclick(fun, btn=1, add=None)
Parameters
fun – a function with two arguments which will be called with the
coordinates of the clicked point on the canvas
因此,您点击的 x、y 坐标将传递给您的 getclick
函数,并且您一直在打印您的点击的 y 坐标(大约在“-49.0 和 49.0”之间)。函数参数 clicks
也没有按照您的预期进行:它只是隐藏了全局 clicks
,并没有修改它。
更正确的版本是:
def getclick(x, y):
global clicks
clicks += 1
pen.clear()
pen.write("Times clicked: {}".format(clicks), align="center", font=('Comic Sans MS', 24, 'normal'))
我对使用 python 编码还很陌生,所以我很困惑。我目前正在开发一款饼干唱首歌类游戏。这是到目前为止的代码。
import turtle as t
#screen
wn = t.Screen()
wn.bgcolor("DarkSlateGray")
wn.setup(width=1366, height=768)
#clicks
clicks = 0
#square
sq = t.Turtle()
sq.speed(0)
sq.shape("square")
sq.color("coral2")
sq.shapesize(stretch_wid=5, stretch_len=5)
sq.penup()
sq.goto(0,0)
#pen
pen = t.Turtle()
pen.speed(0)
pen.color("white")
pen.penup()
pen.hideturtle()
pen.goto(0, 270)
pen.write("Times clicked: 0", align="center", font=("Comic Sans MS", 24, "normal"))
#click function
def getclick(sq, clicks):
clicks += 1
pen.clear()
pen.write("Times clicked: {}".format(clicks), align="center", font=('Comic Sans MS', 24, 'normal'))
#click detection
wn.listen()
sq.onclick(getclick)
函数“getclick”应该使“点击次数”增加 1,然后函数的其余部分写入新的点击次数。但是,当我测试这段代码时,数字并没有增加 1,而是增加了一个介于 -49.0 和 49.0 之间的随机数。例如,我将 运行 程序,然后单击海龟,数字变为 -29.0,然后再次变为 34.0,但是如果我再次单击它,它不会执行任何操作。
sq.onclick(getclick)
的使用存在一些问题。来自turtle documentation:turtle.onclick
的签名是
turtle.onclick(fun, btn=1, add=None) Parameters fun – a function with two arguments which will be called with the coordinates of the clicked point on the canvas
因此,您点击的 x、y 坐标将传递给您的 getclick
函数,并且您一直在打印您的点击的 y 坐标(大约在“-49.0 和 49.0”之间)。函数参数 clicks
也没有按照您的预期进行:它只是隐藏了全局 clicks
,并没有修改它。
更正确的版本是:
def getclick(x, y):
global clicks
clicks += 1
pen.clear()
pen.write("Times clicked: {}".format(clicks), align="center", font=('Comic Sans MS', 24, 'normal'))