赞
踩
import pygame import sys import random class Bird(object): """定义一个小鸟类""" def __init__(self): self.birdRect = pygame.Rect(65,50,50,50) """定义初始化方法""" self.birdStatus = [pygame.image.load("C:/Users/张小生/PycharmProjects/untitled2/flappyBird/assets/1.png"), pygame.image.load("C:/Users/张小生/PycharmProjects/untitled2/flappyBird/assets/2.png"), pygame.image.load("C:/Users/张小生/PycharmProjects/untitled2/flappyBird/assets/dead.png")] self.status = 0 self.birdX = 120 self.birdY = 350 self.jump = False self.jumpSpeed = 10 self.gravity = 5 self.dead = False def birdUpdate(self):#定义移动方法 if self.jump: #小鸟跳跃状态 self.jumpSpeed -=1 self.birdY -= self.jumpSpeed else: self.gravity += 0.2 self.birdY += self.gravity self.birdRect[1] = self.birdY class Pipeline(object):#定义管道类 def __init__(self):#初始化方法 self.wallx = 400 self.upy = -300 self.downy = 500 self.pineUp = pygame.image.load("C:/Users/张小生/PycharmProjects/untitled2/flappyBird/assets/top.png") self.pineDown = pygame.image.load("C:/Users/张小生/PycharmProjects/untitled2/flappyBird/assets/bottom.png") def updatePipline(self): #定义移动方法 self.wallx -= 5 if self.wallx < -80: global score #得分 score += 1 self.upy = -random.randint(150,350) self.downy = random.randint(400, 550) self.wallx = 400 def createMap():#创建地图 screen.blit(background, (0,0)) #显示管道 screen.blit(Pipeline.pineUp,(Pipeline.wallx,Pipeline.upy)) screen.blit(Pipeline.pineDown, (Pipeline.wallx, Pipeline.downy)) Pipeline.updatePipline() #显示小鸟,先判断小鸟的状态 if Bird.dead: Bird.status = 2 elif Bird.jump: Bird.status = 1 screen.blit(Bird.birdStatus[Bird.status],(Bird.birdX,Bird.birdY)) Bird.birdUpdate() #在屏幕是显示得分状况 screen.blit(font.render('Score:' + str(score),-1,(255,255,255)),(100,50)) pygame.display.flip() #判断小鸟是否死亡的函数 def checkDead(): upRect = pygame.Rect(Pipeline.wallx,-300,Pipeline.pineUp.get_width(),Pipeline.pineUp.get_height()) downRect = pygame.Rect(Pipeline.wallx, 500, Pipeline.pineDown.get_width(), Pipeline.pineDown.get_height()) #检测矩形碰撞 if upRect.colliderect(Bird.birdRect) or downRect.colliderect(Bird.birdRect): Bird.dead = True #边界检测 if not 0 < Bird.birdRect[1] < height: Bird.dead = True return True else: return False #玩家最终得分 def getResult(): final_text1 = "Game Over" final_text2 = "Your final score is :" + str(score) ft1_font = pygame.font.SysFont("Arial",70) ft1_surf = font.render(final_text1,1,(244,3,36)) ft2_font = pygame.font.SysFont("Arial", 50) ft2_surf = font.render(final_text2, 1, (253, 177, 6)) screen.blit(ft1_surf , [screen.get_width() / 2 - ft1_surf.get_width()/2,100]) screen.blit(ft2_surf , [screen.get_width() / 2 - ft2_surf.get_width()/2,200]) pygame.display.update() if __name__ == '__main__': #主程序 pygame.init()#初始化 #初始化字体 pygame.font.init() font = pygame.font.SysFont(None,50) size = width,height = 400,650 screen = pygame.display.set_mode(size) #设置窗口 clock = pygame.time.Clock() # 设置时钟 # color = (255,255,255) # screen.fill(color) Bird = Bird() Pipeline = Pipeline() score = 0 while True: clock.tick(45) #每秒执行60次 #轮询事件检测 for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() if (event.type == pygame.KEYDOWN or event.type == pygame.MOUSEBUTTONDOWN) and not Bird.dead: Bird.jump = True Bird.gravity = 5 Bird.jumpSpeed = 10 background = pygame.image.load("C:/Users/张小生/PycharmProjects/untitled2/flappyBird/assets/background.png") #检测小鸟是否死亡 if checkDead(): getResult() else: createMap() # 创建地图 # screen.blit(background,(0,0)) # pygame.display.flip ()
把图片地址换一下就OK了网盘,提取码:2sb8
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。