Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.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 pygame动画方向循环不工作_Python_Loops_Animation_Pygame - Fatal编程技术网

Python pygame动画方向循环不工作

Python pygame动画方向循环不工作,python,loops,animation,pygame,Python,Loops,Animation,Pygame,因此,我正在阅读pygame手册。我对Python非常陌生,我读过一本书,部分读完了coursera课程,还浏览了各种网站 我的问题是,;例如,如何使此图像继续在页面上呈之字形 下,右,下,右,下,右-直到它到达页面底部,然后上升到顶部并停止 我对代码的问题是,在它消失之后;向下,向右,向下-它只是继续向下,忽略了我编写的代码 import pygame, sys from pygame.locals import * pygame.init() FPS = 30 fpsClock = py

因此,我正在阅读pygame手册。我对Python非常陌生,我读过一本书,部分读完了coursera课程,还浏览了各种网站

我的问题是,;例如,如何使此图像继续在页面上呈之字形

下,右,下,右,下,右-直到它到达页面底部,然后上升到顶部并停止

我对代码的问题是,在它消失之后;向下,向右,向下-它只是继续向下,忽略了我编写的代码

import pygame, sys
from pygame.locals import *

pygame.init()

FPS = 30
fpsClock = pygame.time.Clock()

DISPLAYSURF = pygame.display.set_mode((1400,1100), 0, 32)
pygame.display.set_caption('mchammy')

WHITE = (255, 255, 255)
pigImg = pygame.image.load('mcsuperpig.png')
pigx = 10
pigy = 10
direction = 'down'

while True:
    DISPLAYSURF.fill(WHITE)

    if direction == 'down':
        pigy += 2
        if pigy == 100:
            direction = 'right'
    elif direction == 'right':
        pigx += 2
        if pigx == 100:
            direction = 'down'
    elif direction == 'down':
        pigy += 2
        if pigy == 200:
            direction = 'right'
    elif direction == 'right':
        pigx += 2
        if pigx == 200:
            direction = 'down'
    elif direction == 'down':
        pigy += 2
        if pigy += 700:
            direction = 'right'

    DISPLAYSURF.blit(pig.Img, (pigx, pigy))

    for event in pygame.event.get():
        if event.type == QUIT:
           pygame.quit()
           sys.exit()

    pygame.display.update()
    fpsClock.tick(FPS)

基本上-您误解了while循环

您的条件if/elif子句几乎毫无用处,每次while循环迭代时,它只会输入其中一个。。前两个条款已经涵盖了下选项和右选项,这意味着你永远也无法找到其他选项

如果将其更改为:

if direction == 'down':
    pigy += 2
    if not pigy % 100:
        direction = 'right'
else:
    pigx += 2
    if not pigx % 100:
        direction = 'down'
然后你的图像会在任何方向上每移动100个像素就切换方向


我建议您学习更多关于Python的知识,为您的图像创建一个类,并为运动创建一些适当的函数。使您的代码看起来更漂亮、更干净—我相信您在学习Python的整个过程中都看到过类似的其他代码。

如前所述,问题在于您的if语句,它永远不会到达最后三个子句,因为您已经在前两个子句中介绍了它们

请尝试以下方法:

if direction == 'down'
    pigy += 2
    if (pigy == 100) or (pigy == 200) or (pigy == 700)
        direction = 'right'
elif direction == 'right'
    pigx += 2
    if (pigx == 100) or (pigx == 200)
        direction = 'down'
你有if-pigy+=700,这是无效的,因为pigy+=700意味着增加700,所以我假设你的意思是if-pigy==700


希望这能让你走上正轨

谢谢大家!!这对我帮助很大!我试着把我的代码输入到这里,但它总是给我一个缩进错误。你能给我提供一个为图片制作类的例子吗?我很傻。谢谢你的帮助!如果没有的话是有用的!