PyGame移动动画和背景问题

时间:2015-07-15 21:34:29

标签: 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()

我知道也许这不是最好的方法,但这是我的第一次尝试。但是有两个问题(至少):1)“角色”正在移动(动画),但当然他不会移动,我不知道如何做到这一点,如果它只是简单的矩形然后我会,但这有点复杂.. 2)当我尝试将背景改为白色而不是黑色时,我的角色是在黑色的小方块中,但背景是白色的...谢谢你的帮助!!!! : - ))

1 个答案:

答案 0 :(得分:0)

注意:

&#34; C:\ Python34 \ MyMan.png&#34;:请从r&#34;&#34;开始或使用双斜线。否则,如果你把它放在以n或其他东西开头的目录中,事情就会破裂。

通过使用非透明图像(可能)引起背景颜色。 png支持透明度。我想可能会有一面旗帜发送给Pygame,以便将其标记为透明,但我不记得它是什么。

要进行移动,请查看line screen.blit(cell_list [cell_position],(100,10))。这是一个xy坐标对;将那些从常量更改为变量,并在事件循环中更改它们。