(新教材)教科版高中信息技术必修一 4.4 综合问题的解决 课件(共22张PPT)

文档属性

名称 (新教材)教科版高中信息技术必修一 4.4 综合问题的解决 课件(共22张PPT)
格式 pptx
文件大小 674.3KB
资源类型 教案
版本资源 教科版(2019)
科目 信息技术(信息科技)
更新时间 2020-08-10 16:16:34

图片预览

文档简介

(共22张PPT)
4.4 综合问题的解决
第4单元 计算与问题解决
学 习 目 标
2.体验软件开发的基本流程
1.学会分析任务,描述需求分析,知道需要解决问题的关键点。
pygame模块的使用 (重点)
过程设计中,事件代码的理解及使用。 (难点)
请同学们打开光盘接福.py程序,体验并能说出游戏的过程。
基于需求,分解任务
活动1 了解需求,分析问题
通过刚才的游戏,我们知道游戏过程是通过单击鼠标,接屏幕上不断出现的福字,并根据成功接到福字的次数记录分值。请同学们完成课本P108“接福”游戏描述。
需求分析是软件工程中的一个关键过程。需求分析阶段的任务是确定软件系统的功能。通俗地说,就是确定需要计算机“做什么”,想达到什么样的效果。只有在确定了这些需求后,才能够分析和寻求系统的解决方法。
基于需求,分解任务
“接福”游戏:
需要导入的模块有pygame、random、sys。其中,pygame模块提供了图像、声音等函数;random模块用于产生随机数;sys模块包含了跟Python环境相关的函数。
pygame模块
它是一个专门用来开发游戏的模块,可以包含图像、声音等。它的相关内容主要有:
模 块 功 能
Pygame.display 访问显示设备
Pygame.event 管理事件
Pygame.font 使用字体
Pygame.image 加载和存储图片
基于需求,分解任务
活动2 分解任务,设计流程
“接福”游戏设计的重难点是人机交互,即如何实时获得鼠标的状态并对鼠标单击做出正确的响应。也就是不断地进行监听、更新游戏状态、重绘屏幕三个步骤的操作。
基于需求,分解任务
通常情况下,游戏的基本结构如图4.4.2所示。其中的事件主要指鼠标事件、键盘事件等。
游戏状态可以理解为程序中的变量值。随着鼠标单击,游戏中的分数需要更新,这种状态随着鼠标单击或键盘输入等事件的发生而改变。
基于需求,分解任务
游戏状态通常随事件的发生而改变,如鼠标单击、键盘输入或者时间的流逝,游戏循环不停地检查是否有新事件产生,并且会根据事件来更新游戏状态,这通常叫作事件处理。
随着游戏状态更新或游戏场景变化,屏幕上显示的内容也会相应地发生改变。
本游戏中福字在窗口随机出现,实际上就是显示不同位置的福字。要达到这个效果,需要完成两个步骤:(1)在新的位置上画出图像; (2)把原来的图像擦掉。要“擦掉”某个图像,可以选择“覆盖”它,通常采用重绘背景或者用其他对象来覆盖的方式。在该游戏中,我们通过重绘背景来覆盖前一个福字。
基于需求,分解任务
Pygame自带了一个监听类循环,不断检查用户的操作,这个循环在程序运行过程期间持续工作。仔细阅读理解如下代码
while True:
for event in pygame.event.get(): #监听并获取事件列表
if event.type==pygame.QUIT: #Quit事件
sys.exit() #退出程序
if event.type==pygame.MOUSEBUTTONDOWN: #侦听到鼠标点击事件
……
基于需求,分解任务
以下是本游戏中要用到的程序功能块,包括游戏环境设置、绘制图像、设置初始值等。请将主程序的各功能语句放到合适的位置,完善流程图。
基于需求,分解任务
基于需求,分解任务
需求分析之后、程序设计之前,需要对系统进行总体设计和详细设计。总体设计就是在需求分析的基础上对模型细化、分解任务,明确程序由哪些模块组成。概括地说,就是系统应该如何实现。详细设计主要指界面设计、过程设计等。
组装程序,测试运行
活动1 界面设计
1.创建程序窗口,设置背景。
调用pygame.display.set_mode( )函数,将返回一个窗口。如果想在窗口上绘制或是放置对象,需要指定这个对象在窗口的具体位置即坐标。pygame中的坐标系原点在左上角,水平方向为x轴,垂直方向为y轴。
在pygame中,使用图像的最简单方法是调用image函数。通过pygame.image.load(filename)来载入图片,filename表示图像文件的路径和名称。图像文件必须和程序在同一文件夹下才可以使用相对路径的引用方式。
组装程序,测试运行
根据以上分析完成“接福”游戏的界面设计
(1)显示一个窗口import pygame #导入模块pygame.init() #pygame模块初始化screen=pygame.display.set_mode([800,600]) #创建一个窗口screen,
大小为800*600(2)显示一个有背景色的窗口screen.fill((255,255,0)) #窗口填充黄色*pygame.display.update() #窗口刷新(3)显示一个有背景图片的窗口用下面两条语句替换(2)代码段中带“*”号的语句back=pygame.image.load('bj.jpg') #加载背景图像screen.blit(back,[0,0]) #将背景图画在窗口
运行P111样例程序,体验图像文件的引用。
import pygame #导入模块
pygame.init() #pygame模块初始化
screen=pygame.display.set_mode([600,400])#创建窗口screen,大小800*600
pygame.display.set_caption('实例') #设置屏幕标题
screen.fill((144,238,144)) #窗口填充淡绿色
img=pygame.image.load('ball.png') #载入ball.png图像到内存
screen.blit(img,[200,200]) #将图像绘制在screen中,图像的左上角在[200,200]
pygame.display.update() #窗口刷新
组装程序,测试运行
活动1 界面设计
2.绘制福字。
在屏幕上出现福宇同祥可以使用以上在屏幕上绘制图像的方法。为了便于游戏循环中反复调用,可以定义成一个函数showfu,在绘制福字时,需要设置图像显示的位置,因此showfu中有两个参数,分别表示图像位置的横坐标和纵坐标。
def showfu(x,y): #定义函数,在坐标(x,y)上显示图像
gift=pygame.image.load('fu.png') #加载福字图像
screen.blit(gift,[x,y]) #显示福字
在实际使用中,只要提供一对坐标值,就可以调用showfu了。
活动1 界面设计
3.显示得分。
方法为:先定义显示字体,然后将score显示出来。为了增加代码的复用性,以便游戏循环中状态更新时反复调用,可以定义成一个函数showscore。
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]) #在窗口显示
组装程序,测试运行
活动1 界面设计
4.游戏状态的更新和屏幕的重绘
在pygame的游戏循环中,我们通过调用以下语句来完成游戏状态的更新和屏幕的重绘,请在横线上注明各语句的功能。
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) #设置两次显示福字之间的延时
组装程序,测试运行
活动2 人机交互及程序拼装
人机交互主要体现在鼠标上,需要获取按键的情况,就要在监听事件中增加相应的判断语句。打开光盘中“接福,py”,找到相应代码,理解各句含义,在横线上用自然语言描述对应功能。
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 #
侦听到鼠标点击事件
加分
组装程序,测试运行
总 结
组装程序,测试运行
基于需求,分解任务