2014-05-24 3 views
0

Мой основной код в цикле отлично работает сам по себе, но по какой-то причине это не будет перемещаться и остается на первом изображении. Пожалуйста помоги. Я новичок в этом. Основной цикл выполняется отлично сам по себе в другой программе, но когда я добавляю вещь в начале, чтобы создать базу, она не работает. Моя единственная теория заключается в том, что базовая вещь должна быть в основном цикле?Моя анимация не будет перемещаться в PyGame

import pygame 
pygame.init() 

Window = pygame.display.set_mode((480,48)) 
pygame.display.set_caption("Mario Animation") 

black = (0,0,0) 

#Takes in the image for the base 
Base1 = pygame.image.load("images/Base1.png") 
Base2 = pygame.image.load("images/Base2.png") 
Base3 = pygame.image.load("images/Base3.png") 

#Takes the sprites for mario 
MarioRunning1 = pygame.image.load("images/Mario1.png") 
MarioRunning2 = pygame.image.load("images/Mario1.png") 
MarioRunning3 = pygame.image.load("images/Mario1.png") 

BaseX = 0 

clock = pygame.time.Clock() 

for i in range (10): 
    Window.blit(Base1, ((BaseX,32))) 
    BaseX=BaseX+16 
    Window.blit(Base2, ((BaseX,32))) 
    BaseX=BaseX+16 
    Window.blit(Base3, ((BaseX,32))) 
    BaseX=BaseX+16 

CurrentImage = 1 

MainLoop = True 
while MainLoop: 

    for event in pygame.event.get(): 

     if (event.type==pygame.QUIT): 
      MainLoop = False 

    if (CurrentImage == 1): 
     Window.blit(MarioRunning3, (0,0)) 

    if (CurrentImage == 2): 
     Window.blit(MarioRunning2, (0,0)) 

    if (CurrentImage == 3): 
     Window.blit(MarioRunning1, (0,0)) 

    if (CurrentImage == 3): 
     CurrentImage = 1 

    else: 
     CurrentImage+=1 

    pygame.display.flip() 

    clock.tick(5) 

pygame.quit() 
+1

Переменные MarioRunning [1-3] представляют одинаковое изображение –

ответ

0

Как сказал @ChristianRapp, что MarioRunning переменные все относятся к указанному изображению, Mario1.png. Попробуйте изменить этот кусок на:

MarioRunning1 = pygame.image.load("images/Mario1.png") 
MarioRunning2 = pygame.image.load("images/Mario2.png") 
MarioRunning3 = pygame.image.load("images/Mario3.png") 

Это предполагается, что вам нужны справки 3 Марио. Также кажется, что вы никогда не меняете CurrentImage, когда вы меняете изображение, поэтому оно всегда будет и никогда не изменится. Попробуйте:

if (CurrentImage == 1): 
     Window.blit(MarioRunning2, (0,0)) 
     CurrentImage = 2 

    elif (CurrentImage == 2): 
     Window.blit(MarioRunning3, (0,0)) 
     CurrentImage == 3 

    else: 
     Window.blit(MarioRunning1, (0,0)) 
     CurrentImage = 1 

Таким образом, он всегда переходит к следующему циклу. О, и причина, по которой изображение не движется, вы не говорите. Например, часть (0, 0) строки Window.blit(MarioRunning1, (0,0)) сообщает pygame, куда поместить изображение в пикселях. Изменение этих чисел изменится, когда изображение будет помещено.

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