有没有办法正确调整游戏屏幕的大小?

问题描述

每次我尝试调整 PyGame 窗口的大小时,游戏都没有调整大小,它和以前一样,只是有更多的背景。

关于如何使用窗口调整游戏输出大小(并保持比例)的任何想法,是否有方法或我只需要手动编码?

解决方法

你必须自己编码。

不要直接在显示表面上绘制游戏,而是在可以调整到显示表面大小的中间表面上绘制游戏。

这是一个简单的例子:

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()