我有一个问题,我似乎不能移动屏幕上的角色上下。在
当我运行代码并按下down键时,会出现以下错误:
AttributeError: 'pygame.Rect' object has no attribute 'down'
运行代码并按向上键时,出现以下错误:
^{pr2}$代码:
import pygame
class Character():
def __init__(self, ai_settings, screen):
self.screen = screen
self.ai_settings = ai_settings
self.image = pygame.image.load("character.jpg")
self.rect = self.image.get_rect()
self.screen_rect = screen.ge_rect()
self.rect.centerx = self.screen_rect.centerx
self.rect.centery = self.screen_rect.centery
self.center = float(self.rect.centerx)
self.center1 = float(self.rect.centery)
self.moving_right = False
self.moving_left = False
self.moving_up = False
self.moving_down = False
def update(self):
if self.moving_right and self.rect.right < self.screen_rect.right:
self.center += self.ai_settings.char_speed_factor
if self.moving_left and self.rect.left > 0:
self.center -= self.ai_settings.char_speed_factor
if self.moving_up and self.rect.up < self.screen_rect.up:
self.center1 += self.ai_settings.char_speed_factor
if self.moving_down and self.rect.down > 0:
self.center1 -= self.ai_settings.char_speed_factor
self.rect.centerx = self.center
self.rect.centery = self.center1
def blitme(self):
self.screen.blit(self.image, self.rect)
这只是字符类python文件,而不是主文件。有一个游戏功能文件,它检查键盘输入,然后设置自动移动的变量设置为True。然后在主文件中调用gamefunctions文件中的定义。我很困惑为什么会发生这种情况,因为我可以让角色左右移动。在
您的问题就在代码的这四行中,在这四行中检查移动和相应的边界冲突:
请注意,您正在比较}对象的属性,这实际上并不存在。也许你是说}?在
up
和{top
和{此外,您的代码逻辑是不正确的。您正在检查
self.rect.bottom
在向下移动时是否大于零—但是,为了正确地实现边界碰撞机制,您应该检查它在向下移动时是否小于屏幕的高度(我假定它是self.screen_rect.bottom
)。与self.rect.top
相反,您应该检查它是否大于零。在更正了
^{pr2}$if
语句:相关问题 更多 >
编程相关推荐