我创造了一个乒乓游戏,在那里我注意到,桨不是平等地放置在屏幕边缘。
我创建了一个800像素宽的屏幕,并在xcor = 380和xcor = -380处放置了桨,但在屏幕上左桨显示了一些空白,而右桨没有。我的屏幕不对称吗?我该怎么解决呢?
screen.setup(width=800, height=600)
screen.bgcolor("black")
screen.title("PONG")
screen.tracer(0)
l_paddle = Paddle()
l_paddle.create_paddle((-380, 0))
r_paddle = Paddle()
r_paddle.create_paddle((380, 0))发布于 2022-02-22 17:22:42
当我们为setup()指定窗口大小时,我们指的是屏幕上使用的总像素。因为窗口周围有铬元素(边、标题栏等)。我们工作的实际面积要小一点。试图将两只海龟放置在左右边缘,忽略了铬:
from turtle import Screen, Turtle
CURSOR_SIZE = 20
WIDTH, HEIGHT = 600, 400
screen = Screen()
screen.setup(WIDTH, HEIGHT)
l_paddle = Turtle('square')
l_paddle.fillcolor('white')
l_paddle.setx(CURSOR_SIZE/2 - WIDTH/2)
r_paddle = Turtle('square')
r_paddle.fillcolor('white')
r_paddle.setx(WIDTH/2 - CURSOR_SIZE/2)
screen.exitonclick()我们得到了一个与你相似的结果:

如果我们补偿了内部和外部的铬元素:
from turtle import Screen, Turtle
CURSOR_SIZE = 20
BORDER_SIZE = 2 # inside the window
CHROME_SIZE = 9 # around the window
WIDTH, HEIGHT = 600, 400
screen = Screen()
screen.setup(WIDTH, HEIGHT)
l_paddle = Turtle('square')
l_paddle.fillcolor('white')
l_paddle.setx(CURSOR_SIZE/2 - WIDTH/2 + BORDER_SIZE)
r_paddle = Turtle('square')
r_paddle.fillcolor('white')
r_paddle.setx(WIDTH/2 - CURSOR_SIZE/2 - BORDER_SIZE - CHROME_SIZE)
screen.exitonclick()我们可以得到一个更精确的结果:

这里的问题是,铬的数量是系统依赖的,但海龟没有告诉我们要补偿多少。您可能可以从底层tkinter代码中找到答案。
我的建议是你尽可能地估计,假设它在所有系统上都是不准确的,并且远离边缘,这样就不那么麻烦了。当标题栏是铬的一部分时,Y维中的错误可能更大。
https://stackoverflow.com/questions/71212296
复制相似问题