Python 对象的方向被迭代
我正在重拍涂鸦跳跃。我遇到的问题是对象所面对的方向会被迭代。我的意思是这样的: 如果方向等于“right”,但是,您决定通过循环进一步更改方向,因此方向应为“left”,但由于循环从第一行开始,它几乎立即更改回方向“right” 像这样: 循环: 正确的 如果发生了什么事: 左 问题是循环从第一行开始,所以它会立即返回到右侧 代码如下:Python 对象的方向被迭代,python,pygame,Python,Pygame,我正在重拍涂鸦跳跃。我遇到的问题是对象所面对的方向会被迭代。我的意思是这样的: 如果方向等于“right”,但是,您决定通过循环进一步更改方向,因此方向应为“left”,但由于循环从第一行开始,它几乎立即更改回方向“right” 像这样: 循环: 正确的 如果发生了什么事: 左 问题是循环从第一行开始,所以它会立即返回到右侧 代码如下: class Player(): def __init__(self, x, y): self.direction = -1
class Player():
def __init__(self, x, y):
self.direction = -1
player_img = pygame.image.load('player1.png')
if self.direction == 1:
self.player = pygame.transform.scale(player_img, (100, 100))
if self.direction == -1:
player = pygame.transform.scale(player_img, (100, 100))
self.player = pygame.transform.flip(player, True, False)
self.rect = self.player.get_rect()
self.rect.x = x
self.rect.y = y
self.vel_y = 0
self.jumped = False
def update(self):
dx = 0
dy = 0
# Key windings
key = pygame.key.get_pressed()
if key[pygame.K_LEFT]:
dx -= 5
self.direction = -1
if key[pygame.K_RIGHT]:
dx += 5
self.direction = 1
这就是我如何重新定义你的类:
class Player():
定义初始化(self,x,y):
self.direction=-1
self.player\u img\u left=pygame.transform.scale(pygame.image.load('player1.png'),(100100))
self.player\u img\u right=pygame.image.flip(self.player\u img\u left,True,False)
self.rect=self.player\u img\u left.get\u rect()
自我定向=1
self.rect.x=x
自校正y=y
self.vel_y=0
self.com=False
def更新(自我):
dx=0
dy=0
#关键绕组
key=pygame.key.get_pressed()
如果键[pygame.K_左]:
dx-=5
自我定向=1
如果键[pygame.K_RIGHT]:
dx+=5
self.direction=-1
如果self.direction==-1:
img=self.player\u img\u right
elif self.direction==1:
img=self.player\u img\u left
最后,你需要在循环外创建一个变量,告诉方向,在循环内部,根据条件对其进行更改,否则将移动到方向,这样在启动类时,
\uuuuuu init\uuuuu
中的所有内容都将执行一次。如果方向==1,则移动,并在更新循环中移动另一个,同样,您可以使用if/elif
来提高性能,以便只检查一条语句,并将它们稍微更改为self。
只需在前面用self命名一张图像,在另一张图像的右边用self。
命名,并在更新循环中的图像之间切换,也使用if/elif@Matiiss我想到了这一点,这是一个非常好的主意,但如果自我是外在的,它就不会被定义