【发布时间】:2016-02-09 14:06:35
【问题描述】:
我想知道是否可以更改窗口大小并将所有内容缩放大约 50%。我很想保持程序背后的所有逻辑仍然相关(例如 pygame 会注册点击 1000 像素,所以在更改为 500 像素后)我不认为有一个简单的答案..
【问题讨论】:
-
如果您更改窗口大小,则必须重新计算按钮大小并使用此新大小来检查鼠标点击。
标签: python-2.7 resize pygame resolution
我想知道是否可以更改窗口大小并将所有内容缩放大约 50%。我很想保持程序背后的所有逻辑仍然相关(例如 pygame 会注册点击 1000 像素,所以在更改为 500 像素后)我不认为有一个简单的答案..
【问题讨论】:
标签: python-2.7 resize pygame resolution
有两种不同的方法可以解决这个问题。如果你想选择一个屏幕尺寸并让它保持不变,直到你决定在后端改变它,你可以去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))
这种方式在短期内会比较困难,但从长远来看完全值得。您还必须考虑是否要所有内容调整大小,或者是否有最小/最大尺寸,以及其他一些想法,但我相信你可以弄清楚。
【讨论】: