我是一个中学的孩子,希望在我长大后成为一名程序员。我要去暑期学校编写课程并学习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
答案 0 :(得分:1)
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))
之前执行此操作,否则将使用原始的无界坐标绘制精灵。