微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 pygame 中为全屏模式添加边界

如何解决如何在 pygame 中为全屏模式添加边界

这是我的代码

import pygame
    

pygame.init()


window_size=(800,600)
screen=pygame.display.set_mode(window_size)

player_X=200
player_Y=300
player_X_change=0
player_Y_change=0


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


        if event.type==pygame.KEYDOWN:
            if event.key==pygame.K_LEFT:
                player_X_change=-1
            if event.key==pygame.K_RIGHT:
                player_X_change=1
            if event.key==pygame.K_UP:
                player_Y_change=-1
            if event.key==pygame.K_DOWN:
                player_Y_change=1
        if event.type==pygame.KEYUP:
            if event.key==pygame.K_LEFT or event.key==pygame.K_RIGHT:
                player_X_change=0
            if event.key==pygame.K_UP or event.key==pygame.K_DOWN:
                player_Y_change=0


    screen.fill((0,200,255))

    player_X+=player_X_change
    player_Y+=player_Y_change
    player = pygame.draw.rect(screen,(255,0),(player_X,player_Y,40,50))
    if player_X<=-1:
        player_X=0
    if player_X>=761:
        player_X=760
    if player_Y<=-1:
        player_Y=0
    if player_Y>=551:
        player_Y=550
    
    
        pygame.display.update()

现在我想将边界添加到全屏模式。 我知道我可以通过以下方式全屏显示

screen=pygame.display.set_mode(window_size,pygame.RESIZABLE,32).

好吧,现在我有两个问题。

  • 首先,也是最重要的一点,我如何在最大化形式下设置边界。
  • 第二,32(我在 set_mode 函数中给出的第三个参数)有什么用?

我在教程中看到的那样使用它。当我删除它时,它不会做任何不同的事情,但如果它这样做了,那么它是什么/它会是什么? 好吧,回到主要问题,当我尝试去 x 轴超过 800 或 y 轴超过 在全屏模式下为 600,(我通过调整大小得到的)我无法更进一步,因为我添加的边界是 800 x 600 窗口。

解决方法

screen 是一个 pygame.Surface 对象。使用 get_size() 获取窗口的当前大小:

running=True
while running:
    # [...]

    player_X += player_X_change
    player_Y += player_Y_change
    
    width,height = screen.get_size()
    if player_X < 0:
        player_X = 0
    if player_X > width - 40:
        player_X = width - 40
    if player_Y < 0:
        player_Y = 0
    if player_Y > height - 50:
        player_Y = height - 50    

    player = pygame.draw.rect(screen,(255,0),(player_X,player_Y,40,50))

pygame.display.set_mode() 的第三个参数是用于颜色的位数。您根本不需要指定它。请参阅 pygame.display.set_mode() 的文档:

通常最好不要传递深度参数。它将默认为系统的最佳和最快的颜色深度。如果您的游戏需要特定的颜色格式,您可以使用此参数控制深度。 Pygame 会模拟一个不可用的颜色深度,这可能会很慢。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。