Удалить черную рамку в полноэкранном режиме pygame - PullRequest
0 голосов
/ 02 августа 2020

Я создаю игру с включенными pygame и fullscreen (пример ниже):

import pygame
from pygame.locals import *

screen = pygame.display.set_mode((900, 500), FULLSCREEN, 0, 32)

while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            exit()

    screen.fill((255, 255, 255))

    mouse_pos = pygame.mouse.get_pos()
    pygame.draw.circle(screen, (0, 0, 255), mouse_pos, 20)
    pygame.draw.circle(screen, (0, 0, 200), mouse_pos, 18)
    pygame.draw.circle(screen, (0, 0, 100), mouse_pos, 15)
    pygame.draw.circle(screen, (0, 0, 50), mouse_pos, 10)

    pygame.display.flip()

Уродливая черная рамка портит рендеринг.

Я пытаюсь добавить флаг NOFRAME в инициализации экрана, но не вышло.

Думаю, можно убрать границу с изменением размеров экрана. Но я хочу сохранить разрешение 900x500. Можно pygame изменить размер всего экрана? Но это медленно? Игра, которую я сейчас создаю, использует почти всю мощность компьютера.

1 Ответ

0 голосов
/ 03 августа 2020

Единственный способ удалить черные полосы - это установить pygame.display.set_mode((width, height)) на разрешение пользователя. Используйте pygame.display.Info(), чтобы получить разрешение экрана пользователя. Кроме того, вы можете выбрать предпочтительное разрешение, например 900 x 500, чтобы получить «дифференциальное число», чтобы получить ретро / пиксельный вид.

resolution = pygame.display.Info() width = resolution.current_w height = resoltion.current_h dx = width / 900; dy = height / 500

Это dx и dy можно затем использовать для масштабирования всего до большего размер.

Я бы попробовал этот код:

import pygame
from pygame.locals import *

pygame.init() # You forgot the initialize the pygame window!
resolution = pygame.display.Info() # Get the users resolution
width = resolution.current_w
height = resolution.current_h
screen = pygame.display.set_mode((width, height), FULLSCREEN, 0, 32)

while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            exit()

    screen.fill((255, 255, 255))

    mouse_pos = pygame.mouse.get_pos()
    pygame.draw.circle(screen, (0, 0, 255), mouse_pos, 20)
    pygame.draw.circle(screen, (0, 0, 200), mouse_pos, 18)
    pygame.draw.circle(screen, (0, 0, 100), mouse_pos, 15)
    pygame.draw.circle(screen, (0, 0, 50), mouse_pos, 10)

    pygame.display.flip()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...