4.4综合问题的解决 课件(共30张PPT)-高中信息技术(教科版2019 必修1)

资源下载
  1. 二一教育资源

4.4综合问题的解决 课件(共30张PPT)-高中信息技术(教科版2019 必修1)

资源简介

(共30张PPT)
4.4综合问题的解决
第 4 单元
学习目标
4.4综合问题的解决
★ 学会使用pygame模块。
★ 基于需求,分解任务。
★ 组装程序,测试运行
pygame模块
什么是pygame模块?
Pygame 是一个专门用来开发游戏的 Python 模块,主要为开发、设计 2D 电子游戏而生,具有免费、开源,支持多种操作系统,具有良好的跨平台性等优点。它提供了诸多操作模块,比如图像模块(image)、声音模块(mixer)、输入/输出(鼠标、键盘、显示屏)模块等。
简单来说,如果你使用pygame,理论上可以开发设计市面上所有的2d类型游戏(仅仅是理论上)。
pygame模块
pygame模块的安装
使用pip接口进行安装
代码:
pygame模块
pygame库基本函数使用
1. pygame.init() 初始化,调用pygame的任何函数之前都要调用这个函数。
代码:
pygame模块
pygame库基本函数使用
2. pygame.display.set_mode((xxx,xxx)) 创建窗口,传入宽和高
代码:
pygame模块
pygame库基本函数使用
3. pygame.display.set_caption("xxxx") 设置窗口顶部标题名称
代码:
pygame模块
pygame库基本函数使用
运行上面代码会发现左上角出现一个窗口,然后一闪即过,这是正常的。这里就要思考python代码的运行,通过执行上述代码,你创建了一个黑色窗口,但是当代码执行完会发生什么,当然是python自动退出了。
所以要使用一定的方法不让代码结束运行,这就要添加“死循环”让程序一遍又一遍的运行里面的代码而不退出。
pygame模块
pygame的操作
1. screen.fill() 对颜色进行填充
代码:
pygame模块
pygame的操作
2. 图片插入pygame.image.load('xxx.png')
代码:
3. screen.blit(xx,(0,0))##写入到背景
pygame模块
pygame的操作
4. pygame.display.flip() 更新全部显示
5.pygame.quit() #退出pygame
pygame模块实例
用pygame制作简易版《flappy bird》游戏
游戏规则:
1.按下空格键开启游戏
2.按下空格键控制小鸟向上飞,不按,小鸟掉落下来
3.小鸟碰到上下管道或者超出窗口上下高度,游戏失败
pygame模块实例
用pygame制作简易版《flappy bird》游戏
一、游戏框架
import pygame as py
import random as r
import sys
py.init() # 初始化
py.mixer.init() # 初始化声音模块
py.display.set_caption("flappy bird") # 设置标题
WIDTH,HEIGHT = 288,512 # 常量,游戏窗口宽和高
screen = py.display.set_mode((WIDTH,HEIGHT)) # 屏幕对象
while True:
for event in py.event.get(): # 获取事件
if event.type == py.QUIT:
py.quit()
sys.exit()
py.display.update()
pygame模块实例
用pygame制作简易版《flappy bird》游戏
二、设置变量
2.1、加载背景图片对象和设置帧速率
clock = py.time.Clock()
bg = py.image.load("img/bg_day.png") # 背景图片对象
2.2、加载小鸟图片对象
'''小鸟的设置'''
bird = py.image.load("img/bird0_0.png") # 小鸟对象
bird_rect = bird.get_rect()
speed = 7 # 小鸟的速度
bird_rect.left = 50 # 小鸟的x坐标
bird_rect.top = 300 # 小鸟的y坐标
pygame模块实例
用pygame制作简易版《flappy bird》游戏
二、设置变量
2.3、加载管道图片对象
pipe_up = py.image.load("img/pipe_up.png") # 口冲上的管道 下
pipe_down = py.image.load("img/pipe_down.png") # 口冲下的管道 上
pipe = [WIDTH, r.randint(-200,0)]
# 管道坐标:[x坐标,y坐标]
space = r.randint(100,200)
# 上下管道间隔
x = 5
# 管道移动速度
pygame模块实例
用pygame制作简易版《flappy bird》游戏
二、设置变量
2.4、字体 —— 分数、最高分、开始界面和游戏结束
h_score = t_score = 0 # 最高分和当前分数
score_img = [py.image.load("img/font_0{}.png".format(i)) for i in range(48,58)] # 分数图片
font36 = py.font.SysFont('Arial', 28) # 字体对象
msg = font36.render('Press SPACE to Start', True, (0,0,0)) # 屏幕上的开始文本
h_score_font = font36.render("High Score: " + str(h_score),True,(0,0,0)) # 渲染最高分
game_over = py.image.load("img/game_over.png") # 获取失败图片对象
pygame模块实例
用pygame制作简易版《flappy bird》游戏
二、设置变量
2.5、声音模块
'''声音'''
sounds = (
py.mixer.Sound("audio/wing.wav"),
py.mixer.Sound("audio/hit.wav"),
py.mixer.Sound("audio/point.wav")
)
pygame模块实例
用pygame制作简易版《flappy bird》游戏
二、设置变量
2.5、声音模块
'''声音'''
sounds = (
py.mixer.Sound("audio/wing.wav"),
py.mixer.Sound("audio/hit.wav"),
py.mixer.Sound("audio/point.wav")
)
2.6、是否按下空格键
start = False # 开始状态,空格键没有按下
pygame模块实例
用pygame制作简易版《flappy bird》游戏
三、游戏主循环
3.1、设置帧速率、加载背景图片
while True:
clock.tick(60) # 设置帧速率
screen.blit(bg,(0,0)) # 加载背景图片
【省略代码】
pygame模块实例
用pygame制作简易版《flappy bird》游戏
三、游戏主循环
3.2、按下空格键
while True:
clock.tick(60) # 设置帧速率
screen.blit(bg,(0,0)) # 加载背景图片
for event in py.event.get(): # 获取事件
if event.type == py.QUIT:
py.quit()
sys.exit()
pygame模块实例
用pygame制作简易版《flappy bird》游戏
三、游戏主循环
3.2、按下空格键
# 按空格时开始游戏,或者重新初始化速度
if event.type == py.KEYDOWN:
if event.key == py.K_SPACE: # 按下空格键
sounds[0].play() # 播放音效
if start == False:
bird_rect.top , start = 300,True
speed = 7 # 重新初始化速度
py.display.update()
pygame模块实例
用pygame制作简易版《flappy bird》游戏
三、游戏主循环
3.3、开始游戏
每次管道在窗口的最右边出现,向左移动
上管道的top属性的取值范围是(-200,0),即上管道在窗口中显示出来的长度范围为(120,320)
space为上下两个管道口的间距,设置为了一个随机数
下管道的top属性的取值范围可以通过计算得到,为上管道在窗口上显示的长度 + space,即 pipe[1] + space + 320
管道到达窗口左边之后,需要重新生成管道的y坐标
pygame模块实例
用pygame制作简易版《flappy bird》游戏
三、游戏主循环
3.3、开始游戏
if start: # 开始游戏
screen.blit(bird,(bird_rect.left,bird_rect.top)) # 加载小鸟角色
bird_rect.top -= speed # 向上或向下飞
speed -= 0.5
'''管道'''
screen.blit(pipe_down,(pipe[0],pipe[1])) # 加载上面的管道
screen.blit(pipe_up,(pipe[0],pipe[1] + space + 320)) # 加载下面的管道
pipe[0] -= x # 管道x坐标减少,向左移动
shouScore(t_score) ## 显示得分
pygame模块实例
用pygame制作简易版《flappy bird》游戏
三、游戏主循环
3.3、开始游戏
# 出现新的管道,随机y坐标
if pipe[0] < -50:
pipe = [WIDTH,r.randint(-200,0)]
space = r.randint(100,200)
t_score += 1 # 增加得分
sounds[2].play() # 成功通过管道,播放音效
h_score = max(h_score,t_score) # 更新最高分
pygame模块实例
用pygame制作简易版《flappy bird》游戏
三、游戏主循环
3.3、开始游戏
# 开始和结束时显示的画面
else:
h_score_font = font36.render("High Score: " + str(h_score), True, (0, 0, 0)) # 渲染最高分
screen.blit(msg,(0,200)) # 显示提示信息
screen.blit(h_score_font,(0,300)) # 显示最高分
pygame模块实例
用pygame制作简易版《flappy bird》游戏
三、游戏主循环
3.4、游戏失败
小鸟的y坐标(即top)超过窗口的上下高度
小鸟撞到管道
pygame模块实例
用pygame制作简易版《flappy bird》游戏
三、游戏主循环
3.4、游戏失败
# 失败条件
if bird_rect.top >= HEIGHT - 48 or bird_rect.top < 0 or \
(50 < pipe[0] < 98) and (bird_rect.top < pipe[1] + 320 or \
bird_rect.top > pipe[1] + space + 320):
start, t_score, pipe[0],msg = False, 0, 720,game_over # 游戏失败,显示gameover
bird_rect.top = 300
x = 5
sounds[1].play() # 播放音效
pygame模块实例
用pygame制作简易版《flappy bird》游戏
三、游戏主循环
四、处理显示分数的函数 —— shouScore(t_score)
分数显示在屏幕中央
分数采用的是0-9的图片来显示
需要计算分数所占的宽度
pygame模块实例
用pygame制作简易版《flappy bird》游戏
三、游戏主循环
四、处理显示分数的函数 —— shouScore(t_score)
def shouScore(score):
'''分数显示在屏幕中央'''
score_lst = [int(i) for i in list(str(score))] # 获取分数
totalWidth = 0 # 所要显示数字的总宽度
for i in score_lst:
totalWidth += score_img[i].get_width()
Xpos = (WIDTH - totalWidth) / 2
for i in score_lst:
screen.blit(score_img[i],(Xpos,HEIGHT * 0.1))
Xpos += score_img[i].get_width()
谢谢聆听

展开更多......

收起↑

资源预览