[尝试为我的高中班级游戏创建开始屏幕。图像应该在屏幕上移动,与每堵墙碰撞并朝下一个方向移动。由于某些原因,图像不会与左墙碰撞,我无法弄清原因。
class StartScreen:
def __init__(self):
screen.fill(WHITE)
self.fontTitle = pygame.font.SysFont("arial", 30) #
self.textTitle = self.fontTitle.render("Legend Of Zelda: ", True, WHITE)
self.textRect = self.textTitle.get_rect(center=(displayWidth / 2, 50))
self.moveImage = pygame.image.load("images/link_down1.png")
self.moveImageRect = self.moveImage.get_rect()
self.dx = 3
self.dy = 0
self.moveImageRect.x = 1
self.moveImageRect.y = 11
def update(self):
if self.moveImageRect.right >= displayWidth:
self.dy = 3
self.dx = 0
if self.moveImageRect.left <= 0:
self.dy = -1
self.dx = 0
if self.moveImageRect.top <= 0:
self.dy = 0
self.dx = -3
elif self.moveImageRect.bottom >= displayHeight:
self.dx = -3
self.dy = 0
self.moveImageRect.move_ip(self.dx, self.dy)
def draw(self, surf):
screen.blit(backgroundImage, (backgroundRect))
screen.blit(self.textTitle, self.textRect)
screen.blit(backgroundImage, (backgroundRect))
screen.blit(self.moveImage, self.moveImageRect)
if self.moveImageRect.right > 500:
dy = 1
dx = 0
self.moveImageRect.right = 500
elif self.moveImageRect.bottom > 500:
dy = 0
dx = -1
self.moveImageRect.bottom = 500
elif self.moveImageRect.left < 0:
dy = -1
dx = 0
self.moveImageRect.left = 0
elif self.moveImageRect.top < 0:
dy = 0
dx = 1
self.moveImageRect.top = 0
这对我有用,仅检查图像是否移离屏幕,然后再将其移回屏幕,以确保图像不与墙壁碰撞。