如何解决如何在 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 举报,一经查实,本站将立刻删除。