gpt4 book ai didi

python - Pygame 边界不工作

转载 作者:太空宇宙 更新时间:2023-11-04 05:31:57 24 4
gpt4 key购买 nike

我是一名中学生,希望长大后成为一名程序员。我要去参加暑期学校的编码类(class),学习 python 和 pygame。我已经对 python 有了足够的了解,但刚刚开始接触pygame.I 正在尝试为我的游戏添加边界,但它能够阻挡屏幕的左侧和顶部,这是我的代码:

  import pygame,sys
from pygame.locals import *
pygame.init()

WIDTH = 400
HEIGHT = 400

pg = "player.gif"
bg = "y.gif"
screen=pygame.display.set_mode((WIDTH,HEIGHT))
background = pygame.image.load(bg)
player = pygame.image.load(pg)

while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit
x,y = pygame.mouse.get_pos()
screen.blit(background,[0,0])
screen.blit(player,(x,y))
pygame.display.update()
if x <= WIDTH:
x = 0
if y <= HEIGHT:
y = 0

最佳答案

if x <= WIDTH:
x = 0
if y <= HEIGHT:
y = 0

这真的是你想要做的吗?每当鼠标位于边界内时,将 xy 设置为零?或者你想将 xy 分别限制在 0 到 WIDTHHEIGHT 的范围内?

x = min(max(x, 0), WIDTH)
y = min(max(y, 0), HEIGHT)

此外,请注意您的玩家 Sprite 有自己的宽度和高度。 x,y 坐标表示 Sprite 左上角的位置。如果你想限制 Sprite 的位置使得整个东西总是在屏幕上,你首先需要获得 Sprite 的大小

spriteWidth, spriteHeight = player.get_rect().size

然后将该大小作为边界计算的因素

x = min(max(x, 0), WIDTH - spriteWidth)
y = min(max(y, 0), HEIGHT - spriteHeight)

此外,您需要确保在调用screen.blit(player, (x, y)) 之前执行此操作,否则将绘制 Sprite 与原始的、无界的坐标。

关于python - Pygame 边界不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36876938/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com