【问题标题】:How to I set minimum and maximum width and height of the screen of my Python Pygame window?如何设置 Python Pygame 窗口屏幕的最小和最大宽度和高度?
【发布时间】:2023-02-18 18:14:33
【问题描述】:

我被困在如何设置我是否阻止用户小于设置的屏幕宽度和高度游戏并且还阻止用户超出显示屏幕的最大宽度和高度游戏

【问题讨论】:

  • 每次他们尝试更改屏幕尺寸时,请检查它们。如果它们超出了您希望的范围,请根据您的喜好将其重置为最小值/最大值?只是一个想法,但可能有更好的方法来实现它
  • 直接准备一些热门的决议,然后让玩家自己选择不是更好吗?
  • @KarolMilewczyk 你能提供一些代码来说明如何做吗?
  • @MuditJain 在答案中发布

标签: python pygame


【解决方案1】:

这是一个简单的示例,它在最小/最大边界被打破时更改屏幕尺寸:

#imports
import pygame
from pygame.locals import *
pygame.init()

#bounds definition
STARTWIDTH, STARTHEIGHT = 200, 200
MAXWIDTH, MAXHEIGHT = 200, 200
MINWIDTH, MINHEIGHT = 200, 200

#variables
screen = pygame.display.set_mode((STARTWIDTH, STARTHEIGHT), RESIZABLE)
running = True

while running:
    for event in pygame.event.get():
        if event.type == QUIT:
            running = False

        elif event.type == VIDEORESIZE:

            width = min(MAXWIDTH, max(MINWIDTH, event.w))
            height = min(MAXHEIGHT, max(MINHEIGHT, event.h))

            if (width, height) != event.size:
                screen = pygame.display.set_mode((width, height), RESIZABLE)

    screen.fill((255,255,255))
    pygame.display.update()

pygame.quit()

VIDEORESIZE 事件,顾名思义,总是在屏幕尺寸改变时释放。因此,当它被释放时,我们要检查用户是否仍在边界内,如果没有,则重置其大小。

它具有三个属性:whsizewh 属性分别包含调整大小后的窗口高度和宽度。 size 属性是(width, height) 的元组。

引发此事件时,我们当然要检查用户是否留在我们的范围内。我们使用 minmax 函数来做到这一点。我们使用max(MINWIDTH, event.w)来判断高度是否不在最大宽度之下,因为如果宽度小于MINWIDTH,将返回MINWIDTH。否则,将返回宽度本身。然后我们对该结果和 max 函数做类似的事情来确定窗口是否不是太大。然后我们重复高度的整个过程。

然后我们检查生成的新尺寸是否与旧尺寸不同。如果是,则意味着最小/最大界限被打破,我们需要使用pygame.display.set_mode调整大小。如果不是,这意味着我们可以继续,因为新的大小仍在其范围内。

【讨论】:

  • 你的代码对我有用。谢谢,@The_spider!
【解决方案2】:

我不确切知道你的项目变量等是什么,但这只是一个简单的例子。在 x 的位置,你输入从 0 到提供的分辨率的数量的整数 :)

resolutions = [(1280, 768), (1600, 900), (1920, 1080)]
picked_resolution = x
window = pygame.display.set_mode(size=resolution[picked_resolution])

【讨论】:

    猜你喜欢
    • 2016-12-11
    • 1970-01-01
    • 2018-12-11
    • 1970-01-01
    • 1970-01-01
    • 2016-03-30
    • 1970-01-01
    • 2018-11-08
    • 1970-01-01
    相关资源
    最近更新 更多