这是我的代码:
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)当我尝试将背景改为白色而不是黑色时,我的角色是在黑色的小方块中,但背景是白色的...谢谢你的帮助!!!! : - ))
答案 0 :(得分:0)
注意:
&#34; C:\ Python34 \ MyMan.png&#34;:请从r&#34;&#34;开始或使用双斜线。否则,如果你把它放在以n或其他东西开头的目录中,事情就会破裂。
通过使用非透明图像(可能)引起背景颜色。 png支持透明度。我想可能会有一面旗帜发送给Pygame,以便将其标记为透明,但我不记得它是什么。
要进行移动,请查看line screen.blit(cell_list [cell_position],(100,10))。这是一个xy坐标对;将那些从常量更改为变量,并在事件循环中更改它们。