有没有办法正确调整游戏屏幕的大小?
Is there a way to resize properly game's screen?
每次我尝试调整 PyGame window 时,游戏都没有调整大小,它和以前一样,只是有更多的背景。
关于如何使用 window 调整游戏输出大小(并保持比例)的任何想法,是否有方法或我只需要手动编写代码?
你必须自己编码。
不要直接在显示表面上绘制您的游戏,而是在可以调整大小以适应显示表面大小的中间表面上绘制游戏。
这是一个简单的例子:
import pygame
from pygame.locals import *
def main():
pygame.init()
screen = pygame.display.set_mode((400, 300),HWSURFACE|DOUBLEBUF|RESIZABLE)
game_screen = screen.copy()
pic = pygame.surface.Surface((50, 50))
pic.fill('dodgerblue')
while True:
for event in pygame.event.get():
if event.type == QUIT:
return
elif event.type == VIDEORESIZE:
ratio = game_screen.get_rect().width / game_screen.get_rect().height
new_size = event.size[0], int(event.size[0] / ratio)
screen = pygame.display.set_mode(new_size, HWSURFACE|DOUBLEBUF|RESIZABLE)
game_screen.fill('black')
game_screen.blit(pic, (100, 100))
screen.blit(pygame.transform.scale(game_screen, screen.get_rect().size), (0, 0))
pygame.display.flip()
main()
每次我尝试调整 PyGame window 时,游戏都没有调整大小,它和以前一样,只是有更多的背景。
关于如何使用 window 调整游戏输出大小(并保持比例)的任何想法,是否有方法或我只需要手动编写代码?
你必须自己编码。
不要直接在显示表面上绘制您的游戏,而是在可以调整大小以适应显示表面大小的中间表面上绘制游戏。
这是一个简单的例子:
import pygame
from pygame.locals import *
def main():
pygame.init()
screen = pygame.display.set_mode((400, 300),HWSURFACE|DOUBLEBUF|RESIZABLE)
game_screen = screen.copy()
pic = pygame.surface.Surface((50, 50))
pic.fill('dodgerblue')
while True:
for event in pygame.event.get():
if event.type == QUIT:
return
elif event.type == VIDEORESIZE:
ratio = game_screen.get_rect().width / game_screen.get_rect().height
new_size = event.size[0], int(event.size[0] / ratio)
screen = pygame.display.set_mode(new_size, HWSURFACE|DOUBLEBUF|RESIZABLE)
game_screen.fill('black')
game_screen.blit(pic, (100, 100))
screen.blit(pygame.transform.scale(game_screen, screen.get_rect().size), (0, 0))
pygame.display.flip()
main()