Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 对象的方向被迭代_Python_Pygame - Fatal编程技术网

Python 对象的方向被迭代

Python 对象的方向被迭代,python,pygame,Python,Pygame,我正在重拍涂鸦跳跃。我遇到的问题是对象所面对的方向会被迭代。我的意思是这样的: 如果方向等于“right”,但是,您决定通过循环进一步更改方向,因此方向应为“left”,但由于循环从第一行开始,它几乎立即更改回方向“right” 像这样: 循环: 正确的 如果发生了什么事: 左 问题是循环从第一行开始,所以它会立即返回到右侧 代码如下: class Player(): def __init__(self, x, y): self.direction = -1

我正在重拍涂鸦跳跃。我遇到的问题是对象所面对的方向会被迭代。我的意思是这样的: 如果方向等于“right”,但是,您决定通过循环进一步更改方向,因此方向应为“left”,但由于循环从第一行开始,它几乎立即更改回方向“right”

像这样: 循环: 正确的 如果发生了什么事: 左

问题是循环从第一行开始,所以它会立即返回到右侧

代码如下:

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我想到了这一点,这是一个非常好的主意,但如果自我是外在的,它就不会被定义