You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pygame全屏模式下如何获取屏幕宽度设置玩家移动边界

Pygame全屏模式下的屏幕边界限制实现方案

方案1:动态获取全屏分辨率适配原有判断逻辑

不需要提前硬编码固定的屏幕宽度值,在初始化全屏显示表面后,直接从显示表面对象读取当前显示器的实际分辨率即可:

  • 初始化全屏窗口时传入(0,0)作为分辨率参数,Pygame会自动适配当前显示器的全屏分辨率
  • 调用显示表面的get_width()、get_height()方法,就能拿到实时准确的屏幕宽高,适配任意尺寸的显示器

对应代码示例:

import pygame
pygame.init()

# 初始化全屏显示窗口
screen = pygame.display.set_mode((0, 0), pygame.FULLSCREEN)
# 动态获取当前屏幕宽高
display_width = screen.get_width()
display_height = screen.get_height()

# 玩家参数示例
player_width, player_height = 50, 50
x, y = 100, 100

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
    
    # 此处编写玩家位置更新逻辑,比如响应按键修改x、y坐标值
    
    # 修正后的边界判断,补全原代码缺失的冒号,同时补充Y轴边界判断
    if x < 0 or x > display_width - player_width:
        crash()
    if y < 0 or y > display_height - player_height:
        crash()
    
    pygame.display.flip()

注意:如果程序支持运行时切换全屏/窗口模式、切换分辨率,每次切换显示模式后需要重新调用get_width()/get_height()更新屏幕尺寸值,否则边界判断会失效。

方案2:用Pygame内置Rect方法简化判断

如果不想手动写四个方向的判断条件,可以直接用Pygame的Rect类自带的碰撞检测逻辑,代码更简洁也不容易写错:

# 初始化窗口后直接获取屏幕对应的Rect对象
screen_rect = screen.get_rect()

# 游戏循环内的边界判断
player_rect = pygame.Rect(x, y, player_width, player_height)
# 判断玩家矩形是否完全在屏幕范围内,超出则触发crash
if not screen_rect.contains(player_rect):
    crash()

这个方法不需要单独存储宽高变量,切换显示模式后只要更新screen_rect = screen.get_rect()即可,适配性更强。

内容的提问来源于stack exchange,提问作者Soham Joshi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 16:39:19