4.4 综合问题的解决 课件(共20张PPT)

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

4.4 综合问题的解决 课件(共20张PPT)

资源简介

(共20张PPT)
综合问题的解决
—— 接 福 游 戏
课 前 预 习
预习课本P107-P109,思考以下问题
1.python中专门用来开发游戏的模块是( )
A、numpy B、pygame
C、matplotlib D、math
2.在软件的生命周期中,明确软件系统具备哪些功能的阶段是( )。
A.可行性分析 B.需求分析
C.概要设计 D.详细设计
B
B
教 学
目 标
学会分析任务,描述需求分析,知道需要解决的关键问题。
体验软件开发的基本流程
接福游戏
运行“接福游戏”,描述这款游戏的功能?需要python中的哪些模块实现这些功能?

了解需求、分析问题
pygame模块提供了图像、声音等函数;
random模块用于产生随机数;
sys模块包含了跟Python环境相关的函数。
综合考虑游戏功能,需要导入的模块有pygame、random、 sys。

了解需求、分析问题
pygame是一个专门用来开发游戏的模块,可以包含图像、声音等。
模块 功能
pygame. display 访问显示设备
pygame.event 管理事件
pygame.font 使用字体
pygame.image 加载和存储图片

分解任务,设计流程
如何实时获得鼠标的状态并对鼠标单击做出正确的响应。也就是不断地进行监听、更新游戏状态 、重绘屏幕三个步骤的操作。

分解任务,设计流程
pygame自带监听类循环,会不断检查用户的操作,比如用户按键、移动鼠标或者关闭窗口等,通常用来实现游戏中与用户的交互。
监听
while True:
#监听所有事件, 获取事件列表
for event in pygame.event.get():
if event.type==pygame.QUIT: #Quit事件
sys.exit() #退出程序
#鼠标单击事件
if event.type==pygame.MOUSEBUTTONDOWN:
……

分解任务,设计流程
游戏状态可以理解为程序中的变量值。随着鼠标单击,游戏中的分数需要更新。这些状态通常随着鼠标单击或键盘输入等事件的发生而改变。
更新游戏状态
本游戏中福字在窗口随机出现,实际上就是显示不同位置的福字。要达到这个效果,需要完成两个步骤:①把原来的图像擦掉或覆盖②在新的位置上画出图像
重绘屏幕
计算机要“擦掉”某个图像,可以采用重绘背景或者用其他对象来覆盖的方式
活动一:
将主程序的各功能语句放到合适的位置。

组装程序,测试运行
1. 创建窗口,设置背景
import pygame #导入模块
pygame.init() #pygame模块初始化
#创建一个窗口screen,大小为800*600
screen=pygame.display.set_mode([800,600])
pygame.display.set_caption('接福') #设置窗口标题

组装程序,测试运行
显示一个有背景色的窗口
screen.fill((144,238,144)) #窗口填充淡绿色*
pygame.display.update() #窗口刷新
显示一个有背景图片的窗口
back=pygame.image.load('bj.jpg') #加载背景图像
screen.blit(back,[0,0]) #将背景图画在窗口
活动二:
根据以上分析完成“接福”游戏的界面设计
import pygame
screen = pygame.display.set_mode([①]) # 创建一个800*600的窗口
pygame.display.set_caption('接福') # 设置窗口标题
back = pygame.image.load('bj.jpg') # 加载背景图像
screen.blit(②, [0, 0]) # 将背景图显示在窗口
pygame.display.③ #刷新画面

组装程序,测试运行
2.绘制福字
在实际使用中,只要提供一对坐标值,就可以调用showfu了。
def showfu(x,y): #定义函数,在坐标(x,y)上显示图像
gift=pygame.image.load('fu.png') #加载福字图像
screen.blit(gift,[x,y]) #显示福字

组装程序,测试运行
方法为:先定义显示字体,然后将score显示出来。为了增加代码的复用性,以便游戏循环中状态更新时反复调用,可以定义成一个函数showscore。
3.显示得分
def showscore(score): #定义函数,显示分数
textfont=pygame.font.SysFont('Arial',30) #字体为Arial,大小30
#生成平滑的红色字符串
t=textfont.render('score:'+str(score),True, (255,0,0))
screen.blit(t,[50,50]) #在窗口显示

组装程序,测试运行
4.游戏状态的更新和屏幕的重绘
screen.blit(back,[0,0]) # _
showscore(score) # _
x=random. randint(50, 700) # _
y=random.randint(50, 500) # _
showfu(x,y) # _
pygame.display.update() # _
pygame.time.delay(800) #设置两次显示福字之间的延时
将背景图显示在窗口
显示分数
随机生成福字水平方向坐标
随机生成福字垂直方向坐标
在(x,y)位置显示福字
刷新窗口

组装程序,测试运行
while True:
for event in pygame.event.get(): #侦听并获取事件列表
if event.type==pygame.QUIT: #接收到退出事件后退出程序
sys.exit()
if event.type==pygame.MOUSEBUTTONDOWN: #侦听到鼠标点击事件
mousex,mousey=pygame.mouse.get_pos() #获取鼠标按下的坐标
#判断鼠标是否击中福字,本例福字宽为60,高为70
if mousex in range(x,x+60) and mousey in range(y,y+70):
score=score+5 #加分
实 现 交 互
课 堂 小 结
综合问题的
解决
pygame
解决问题的方法与步骤
pygame.display访问显示设备
pygame.event 管理事件
pygame.font 使用字体
pyg ame.miage 加栽和存储图片
分析问题
设计算法(流程图)
编写代码
调试运行
巩 固 提 升
1.以下关于算法中输入、输出的描述正确的是( )。
A.算法可以没有输入,表示该算法不涉及任何数据信息
B.算法可以没有输出,表示该算法运行结果为“无解”
C.算法必须要有输入,否则算法无法进行
D.算法至少要有一个输出
2.采用盲目搜索的方法,在搜索的过程中,对所得的结果逐一筛选,排除不符合要求的结果,保留那些符合要求的结果,这种方法叫做( )。
A.解析法 B.递推法 C.枚举法 D.选择法
D
C
THE END

展开更多......

收起↑

资源预览