2015-07-15 3 views
0

здесь мой код:PyGame Перемещение анимации и проблемы с фоном

import pygame 
import sys 
pygame.init() 
FPS=30 

clock=pygame.time.Clock() 
white=(255,255,255) #background 
screen=pygame.display.set_mode((480,320)) #screen size 
pygame.display.set_caption("Zombie Game!") 
mainsheet=pygame.image.load("C:\Python34\MyMan.png") #load image 
sheet_size=mainsheet.get_size() #get size of img 

steps_right=8 #first 8 pictures is moving to the right 
jump=16 #next 8 (actually 5) is jumping 
steps_left=24 #next 8 is moving to the left 
cell_width=int(sheet_size[0]/8) #width of the one animation 
cell_height=int(sheet_size[1]/4) #height of the one animation 

cell_list=[] 
for y in range(0,sheet_size[1],int(cell_height)): #looping through image 
    for x in range(0,sheet_size[0],int(cell_width)): 

     surface=pygame.Surface((cell_width,cell_height)) 
     surface.blit(mainsheet,(0,0),(x,y,cell_width,cell_height)) 

     cell_list.append(surface) #adding images to list 


cell_position=0 

running=True 

pygame.key.set_repeat(50, 50) #if they hold the key 
while running: 

    for event in pygame.event.get(): 
     if event.type==pygame.QUIT: 
      pygame.quit() 
      sys.exit() 
     if event.type==pygame.KEYDOWN:    
      if event.key==pygame.K_RIGHT: #if to the right.. 
       if cell_position <steps_right-1: 
        cell_position+=1 
       else: 
        cell_position=0 
      if event.key==pygame.K_LEFT: 
       if cell_position<steps_left-1 and cell_position>jump: 
        cell_position+=1 
       else: 
        cell_position=jump+1 
      if event.key==pygame.K_UP: 
       if cell_position<12 and cell_position>7: 
        cell_position+=1 
       else: 
        cell_position=8 
    screen.fill(white) 
    screen.blit(cell_list[cell_position],(100,10)) 
    clock.tick(FPS) 

    pygame.display.update() 

Я знаю, что может быть, это не самый лучший способ сделать это, но это моя первая попытка. Но есть 2 проблемы (по крайней мере): 1) «Символ» движется (анимируется), но, конечно, он не двигается, и я не знаю, как это сделать, если бы это был только простой прямоугольник, то я бы, но это немного сложно .. и 2) когда я пытаюсь изменить фон на белый вместо черного, мой персонаж находится на маленьком черном квадрате, но фон белый. спасибо за помощь !!!! :-))

ответ

0

Примечания:

"C: \ Python34 \ MyMan.png": начните это с г "" или использовать двойные слеши. В противном случае, если вы поместите это в каталог, начинающийся с n или что-то, все сломается.

Цвет фона вызывается (предположительно) с помощью непрозрачного изображения. png поддерживает прозрачность. Я думаю, что может быть флаг для отправки Pygame, чтобы отметить его как прозрачный, но я не помню, что это такое.

Для перемещения посмотрите на экран screen.blit (cell_list [cell_position], (100,10)). Это координатная пара xy; измените их из констант на переменные и измените их в цикле событий.

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