您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 酒店餐饮 > 4.4-综合问题的解决
4.4综合问题的解决淄博市博山区实验中学电教中心制作学习目标在解决一个综合问题时,我们通常先考虑总体,后考虑细节;先面向整体,再细化局部。面对软件开发这类综合问题时,需要立足对象间的相互联系,强调便捷的人机交互模式,尽量向需求靠拢。★学会分析任务,描述需求分析,知道需要解决的关键问题。★体验软件开发的基本流程。任务一基于需求,分解任务春节是我国一个古老的节日,也是全年最重要的节日。“迎福”“纳福”是迎新春必不可少的传统项目。有道是:“大福小福全家福,有福享福处处福。知福来福有祝福,清福洪福添幸福。接福纳福年年福,守福祈福岁岁福!”本节我们将围绕“‘接福’游戏”项目,创设游戏情境,实现通过单击鼠标,去接屏幕上不断出现的福字,并根据成功接到福字的次数记录分值。本项目主要包含“基于需求,分解任务”和“组装程序,测试运行”两个任务。“接福”游戏界面如图所示。打开教科书配套资源中的“接福.py”程序并运行,单击屏幕上不断出现的福字,观察屏幕变化。在下框中写出这款游戏的功能。※活动1了解需求,分析问题综合考虑游戏功能,需要导入的模块有pygame、random、sys。其中,pygame模块提供了图像、声音等函数;random模块用于产生随机数;sys模块包含了跟Python环境相关的函数。需求分析是软件工程中的一个关键过程。需求分析阶段的任务是确定软件系统的功能。通俗地说,就是确定需要计算机“做什么”,想达到什么样的效果。只有在确定了这些需求后,才能够分析和寻求系统的解决方法。pygame模块pygame是一个专门用来开发游戏的模块,可以包含图像、声音等。本项目中涉及的pygame相关内容如表4.4.1所示。※活动2分解任务,设计流程本项目中设计的重点和难点是人机交互,即如何实时获得鼠标的状态并对鼠标单击做出正确的响应。也就是不断地进行监听、更新游戏状态、重绘屏幕三个步骤的操作。通常情况下,游戏的基本结构如图4.4.2所示。其中的事件主要指鼠标事件、键盘事件等。游戏状态可以理解为程序中的变量值。随着鼠标单击,游戏中的分数需要更新,还有诸如游戏中人物的生命值、怪物数量等,这些状态经常随着鼠标单击或键盘输入等事件的发生而改变。随着游戏状态更新或游戏场景变化,屏幕上显示的内容也会相应地发生改变。本游戏中福字在窗口随机出现,实际上就是显示不同位置的福字。要达到这个效果,需要完成两个步骤:(1)在新的位置上画出图像;(2)把原来的图像擦掉。计算机图像可不是铅笔画,用橡皮擦就能擦掉。要“擦掉”某个图像,可以选择“覆盖”它,通常采用重绘背景或者用其他对象来覆盖的方式。在该游戏中,我们通过重绘背景来覆盖前一个福字。最后一个问题是,如何实现这种监听?pygamepygame是专为游戏设计的,自带了一个监听类循环,不断检查用户的操作,比如用户按键、移动鼠标或者关闭窗口等。这个循环会在程序运行期间持续工作。其代码框架如下。看来要获取按键的情况,只要在监听事件中增加相应的判断语句就可以了。以下是本游戏中要用到的程序功能块,包括游戏环境设置、绘制图像、设置初始值等。请将主程序的各功能语句放到合适的位置,完善图4.4.3所示的程序流程图。任务二组装程序,测试运行需求分析之后、程序设计之前,需要对系统进行总体设计和详细设计。总体设计就是在需求分析的基础上对模型细化、分解任务,明确程序由哪些模块组成。概括地说,就是系统应该如何实现。详细设计主要指界面设计、过程设计等。※活动1界面设计1.创建程序窗口,设置背景。调用pygame.display.setmode()函数,将返回一个窗口。如果想在窗口上绘制或是放置对象,需要指定这个对象在窗口的具体位置,即坐标。pygame中的坐标系原点在左上角,水平方向为x轴,垂直方向为y轴。在pygame中,使用图像的最简单方法是调用image函数。通过pygame.image.load(filename)来载入图片,filename表示图像文件的路径和名称。图像文件必须和程序在同一文件夹下才可以使用相对路径的引用方式。样例程序importpygame#导入模块pygame.init()#pygame模块初始化#创建一一个窗口screen,大小为800*600screen=pygame.display.set_mode([800,600])pygame.display.set_caption('实例')#设置屏幕标题screen.fill((144,238,144))#窗口填充淡绿色#载入ball.png图像到内存img=pygame.image.load('ball.png')#将图像绘制在screen中,图像的左上角在[200,200]screen.blit(img,[200,200])#将图画在窗口显示pygame.display.update()#窗口刷新input(运行完毕,请按回车键退出...)你学会创建窗口了吗?仿照上面的代码尝试创建“接福”程序窗口,并设置图片作为背景。请注意图片文件路径的描述,思考背景图片应该在什么位置显示,有了背景图片窗口是否还要填充颜色等。画完以后一定记得利用update更新一下,否则画面会一片漆黑。screen=pygame.display.set_mode([800,600])#创建一个窗口pygame.display.set_caption('接福')#设置窗口标题back=pygame.image.load('bj.jpg')#加载背景图像screen.blit(back,[0,0])#将背景图显示在窗口pygame.display.update()#刷新窗口测试代码,可得到一个带有背景图的窗口。2.绘制福字在屏幕上出现福字同样可以使用以上在屏幕上绘制图像的方法。为了便于游戏循环中反复调用,可以定义成一个函数showfu,在绘制福字时,需要设置图像显示的位置,因此showfu中有两个参数,分别表示图像位置的横坐标和纵坐标。defshowfu(x,y):#定义函数,在坐标(x,y)上显示图像gift=pygame.image.load('fu.png')#加载福字图像screen.blit(gift,[x,y])#显示福字在实际使用中,只要提供一对坐标值,就可以调用showfu了。3.显示得分显示游戏得分的方法为:先定义显示字体,然后将score显示出来。为了增加代码的复用性,以便游戏循环中状态更新时反复调用,可以定义成一个函数showscore。defshowscore(score):#定义函数,显示分数textfont=pygame.font.SysFont('Arial',30)#字体为Arial,大小30t=textfont.render('score:'+str(score),True,(255,0,0))#生成平滑的红色字符串screen.blit(t,[50,50])#在窗口显示仔细阅读代码并理解各语句的含义。render返回页面内容在pygame的游戏循环中,我们通过调用以下语句来完成游戏状态的更新和屏幕的重绘,请在横线上注明各语句的功能。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(800)#设置两次显示福字之间的延时randint(x,y).参数x和y代表生成随机数的区间范围※活动2人机交互及程序拼装在本项目中,人机交互主要体现在鼠标单击上。需要获取按键的情况,就要在监听事件中增加相应的判断语句。ifevent.type==pygame.MOUSEBUTTONDOWN:#侦听到鼠标点击事件#获取鼠标按下的坐标并记录在mousex,mousey中mousex,mousey=pygame.mouse.get_pos()#判断鼠标是否击中福字,本例福字宽为60,高为70ifmousexinrange(x,x+60)andmouseyinrange(y,y+70):score=score+5#加分最后,我们可以参照流程图组装各程序块并调试运行,也可以在Python中打开教科书配套资源中的“接福.py”并运行。虽然游戏项目已开发完成,但这款游戏还有不尽如人意的地方,如游戏难度无法调整等,请在下面的框中填写你对游戏的改进意见。type事件属性返回发生的事件的类型,即当前Event对象表示的事件的名称人机交互方式1.触摸式交互触摸交互目前应用非常广泛,随着触摸屏手机、触摸屏电脑、触摸屏相机、触摸屏电子广告牌等等触摸屏发明创新的广泛应用与发展,触摸屏与人们的距离越来越近,真的是到了可以“触摸”的程度。而触摸屏,由于其便捷、简单、自然、节省空间、反应速度快等优点,而被人们广泛接受,成为了时下最便捷的人机交互方式来源。2、语音识别语音识别技术,也被称为自动语音识别AutomaTIcSpeechRecogniTIon,(ASR),其目标是将人类的语音中的词汇内容转换为计算机可读的输入,例如按键、二进制编码或者字符序列。不可否认,语音识别是未来人机交互最被看好的的交互方式。尤其是针对当下的各种可穿戴式智能设备,通过对话的方式发出命令产生交互是最高效可行的。3、体感技术体感技术也可称之为动作识别,亦称作手势识别技术。一提到体感技术,很多人都会觉得未来感十足,像是科幻电影里的情节再现。但这一概念在游戏领域早有涉及,全球三大游戏厂商均推出过自己的体感控制器,如微软和索尼推出的体感辅助设备Kinect和PSMove,任天堂的Wii则一直是以体感进行控制的游戏机。4、增强现实增强现实(AugmentedReality,简称AR),简单的说,就是将计算机生成的信息覆盖在现实世界之上。是在虚拟现实的基础上发展起来的新技术,也被称之为混合现实。是通过计算机系统提供的信息增加用户对现实世界感知的技术,将虚拟的信息应用到真实世界,并将计算机生成的虚拟物体、场景或系统提示信息叠加到真实场景中,从而实现对现实的增强。本节课到此结束,谢谢大家!淄博市博山区实验中学电教中心制作
本文标题:4.4-综合问题的解决
链接地址:https://www.777doc.com/doc-7031210 .html