我是一个中学的孩子,希望长大后可以成为一名程序员。我要去暑期学校学习编码课程,学习python和pygame。我已经足够了解python了,但是在pygame中我的手被弄湿了。在添加尝试为我的游戏添加边界的方法,但是它能够阻止屏幕的左侧和顶部,这是我的代码:
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
这真的是您想要做的吗?每当鼠标位于边界内时,将
x
和y
设置为零吗?还是要分别限制x
和y
仅存在于0到WIDTH
或HEIGHT
范围内?x = min(max(x, 0), WIDTH)
y = min(max(y, 0), HEIGHT)
此外,请注意,您的播放器精灵具有自己的宽度和高度。
x,y
坐标表示子画面左上角的位置。如果要限制子画面的位置以使整个画面始终显示在屏幕上,则首先需要获取子画面的大小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))
之前,需要确保已执行此操作,否则将使用原始的无界坐标绘制精灵。关于python - Pygame边界不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36876938/