2013-07-01 3 views
-1

Итак, я просматриваю книгу pygame. Я очень новичок в Python. Я читал книгу и проходил частично через курс coursera, а также просматривал различные веб-сайты.Python pygame анимация направленная петля не работает

Мой вопрос: как сделать это изображение продолжением, например, «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) 

ответ

1

В принципе - вы недопонимаете петлю while.

Вашего условный, если/Элиф положение почти бесполезны, каждый раз, когда 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.

+0

Я попытался ввести свой код в это, но он продолжает давать мне ошибку отступа. Не могли бы вы предоставить мне пример создания класса для изображения? Я довольно noob. Спасибо за вашу помощь! если это не полезно! – AEGIS

1

Как писал, проблема с вашей, если заявление, которое никогда не достигая дна три положения, так как вы уже покрыли их в первых двух

Попробуйте вместо этого:

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

Надеюсь, что это положит вас на правильный путь!

+0

Спасибо! Это очень помогло мне! – AEGIS

Смежные вопросы