我想知道我是否可以更改窗口大小并将所有内容扩展到大约50%。我希望保持程序背后的所有逻辑仍然相关(例如pygame将注册点击1000 px,所以在500 px更改后)我不认为有一个简单的答案..
答案 0 :(得分:0)
有两种不同的方法可以解决这个问题。如果你想选择一个屏幕大小并保持不变,直到你决定在后端更改它,你可以转到pygame.blit(foo)
或pygame.draw.shape(foobar)
的每个电话,并扩大foo的尺寸和foobar减少50%。这是一种简单的方法,但它有一些缺点。例如,如果您想再次更改屏幕尺寸,则必须重新进行。当然不理想。
如果您希望用户重新调整屏幕大小,或者您希望在选择自己的屏幕尺寸时提供更大的灵活性,则必须使用一些公式来确定根据屏幕大小绘制内容的位置。例如,假设您正在进行国际象棋比赛。你可以这样:
SCREEN_WIDTH = 500
TILE_WIDTH = SCREEN_WIDTH / 8
然后你的drawBoard函数看起来像:
for i in range(8):
for j in range(8):
....
#Color = black or white depending on which tile we're drawing
pygame.draw.rect(mainWindow, color, (i * SCREEN_WIDTH, J * SCREEN_WIDTH, SCREEN_WIDTH, SCREEN_WIDTH))
现在,如果你想要一个更大的屏幕,你的瓷砖将随之扩大规模。或者,为了使它更复杂一点,假设你想要棋盘和窗口边缘之间的缓冲区。然后你可以做
SCREEN_WIDTH = 500
BUFFER = 20
TILE_WIDTH = (SCREEN_WIDTH - BUFFER * 2) / 8
您的drawBoard函数可能如下所示:
for i in range(8):
for j in range(8):
....
#Color = black or white depending on which tile we're drawing
pygame.draw.rect(mainWindow, color, (BUFFER + i * SCREEN_WIDTH, BUFFER + J * SCREEN_WIDTH, SCREEN_WIDTH, SCREEN_WIDTH))
这种方式短期会更难,但从长远来看总是值得的。您还必须考虑是否要所有调整大小,或者是否有最小/最大尺寸以及其他一些想法,但我相信您可以解决这个问题。< / p>