- 4.4 综合问题的解决 教案(2课时)_2023新教科版《高中信息技术》必修第一册
- 4.4 综合问题的解决第1、2课时教案.docx--点击预览
- 4.4 综合问题的解决第3、4课时教案.docx--点击预览
文件预览区
|
|
资源描述
教科版 2019 信息技术必修 1 数据与计算教科版 2019 信息技术必修 1 数据与计算第 4 单元计算与问题解决 4.4 综合问题的解决教学设计第 4 单元计算与问题解决 4.4 综合问题的解决教学设计教材分析教材分析基于核心素养的教学,要符合课标的规定要求,又要在此基础上有所建构与创新;要充分体现学科思维,又能促进学生核心素养的全面、均衡发展;既保证知识技能的系统性,又注重项目与活动对学生创新意识与核心素养的驱动。从知识、技能和综合素质方面锻炼自己,培养综合能力和创新意识是中学生职业规划中很重要的内容。以项目为情景,以任务为目标,以活动为载体,使学生具有分析算法、设计算法和实现算法的初步能力,让学生通过实践将书本知识转化为解决实际问题的能力。针对一个实际需求,将一个复杂的问题分解成若干较为简单的问题,从而提高开发简单实用系统的初步能力。把基础知识、基本概念和应用程序开发有机地结合起来,通过对具体案例或任务的分析,引出了 Python 模块中 pygame 模块的应用,介绍了应用软件的程序设计方法。任务驱动型教学能激发学生学习兴趣,提高学生的动手能力和解决问题的能力,达到事半功倍的效果。本节我们围绕项目“接福游戏”展开学习,体验软件开发的流程,感受综合问题的处理方法,本项目主要包含“基于需求,分解任务”和“组装程序,测试运行”两个任务。教学建议教学建议在关注生活趣味的同时,更关注学生的实际认知发展水平。高中生的形式逻辑思维比较发达,但辩证逻辑思维能力有待加强。考虑学生已有的知识和经验(包括生活经验与社会经验),也应注意其经验对课程知识及思维发展的支持程度和水平。开发流程按顺序可以划分为:需求分析;软件的总体结构设计和模块设计;程序开发和调试;运行维护等。在教学过程中,让学生了解面向需求的常用的软件设计方法,培养学生分析问题,整体把握、关注细节的能力,训练学生的综合问题解决能力;在解决复杂问题时,要学会将复杂问题分解成难度较小的小问题,一一突破,小问题解决了,大问题就迎刃而解了。本节的游戏项目是一个较大的工程,我们将它分解为:显示窗体,窗体上显示物体,物体怎样运动,怎样使物体连续运动等多个易于解决的小问题,便于学生理解和掌握,提高学生战胜复杂问题的信心。在实际教学中,我们也可以根据学生的实际情况,选择不同的代码编写要求,如:填空式的代码编写、功能模块的代码编写等。编写代码不是最终目的,培养学生掌握解决实际问题的方法才是关键。教学目标教学目标1.学会分析任务,描述需求分析,知道需要解决的关键问题。2.体验软件开发的基本流程。教学重点、难点教学重点、难点分析任务,描述需求分析,知道需要解决的关键问题。软件开发的基本流程。教学方法教学方法讲授法,演示法,任务引导法教学过程教学过程第一、二课时第一、二课时引入引入在解决一个综合问题时,我们通常先考虑总体,后考虑细节;先面向整体,再细化局部。面对软件开发这类综合问题时,需要立足对象间的相互联系,强调便捷的人机交互模式,尽量向需求靠拢。春节是我国一个古老的节日,也是全年最重要的节日。“迎福”“纳福”是迎新春必不可少的传统项目。有道是:“大 福小福全家福,有福享福处处福。知福来福有祝福,清福洪福添幸福。接福纳福年年福,守福祈福岁岁福!本节我们将围绕“接福 游戏”项目,创设游戏情境,实现通过单击鼠标,去接屏幕上不断出现的福字,并根据成功接到福字的次数记录分值。本项目主要包含“基于需求,分解任务”和“组装程序,测试运行”两个任务。任务一 基于需求,分解任务任务一 基于需求,分解任务“接福”游戏界面如图 4.4.1 所示。活动 1 了解需求,分析问题活动 1 了解需求,分析问题 打开教科书配套资源中的“接福 py”程序并运行,单击屏幕上不断出现的福字,观察屏幕变化。在下框中写出这款游戏的功能。综合考虑游戏功能,需要导入的模块有 pygame、random、sys。其中,pygame 模块提供了图像、声音等函数;random 模块用于产生随机数;sys 模块包含了跟 Python 环境相关的函数。pygame 模块pygame 模块 pygame 是-一个专门用来开发游戏的模块,可以包含图像、声音等。本项目中涉及的 pygamc相关内容如表 4.4.1 所示。模块 功能pygame.display 访问显示设备pygame.event 管理事件pygame.font 使用字体pygame.image 加载和存储图片活动 2 分解任务,设计流程活动 2 分解任务,设计流程 本项目中设计的重点和难点是人机交互,即如何实时获得鼠标的状态并对鼠标单击做出正确的响应。也就是不断地进行监听、更新游戏状态、重绘屏幕三个步骤的操作。通常情况下,游戏的基本结构如图 4.4.2 所示。其中的事件主要指鼠标事件、键盘事件等。游戏状态可以理解为程序中的变量值。随着鼠标单击,游戏中的分数需要更新,还有诸如游戏中人物的生命值、怪物数量等,这些状态经常随着鼠标单击或键盘输入等事件的发生而改变。随着游戏状态更新或游戏场景变化,屏幕上显示的内容也会相应地发生改变。本游戏中福字在窗口随机出现,实际上就是显示不同位置的福字。要达到这个效果,需要完成两个步骤:(1)在新的位置上画出图像;(2)把原来的图像擦掉。计算机图像可不是铅笔画,用橡皮擦就能擦掉。要“擦掉”某个图像,可以选择“覆盖”它,通常采用重绘背景或者用其他对象来覆盖的方式。在该游戏中,我们通游戏状态,这通常过重绘背景来覆盖前一个福字。问题 问题 最后一个问题是,如何实现这种监听?pygame 是专为游戏设计的,自带了一个监听类循环,不断检查用户的操作,比如用户按键、移动鼠标或者关闭窗口等。这个循环会在程序 True(真)、False运行期间持续工作。其代码框架如下。while True:#监听所有事件,获取事件列表for event in pygame.event.get():if event.type=pygame.QUIT:#Quit 事件sys.exit()#退出程序#鼠标单击事件if event.type=pygame.MOUSEBUT TONDOWN:看来要获取按键的情况,只要在监听事件中增加相应的判断语句就可以了。以下是本游戏中要用到的程序功能块,包括游戏环境设置、绘制图像、设置初始值等。请将主程序的各功能语句放到合适的位置,完善图 4.4.3 所示的程序流程图。需求分析之后、程序设计之前,需要对系统进行总体设计和详细设计。总体设计就是在需求分析的基础上对模型细化、分解任务,明确程序由哪些模块组成。概括地说,就是系统应该如何实现。详细设计主要指界面设计、过程设计等。第三、四课时第三、四课时任务二组装程序,测试运行活动 1 界面设计任务二组装程序,测试运行活动 1 界面设计1.创建程序窗口,设置背景。调用 pygame.display.set mode(函数,将返回一个窗口。如果想在窗口上绘制或是放置对象,需要指定这个对象在窗口的具体位置,即坐标。pygame 中的 坐标系原点在左上角,水平方向为 x 轴,垂直方向为 y 轴。在 pygame 中,使用图像的最简单方法是调用 image 函数。通过pygame.image.load(filename)来载入图片,filename 表 示图像文件的路径和名称。图像文件必须和程序在同一文件夹下才可以使用相对路径的引用方式。例子例子以下是一个样例程序。import pygame#导入模块pygame.init()#pygame 模块初始化#创建一个窗口 screen,大小为 800*600screen=pygame.display.set.mode(800,600)pygame.display.set caption(实例)#设置屏幕标题screen.fill(144,238,144)#窗口填充淡绿色img=pygame.image.load(ball.png)#载入 ball.png 图像到内存#将图像绘制在 screen 中,图像的左上角在200,200screen.blit(img,200,200)pygame.display.update()#窗口刷新运行结果如图 4.4.4 所示。你学会创建窗口了吗?仿照上面的代码尝试创建“接福”程序窗口,并设置图片作为背景。请注意图片文件路径的描述,思考背景图片应该在什么位置显示,有了背景图片窗口是否还要填充颜色等。画完以后一定记得利用 update 更新一下,否则画面会一片漆黑。操作实践操作实践#创建一个窗口 screen,大小为 800*600screen=#设置窗口标题为“接福”back=(bj.jpg)#加载背景图screen.blit(,0,0)#将背景图画在窗口0,0位置#刷新画面测试代码,可得到一个带有背景图的窗口。2.绘制福字。在屏幕上出现福字同样可以使用以上在屏幕上绘制图像的方法。为了便于游戏循环中反复调用,可以定义成一个函数 showfu,在绘制福字时,需要设置图像显示的位置,因此 showfu中有两个参数,分别表示图像位置的横坐标和纵坐标。def showfu(x,y):#定义函数,在坐标(x,y)上显示图像gift=pygame.image.load(fu.png )#加载福字图像screen.blit(gift,x,y)#显示福字在实际使用中,只要提供一对坐标值,就可以调用 showfu 了。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)#在窗口显示仔细阅读代码并理解各语句的含义。在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.de1ay(800)#设置两次显示福字之间的延时活动活动 2 人机交互及程序拼装人机交互及程序拼装在本项目中,人机交互主要体现在鼠标单击上。需要获取按键的情况,就要在監听事件中增加相应的判断语句。打开教科书配套资源中的“接福.py”,找到相应的代码,仔细阅读并理解各语句的含义,在下面横线上用自然语言描述其对应的功能。if event.type=pygame.MOUSEBUT TONDOWN:#_#获取鼠标按下的坐标并记录在 mousex,mousey 中mousex,mousey=pygame.mouse.get.pos()#判断鼠标是否击中福字,本例中福字宽为 60,高为 70if mousex in range(x,x+60)and mousey in range(y,y+7O):score=score+5最后,我们可以参照流程图组装各程序块并调试运行,也可以在 Python 中打开教科书配套资源中的“接福.py”并运行。虽然游戏项目已开发完成,但这款游戏还有不尽如人意的地方,如游戏难度无法调整等,请在下面的框中填写你对游戏的改进意见。拓展训练拓展训练尝试给尝试给“接福接福”游戏设计一个难度策略以增加游戏的趣味性。游戏设计一个难度策略以增加游戏的趣味性。参考答案:难度策略:分数越高,福字出现的速度越快,即:延时的时间减少。import pygame,sys,random#导入模块pygame.init()#初始化def showfu(x,y):#定义函数,在(x,y)位置显示福字 gift=pygame.image.load(fu.png)#加载福字图像 screen.blit(gift,x,y)#将福字显示在(x,y)位置上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)#在窗口显示#主程序开始 score=0#变量初始化mousex=0mousey=0t=800#延时的时间初识为 800screen=pygame.display.set_mode(800,600)#创建一个窗口pygame.display.set_caption(接福)#设置窗口标题back=pygame.image.load(bj.jpg)#加载背景图像screen.blit(back,0,0)#将背景图显示在窗口showscore(score)#显示分数x=random.randint(50,700)#随机生成福字水平方向坐标y=random.randint(50,500)#随机生成福字垂直方向坐标showfu(x,y)#在(x,y)位置显示福字pygame.display.update()#刷新窗口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#加分 t=abs(800-5*score)#分数越高,延时的时间越短,难度调整的策略 screen.blit(back,0,0)#将背景图显示在窗口 showscore(score)#显示分数 x=random.randint(50,700)#随机生成福字水平方向坐标 y=random.randint(50,500)#随机生成福字垂直方向坐标 showfu(x,y)#在(x,y)位置显示福字 pygame.display.update()#刷新窗口 pygame.time.delay(t)#延时2、有 N 根小棒(N 是偶数),每根小棒长 1 厘米,要将这些小棒拼成矩形,怎样拼才能使其面积最大?请编程实现,输出最大面积。例如:N=10,有以下两种拼法,面积分别是 4 平方厘米和 6 平方厘米,按第 2 种拼法拼得的矩形面积最大。参考代码:n=int(input(请输入小棒的数量:)max=0if n%2=0:for i in range(1,n):s=i*(n/2-i)if smax:max=s print(最大面积是:,max)else:print(请输入偶数!)3 选择3 选择1.以下关于算法中输入、输出的描述正确的是()。A.算法可以没有输入,表示该算法不涉及任何数据信息B.算法可以没有输出,表示该算法运行结果为“无解”C.算法必须要有输入,否则算法无法进行D.算法至少要有一个输出2.采用盲目搜索的方法,在搜索的过程中,对所得的结果逐一筛选,排除不符合要求的结果,保留那些符合要求的结果,这种方法叫做()。A.解析法 B.递推法 C.枚举法 D.选择法3.在软件的生命周期中,明确软件系统具备哪些功能的阶段是()。A.可行性分析 B.需求分析 C.概要设计 D.详细设计参考答案:1.D 2.C 3.B教学反思教学反思
展开阅读全文
相关搜索
资源标签