今天下午把代码全部重写了一遍,因为之前的太乱,变量到处都是。。。
重写之后用了类和精灵组
功能基本实现
#This editon has been modified carefully
#And still I hope you will love it
#Code can also be romantic
# 2015/11/24
######################################################
# To import some basic parts
import pygame
from sys import exit
from random import randint
# To define a new hero class
class Hero(pygame.sprite.Sprite):
def __init__(self,init_pos,Hero_Surface): #pos(200,355)
pygame.sprite.Sprite.__init__(self)
self.image=Hero_Surface #!!! Error
self.pos=init_pos
self.surface=Hero_Surface
self.rect=self.image.get_rect()
self.rect.topleft=init_pos
self.speed=2.5
def move(self, offset):
x=self.rect.left+ offset[pygame.K_RIGHT]-offset[pygame.K_LEFT]
y=self.rect.top+offset[pygame.K_DOWN]-offset[pygame.K_UP]
if x<0:
self.rect.left=0
elif x>230:
self.rect.left=230
else:
self.rect.left=x
if y<0:
self.rect.top=0
elif y>325:
self.rect.top=325
else:
self.rect.top=y
# To initialize the game
SCREEN_WIDTH=640
SCREEN_HIGH=480
Background=pygame.image.load('resource/image/Background1.png')
Running1=pygame.image.load('resource/image/Running1.png')
Running2=pygame.image.load('resource/image/Running2.png')
Running3=pygame.image.load('resource/image/Running3.png')
Running4=pygame.image.load('resource/image/Running4.png')
Hero_Surface=[Running1,Running2]
#Game on
pygame.init()
pygame.display.set_caption('The Otter\'s Adventure')
screen=pygame.display.set_mode([SCREEN_WIDTH,SCREEN_HIGH])
offset={pygame.K_DOWN:0,pygame.K_UP:0,pygame.K_LEFT:0,pygame.K_RIGHT:0}
hero=Hero((200,355),Hero_Surface[0])
ANIMATE_CYCLE=30
ticks=0
while True:
screen.blit(Background,(0,0))
if ticks>=ANIMATE_CYCLE:
ticks=0
hero.image=Hero_Surface[ticks//(ANIMATE_CYCLE//2)]
screen.blit(hero.image,hero.rect)
ticks+=1
pygame.display.update()
for event in pygame.event.get():
if event.type==pygame.QUIT:
pygame.quit()
exit()
elif event.type==pygame.KEYDOWN:
if event.key in offset:
offset[event.key]=hero.speed
elif event.type==pygame.KEYUP:
if event.key in offset:
offset[event.key]=0
hero.move(offset)