-1

所以我正在阅读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)
4

2 回答 2

1

如发布的那样,问题在于您的 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,这是无效的(因为小猪+= 700意味着增加700)所以我假设你的意思是if pigy == 700

希望这能让你走上正轨!

于 2013-07-01T14:54:14.450 回答
1

基本上 - 你误解了while循环。

您的条件 if/elif 子句几乎没用,每次while循环迭代时,它只会输入其中一个......并且这两个选项"down""right"已经包含在前两个子句中,这意味着您将永远无法进入其他子句。

如果您将其更改为:

if direction == 'down':
    pigy += 2
    if not pigy % 100:
        direction = 'right'
else:
    pigx += 2
    if not pigx % 100:
        direction = 'down'

然后,您的图像将每向任何方向移动 100 个像素就会切换一次方向。


我建议您了解更多关于 Python 的知识,为您的图像创建一个类和一些适合运动的函数。让你的代码看起来更漂亮、更干净——就像我相信你在学习 Python 的过程中看到的其他代码一样。

于 2013-07-01T14:44:59.250 回答