class Bird():
def
__init__(self,costumeList):
self.costumeId = 0
self.costumeList = costumeList
self.cosutmeAmount = len(costumeList)
self.image =
self.costumeList[self.costumeId]
self.rect = self.image.get_rect()
self.rect.x = 100
self.rect.y = 100
self.xspeed = 0
self.yspeed = 3
self.aspeed = 1 #加速度
self.moveStartTime = time.time()
self.costumeStartTime =time.time()
self.delete =0 #删除标志
def move(self):
if time.time()- self.moveStartTime<0.1:
self.rect.move_ip(self.xspeed,self.yspeed)
self.yspeed = self.yspeed + self.aspeed
self.moveStartTime = time.time()
def 下一个造型(self):
if time.time() -
self.costumeStartTime<0.1:
self.costumeId = self.costumeId + 1
self.costumeId = self.costumeId % self.cosutmeAmount
self.image
= self.costumeList[self.costumeId]
self.costumeStartTime = time.time()
def draw(self):
screen.blit(self.image,self.rect)
def
die(self,dieSound):
self.delete=1
self.xspeed = -5
dieSound.play()
class Pipe():
def
__init__(self,image,t):
self.type = t #
t为up或者down,用于区分上管道和下管道
self.image = image
self.rect = self.image.get_rect()
self.rect.left = screenWidth+1
self.sety()
self.xspeed= -5
self.yspeed = 0
self.moveStartTime = time.time()
self.delete = 0 #待删除标志
def sety(self):
if self.type == "up":
r1 =
screenHeight//2-50
r2 =
screenHeight//2-100
self.rect.bottom = randint(r2,r1)
if self.type=="down": #如果是下管道
r1 =
screenHeight//2+50
r2 =
screenHeight//2+100
self.rect.y = randint(r1,r2)
def move(self):
if time.time()- self.moveStartTime<0.1:
self.rect.move_ip(self.xspeed,self.yspeed)
self.moveStartTime = time.time()
#如果到了最右边,把它移到最左边,换个速度继续移动
if
self.rect.right<=0:
self.rect.left = screenWidth
+ 100
self.sety()
def
collide(self,bird):
if self.rect.colliderect(bird.rect):
return
True
else:
return
False
def draw(self):
screen.blit(self.image,self.rect)