首页 > 编程语言 >Python第十三章实验报告

Python第十三章实验报告

时间:2022-12-01 22:24:48浏览次数:47  
标签:load ballrect Python self pygame 第十三章 实验报告 speed image

第十三章实验报告——篮球自动弹跳

代码如下:

 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

相关文章

  • python篮球自动弹跳
           具体思路是首先导入sys和pygame模块然后初始化pygame然后显示窗口加载篮球图片执行死循环检查事件设置移动篮球将图片画在窗口上最后更新全部显示......
  • python-练习(知识点到逻辑运算符)
    1.在终端中显示古诗"登高"print("登高")print("作者:杜甫")print("风急天高猿啸哀,渚清沙白鸟飞回。")print("无边落木萧萧下,不尽长江滚滚来。")pr......
  • python第十三章实例1
    #-*-coding:utf-8-*-importsys#导入sys模块importpygame#导入pygame模块p......
  • 第十三章实例1篮球自动弹跳
    #-*-coding:utf-8-*-importsys#导入sys模块importpygame#导入pygame模块pygame.init......
  • python-正式课
    1.python简介1.1计算机基础结构1.1.1硬件五大组成部分:运算器、控制器、存储器、输入设备、输出设备。运算器:按照程序中的指令,对数据进行加工处理。控制器:根......
  • Python时间戳获取
    第一种方式,利用time包importtimetime_cur=time.strftime("%Y-%m-%d_%H:%M:%S",time.localtime())python中时间日期格式化符号:%y两位数的年份表示(00-99)%Y四位......
  • Python 篮球自动跳
    importsysimportpygamepygame.init()#初始化pygamesize=width,height=640,480#设置窗口screen=pygame.display.set_mode(size)#显示窗口color=......
  • [oeasy]python0022_框架标题的制作_banner_结尾字符串_end
    结尾字符串(end)回忆上次内容​python3​​的程序是一个5.3M的可执行文件​​python3​​里面存的是cpu指令可以执行的那种我们可以把指令对应的汇编找到​​objdum......
  • python第十三章(篮球的跳跃游戏
    #-*-coding:utf-8-*-importsysimportpygamepygame.init()size=width,height=640,480screen=pygame.display.set_mode(size)color=(0,0,0)ball=pygame.image.load("b......
  • [oeasy]python0022_框架标题的制作_banner_结尾字符串_end
    ​ 结尾字符串(end)回忆上次内容​python3​​的程序是一个5.3M的可执行文件​​python3​​里面存的是cpu指令可以执行的那种我们可以把指令对应的汇编......