第十三章实验报告——篮球自动弹跳
代码如下:
1 #----------实例01:制作一个跳跃的小球游戏----------# 2 import sys 3 import pygame 4 pygame.init() #初始化pygame 5 size = width,height = 640,480 #设置窗口 6 screen = pygame.display.set_mode(size) #显示窗口 7 color = (255,255,255) #设置颜色 8 9 ball = pygame.image.load("ball.png") #加载图片 10 ballrect = ball.get_rect() #获取矩形区域 11 12 speed = [5,5] 13 clock = pygame.time.Clock() #设置时钟 14 #执行死循环,确保窗口一直显示 15 while True: 16 clock.tick(60) #每秒执行60次 17 #检查事件 18 for event in pygame.event.get(): 19 if event.type ==pygame.QUIT: #如果单击关闭窗口,则退出 20 pygame.quit() 21 sys.exit() 22 23 ballrect = ballrect.move(speed) #移动小球 24 #碰到左右边缘 25 if ballrect.left < 0 or ballrect.right > width: 26 speed[0] = -speed[0] 27 # 碰到上下边缘 28 if ballrect.top < 0 or ballrect.bottom > height: 29 speed[1] = -speed[1] 30 screen.fill(color) #填充颜色 31 screen.blit(ball, ballrect) #将图片画到窗口 32 pygame.display.flip() #更新全部显示
代码运行结果如下:
开发Flappy Bird游戏
代码如下:
1 import pygame 2 import sys 3 import random 4 class Bird(object): 5 """定义一个鸟类""" 6 def __init__(self): 7 """定义初始化方法""" 8 self.birdRect = pygame.Rect(65,50,50,50) #鸟的矩形 9 #定义鸟的三种状态列表 10 self.birdStatus = [pygame.image.load("assert/1.png"),pygame.image.load("assert/2.png"),pygame.image.load("assert/dead.png")] 11 self.status = 0 #默认飞行状态 12 self.birdX = 120 #鸟所在的X轴坐标 13 self.birdY = 350 #鸟所在的Y轴坐标,即上下飞行的高度 14 self.jump = False #默认情况小鸟自动下落 15 self.jumpSpeed = 10 #跳跃高度 16 self.gravity = 5 #重力 17 self.dead = False #默认小鸟生命状态为活着 18 def birdUpgrate(self): 19 """定义移动方法""" 20 if self.jump: 21 #小鸟跳跃 22 self.jumpSpeed -= 1 #速度递减,上升越来越慢 23 self.birdY -= self.jumpSpeed #鸟的Y轴坐标减小,小鸟上升 24 else: 25 #小鸟坠落 26 self.gravity += 0.2 #重力递增,下降越来越快 27 self.birdY += self.gravity #鸟的Y轴坐标增加,小鸟下降 28 self.birdRect[1] =self.birdY #更改Y轴的位置 29 class Pipeline(object): 30 """定义一个管道类""" 31 def __init__(self): 32 """定义初始化方法""" 33 self.wallx = 400 #管道在x轴坐标 34 self.pineUp = pygame.image.load("assert/top.png") 35 self.pineDown = pygame.image.load("assert/bottom.png") 36 def updatePipeline(self): 37 """管道移动方法""" 38 self.wallx -= 5 #管道X轴坐标递减,即管道向左移动 39 #当管道运行到一定位置,即小鸟飞越管道,分数加1,并且重置管道 40 if self.wallx <-80: 41 global score 42 score += 1 43 self.wallx = 400 44 45 def createMap(): 46 """定义创建地图的方法""" 47 screen.fill((255,255,255)) 48 screen.blit(background,(0,0)) 49 #显示管道 50 screen.blit(Pipeline.pineUp,(Pipeline.wallx,-300)) #上管道坐标位置 51 screen.blit(Pipeline.pineDown, (Pipeline.wallx,500)) #下管道坐标位置 52 Pipeline.updatePipeline() #管道移动 53 #显示小鸟 54 if Bird.dead: #撞管道状态 55 Bird.status = 2 56 elif Bird.jump: 57 Bird.status = 1 58 screen.blit(Bird.birdStatus[Bird.status],[Bird.birdX,Bird.birdY]) #设置小鸟的坐标 59 Bird.birdUpgrate() #鸟移动 60 screen.blit(font.render('Score:'+ str(score),-1,(255,255,255)),(100,50)) #设置颜色及坐标位置 61 pygame.display.update() #更新显示 62 def checkDead(): 63 "检测小鸟是否死亡" 64 upRect = pygame.Rect(Pipeline.wallx,-300,Pipeline.pineUp.get_width(),Pipeline.pineUp.get_height()) 65 downRect = pygame.Rect(Pipeline.wallx,500, Pipeline.pineDown.get_width()-10, Pipeline.pineDown.get_height()) 66 #检测小鸟与上下方管子是否碰撞 67 if upRect.colliderect(Bird.birdRect) or downRect.colliderect(Bird.birdRect): 68 Bird.dead = True 69 #检测小鸟是否飞出上下边界 70 if not 0 < Bird.birdRect[1] < height: 71 Bird.dead = True 72 return True 73 else: 74 return False 75 def getResult(): 76 """获取总分""" 77 final_text1 = "Game Over" 78 final_text2 = "Your final score is :"+str(score) 79 ft1_font = pygame.font.SysFont("Arial",70) #设置第一行文字字体 80 ft1_surf = font.render(final_text1,1,(242,3,36)) #设置第一行文字字体颜色 81 ft2_font = pygame.font.SysFont("Arial",50) #设置第二行文字字体 82 ft2_surf = font.render(final_text2,1,(253,177,6)) #设置第二行文字字体颜色 83 screen.blit(ft1_surf,[screen.get_width()/2-ft1_surf.get_width()/2,100]) 84 screen.blit(ft2_surf, [screen.get_width()/2-ft2_surf.get_width()/2,200]) 85 pygame.display.update() 86 87 if __name__ =='__main__': 88 """主程序""" 89 pygame.init() #初始化pygame 90 pygame.font.init() #初始化字体类 91 font = pygame.font.SysFont(None,50) 92 size = width,height = 400,650 #设置窗口 93 screen = pygame.display.set_mode(size) #显示窗口 94 clock = pygame.time.Clock() #设置时钟 95 Pipeline = Pipeline() #实例化管道类 96 Bird = Bird() #实例化鸟类 97 score = 0 #得分 98 while True: 99 clock.tick(60) #每秒执行60次 100 #轮询事件 101 for event in pygame.event.get(): 102 if event.type == pygame.QUIT:#如果单击关闭窗口,则退出 103 pygame.quit() 104 sys.exit() 105 if (event.type == pygame.KEYDOWN or event.type == pygame.MOUSEBUTTONDOWN) and not Bird.dead: 106 Bird.jump = True 107 Bird.gravity = 5 108 Bird.jumpSpeed = 10 109 background = pygame.image.load("assert/background.png") #加载背景图片 110 if checkDead(): 111 getResult() 112 else: 113 createMap() #创建地图
代码运行结果如下:
标签:load,ballrect,Python,self,pygame,第十三章,实验报告,speed,image From: https://www.cnblogs.com/Shing-gyl/p/16942972.html