所以我要浏览pygame书。我是Python的新手,我读过一本书并参加了课程,还浏览了各种网站。
我的问题是;如何使这个图像继续,例如,页面下方的“zig-zag”?
向下,向右,向下,向右,向下,向右 - 直到它到达页面底部然后上升到顶部并停止?
我对代码的问题在于它之后;向下,向右,向下 - 它只是继续向下而忽略了我写的代码。
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)
答案 0 :(得分: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中看到的其他代码一样。
答案 1 :(得分: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
,这是无效的(因为pigy + = 700表示增加700)所以我假设你的意思是if pigy == 700
希望这能让你走上正轨!