资源简介 (共22张PPT)e7d195523061f1c0c2b73831c94a3edc981f60e396d3e182073EE1468018468A7F192AE5E5CD515B6C3125F8AF6E4EE646174E8CF0B46FD19828DCE8CDA3B3A044A74F0E769C5FA8CB87AB6FC303C8BA3785FAC64AF5424764E128FECAE4CC72BD54E486F2F2A60F51B8A1D54097D49F626B96969F5CCE921267A92A2F22AC8A839D5EE3DCAA21587D0441DCE9CD82764.4 综合问题的解决四、计算与问题解决e7d195523061f1c0c2b73831c94a3edc981f60e396d3e182073EE1468018468A7F192AE5E5CD515B6C3125F8AF6E4EE646174E8CF0B46FD19828DCE8CDA3B3A044A74F0E769C5FA8CB87AB6FC303C8BA3785FAC64AF5424764E128FECAE4CC72BD54E486F2F2A60F51B8A1D54097D49F626B96969F5CCE921267A92A2F22AC8A839D5EE3DCAA21587D0441DCE9CD8276学习目标★学会分析任务, 描述需求分析, 知道需要解决的关键问题。 ★体验软件开发的基本流程。e7d195523061f1c0c2b73831c94a3edc981f60e396d3e182073EE1468018468A7F192AE5E5CD515B6C3125F8AF6E4EE646174E8CF0B46FD19828DCE8CDA3B3A044A74F0E769C5FA8CB87AB6FC303C8BA3785FAC64AF5424764E128FECAE4CC72BD54E486F2F2A60F51B8A1D54097D49F626B96969F5CCE921267A92A2F22AC8A839D5EE3DCAA21587D0441DCE9CD8276e7d195523061f1c0c2b73831c94a3edc981f60e396d3e182073EE1468018468A7F192AE5E5CD515B6C3125F8AF6E4EE646174E8CF0B46FD19828DCE8CDA3B3A044A74F0E769C5FA8CB87AB6FC303C8BA3785FAC64AF5424764E128FECAE4CC72BD54E486F2F2A60F51B8A1D54097D49F626B96969F5CCE921267A92A2F22AC8A839D5EE3DCAA21587D0441DCE9CD8276“迎福”“纳福” 是迎新春必不可少的传统项目。有道是:“ 大福小福全家福, 有福享福处处福。知福来福有祝福,清福洪福添幸福。接福纳福年年福,守福祈福岁岁福!”本节我们将围绕“ ‘接了个福’游戏”项目, 创设游戏情境,实现通过单击鼠标,去接屏幕上不断出现的福字, 并根据成功接到福字的次数记录分值。“接了个福”游戏导入e7d195523061f1c0c2b73831c94a3edc981f60e396d3e182073EE1468018468A7F192AE5E5CD515B6C3125F8AF6E4EE646174E8CF0B46FD19828DCE8CDA3B3A044A74F0E769C5FA8CB87AB6FC303C8BA3785FAC64AF5424764E128FECAE4CC72BD54E486F2F2A60F51B8A1D54097D49F626B96969F5CCE921267A92A2F22AC8A839D5EE3DCAA21587D0441DCE9CD8276打开教科书配套资源中的“接福.Py”程序并运行,单击屏幕上不断出现的福字,观察屏幕变化。 在下框中写出这款游戏的功能。“接了个福”游戏描述鼠标点击随机出现的“福”字,点击到“福”字则加五分,否则不得分。需求分析是软件工程中的一个关键过程。需求分析阶段的任务是确定软件系统的功能。通俗地说,就是确定需要计算机“做什么”,想达到什么样的效果。只有在确定了这些需求后,才能够分析和寻求系统的解决方法活动1 了解需求,分析问题e7d195523061f1c0c2b73831c94a3edc981f60e396d3e182073EE1468018468A7F192AE5E5CD515B6C3125F8AF6E4EE646174E8CF0B46FD19828DCE8CDA3B3A044A74F0E769C5FA8CB87AB6FC303C8BA3785FAC64AF5424764E128FECAE4CC72BD54E486F2F2A60F51B8A1D54097D49F626B96969F5CCE921267A92A2F22AC8A839D5EE3DCAA21587D0441DCE9CD8276分析要用什么模块pygame是一个专门用来开发游戏的模块,可以包含图像、声音等。模块 功能pygame.display 访问显示设备pygame.event 管理事件pygame.font 使用字体pygame.image 加载和存储图片综合考虑游戏功能,需要导入的模块有pygame、random、sys。其中random模块用于产生随机数;sys模块包含了跟Python环境相关的函数。e7d195523061f1c0c2b73831c94a3edc981f60e396d3e182073EE1468018468A7F192AE5E5CD515B6C3125F8AF6E4EE646174E8CF0B46FD19828DCE8CDA3B3A044A74F0E769C5FA8CB87AB6FC303C8BA3785FAC64AF5424764E128FECAE4CC72BD54E486F2F2A60F51B8A1D54097D49F626B96969F5CCE921267A92A2F22AC8A839D5EE3DCAA21587D0441DCE9CD8276活动二 分解任务,设计流程本项目中设计的重点和难点是人机交互,即如何实时获取鼠标的状态并对鼠标单击做出正确的响应。也就是不断地进行监听、更新游戏状态、重绘屏幕三个步骤的操作。游戏循环监听事件更新游戏状态重绘屏幕游戏状态可理解为程序中的变量值。通常随事件的发生而改变,例如鼠标单击、键盘输入或时间的流逝等。1.在新的位置上画出 图像。2.把原来的图像擦掉(覆盖)如何实现监听?e7d195523061f1c0c2b73831c94a3edc981f60e396d3e182073EE1468018468A7F192AE5E5CD515B6C3125F8AF6E4EE646174E8CF0B46FD19828DCE8CDA3B3A044A74F0E769C5FA8CB87AB6FC303C8BA3785FAC64AF5424764E128FECAE4CC72BD54E486F2F2A60F51B8A1D54097D49F626B96969F5CCE921267A92A2F22AC8A839D5EE3DCAA21587D0441DCE9CD8276自带了一个监听类循环:不断检查用户的操作, 比如用户按键、移动鼠标或者关闭窗口等。这个循环会在程序运行期间持续工作。其代码框架如下:while True: #循环会在程序运行期间持续for event in pygame.event.get(): #监听所有事件, 获取事件列表if event.type==pygame.QUIT: # Quit事件sys.exit() #退出程序if event.type==pygame.MOUSEBUTTONDOWN: #鼠标单击事件……在python 中,True (真)、False(假)的第一个字符要大写。监听事件——Pygamee7d195523061f1c0c2b73831c94a3edc981f60e396d3e182073EE1468018468A7F192AE5E5CD515B6C3125F8AF6E4EE646174E8CF0B46FD19828DCE8CDA3B3A044A74F0E769C5FA8CB87AB6FC303C8BA3785FAC64AF5424764E128FECAE4CC72BD54E486F2F2A60F51B8A1D54097D49F626B96969F5CCE921267A92A2F22AC8A839D5EE3DCAA21587D0441DCE9CD8276任务二:程序组装,测试运行e7d195523061f1c0c2b73831c94a3edc981f60e396d3e182073EE1468018468A7F192AE5E5CD515B6C3125F8AF6E4EE646174E8CF0B46FD19828DCE8CDA3B3A044A74F0E769C5FA8CB87AB6FC303C8BA3785FAC64AF5424764E128FECAE4CC72BD54E486F2F2A60F51B8A1D54097D49F626B96969F5CCE921267A92A2F22AC8A839D5EE3DCAA21587D0441DCE9CD8276程序流程程序运行接到福字是是否②④①⑤③主程序开始主程序结束①监听事件获取鼠标单击位置②游戏环境设置③重新绘制背景及图像④设置初始值并绘制图像⑤加分请将主程序的各功能语句放到合适的位置,完善程序流程图。e7d195523061f1c0c2b73831c94a3edc981f60e396d3e182073EE1468018468A7F192AE5E5CD515B6C3125F8AF6E4EE646174E8CF0B46FD19828DCE8CDA3B3A044A74F0E769C5FA8CB87AB6FC303C8BA3785FAC64AF5424764E128FECAE4CC72BD54E486F2F2A60F51B8A1D54097D49F626B96969F5CCE921267A92A2F22AC8A839D5EE3DCAA21587D0441DCE9CD8276任务二 组装程序,测试运行1.创建程序窗口, 设置背景。调用pygame.display.set_mode()函数,将返回一个窗口。pygame中的坐标系原点在左上角,水平方向为x轴,垂直方向为y轴。xy0※ 活动1 界面设计通过pygame.image.load(filename)来载入图片,filename表示图像文件的路径和名称。图像文件必须和程序在同一文件夹下才可以使用相对路径的引用方式。e7d195523061f1c0c2b73831c94a3edc981f60e396d3e182073EE1468018468A7F192AE5E5CD515B6C3125F8AF6E4EE646174E8CF0B46FD19828DCE8CDA3B3A044A74F0E769C5FA8CB87AB6FC303C8BA3785FAC64AF5424764E128FECAE4CC72BD54E486F2F2A60F51B8A1D54097D49F626B96969F5CCE921267A92A2F22AC8A839D5EE3DCAA21587D0441DCE9CD8276import pygame #导入模块pygame.init() #pygame模块初始化screen=pygame.display.set_mode([800,600]) #创建一个窗口screen,大小为800*600pygame.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() #窗口刷新※ 创建足球游戏窗口实例e7d195523061f1c0c2b73831c94a3edc981f60e396d3e182073EE1468018468A7F192AE5E5CD515B6C3125F8AF6E4EE646174E8CF0B46FD19828DCE8CDA3B3A044A74F0E769C5FA8CB87AB6FC303C8BA3785FAC64AF5424764E128FECAE4CC72BD54E486F2F2A60F51B8A1D54097D49F626B96969F5CCE921267A92A2F22AC8A839D5EE3DCAA21587D0441DCE9CD82761、创建窗口screen=___________________————————————— #设置窗口标题为“接了个福”back=__ ____________('bj.jpg’) #加载背景图screen.blit(____________,[0,0]) #将背景图画在窗口[0, 0]位置_________________________ #刷新画面※分析完成“接了个福”游戏的界面设计pygame.display.set_mode([800,600])pygame.display.set_caption('接了个福')pygame.image.loadbackpygame.display.update()2、绘制福字为了便于游戏循环中反复调用,可以定义成一个函数showfu,在绘制福字时,需要设置图像显示的位置,因此showfu中有两个参数,分别表示图像位置的横坐标和纵坐标。def showfu(x,y): #定义函数,在坐标(x,y)上显示图像gift=pygame.image.load('fu.png') #加载福字图像screen.blit(gift,[x,y]) #显示福字在实际使用中,只要提供一对坐标值,就可以调用showfu了。e7d195523061f1c0c2b73831c94a3edc981f60e396d3e182073EE1468018468A7F192AE5E5CD515B6C3125F8AF6E4EE646174E8CF0B46FD19828DCE8CDA3B3A044A74F0E769C5FA8CB87AB6FC303C8BA3785FAC64AF5424764E128FECAE4CC72BD54E486F2F2A60F51B8A1D54097D49F626B96969F5CCE921267A92A2F22AC8A839D5EE3DCAA21587D0441DCE9CD82763、显示得分。方法为:先定义显示字体,然后将score显示出来。为了增加代码的复用性,以便游戏循环中状态更新时反复调用,可以定义成一个函数showscore。def showscore(score): #定义函数,显示分数textfont=pygame.font.SysFont('Arial',30) #字体为Arial,大小30t=textfont.render('score:'+str(score),True, (255,0,0)) #生成平滑的红色字符串screen.blit(t,[50,50]) #在窗口显示e7d195523061f1c0c2b73831c94a3edc981f60e396d3e182073EE1468018468A7F192AE5E5CD515B6C3125F8AF6E4EE646174E8CF0B46FD19828DCE8CDA3B3A044A74F0E769C5FA8CB87AB6FC303C8BA3785FAC64AF5424764E128FECAE4CC72BD54E486F2F2A60F51B8A1D54097D49F626B96969F5CCE921267A92A2F22AC8A839D5EE3DCAA21587D0441DCE9CD8276在本项目中,人机交互主要体现在鼠标单击上。 需要获取按键的情况,就要在监听事件中增加相应的判断语句。if event.type==pygame.MOUSEBUTTONDOWN: # __________________#获取鼠标按下的坐标并记录在mousex,mousey中mousex,mousey=pygame.mouse.get_pos()#判断鼠标是否击中福字,本例中福字宽为60,高为70if mousex in range(x,x+60) and mousey in range(y,y+70):score=score+5 #___________________侦听到鼠标点击事件加分4、判断鼠标是否接到福字e7d195523061f1c0c2b73831c94a3edc981f60e396d3e182073EE1468018468A7F192AE5E5CD515B6C3125F8AF6E4EE646174E8CF0B46FD19828DCE8CDA3B3A044A74F0E769C5FA8CB87AB6FC303C8BA3785FAC64AF5424764E128FECAE4CC72BD54E486F2F2A60F51B8A1D54097D49F626B96969F5CCE921267A92A2F22AC8A839D5EE3DCAA21587D0441DCE9CD82765、游戏状态的更新和屏幕的重绘在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) #设置两次显示福字之间的延时将背景图显示在窗口显示分数随机生成福字水平方向坐标随机生成福字垂直方向坐标在(x,y)位置显示福字刷新窗口e7d195523061f1c0c2b73831c94a3edc981f60e396d3e182073EE1468018468A7F192AE5E5CD515B6C3125F8AF6E4EE646174E8CF0B46FD19828DCE8CDA3B3A044A74F0E769C5FA8CB87AB6FC303C8BA3785FAC64AF5424764E128FECAE4CC72BD54E486F2F2A60F51B8A1D54097D49F626B96969F5CCE921267A92A2F22AC8A839D5EE3DCAA21587D0441DCE9CD8276课堂小结综合问题的解决pygame是一个专门用来开发游戏的模块,可以包含图像、声音等。解决问题的方法与步骤pygame.display访问显示设备pygame.event 管理事件pygame.font 使用字体pyg ame.miage 加栽和存储图片分析问题设计算法(流程图)编写代码调试运行e7d195523061f1c0c2b73831c94a3edc981f60e396d3e182073EE1468018468A7F192AE5E5CD515B6C3125F8AF6E4EE646174E8CF0B46FD19828DCE8CDA3B3A044A74F0E769C5FA8CB87AB6FC303C8BA3785FAC64AF5424764E128FECAE4CC72BD54E486F2F2A60F51B8A1D54097D49F626B96969F5CCE921267A92A2F22AC8A839D5EE3DCAA21587D0441DCE9CD8276e7d195523061f1c0c2b73831c94a3edc981f60e396d3e182073EE1468018468A7F192AE5E5CD515B6C3125F8AF6E4EE646174E8CF0B46FD19828DCE8CDA3B3A044A74F0E769C5FA8CB87AB6FC303C8BA3785FAC64AF5424764E128FECAE4CC72BD54E486F2F2A60F51B8A1D54097D49F626B96969F5CCE921267A92A2F22AC8A839D5EE3DCAA21587D0441DCE9CD8276e7d195523061f1c0c2b73831c94a3edc981f60e396d3e182073EE1468018468A7F192AE5E5CD515B6C3125F8AF6E4EE646174E8CF0B46FD19828DCE8CDA3B3A044A74F0E769C5FA8CB87AB6FC303C8BA3785FAC64AF5424764E128FECAE4CC72BD54E486F2F2A60F51B8A1D54097D49F626B96969F5CCE921267A92A2F22AC8A839D5EE3DCAA21587D0441DCE9CD8276e7d195523061f1c0c2b73831c94a3edc981f60e396d3e182073EE1468018468A7F192AE5E5CD515B6C3125F8AF6E4EE646174E8CF0B46FD19828DCE8CDA3B3A044A74F0E769C5FA8CB87AB6FC303C8BA3785FAC64AF5424764E128FECAE4CC72BD54E486F2F2A60F51B8A1D54097D49F626B96969F5CCE921267A92A2F22AC8A839D5EE3DCAA21587D0441DCE9CD8276惊艳你的世界The future is coming and The future is comingTHANKSTHANKSe7d195523061f1c0c2b73831c94a3edc981f60e396d3e182073EE1468018468A7F192AE5E5CD515B6C3125F8AF6E4EE646174E8CF0B46FD19828DCE8CDA3B3A044A74F0E769C5FA8CB87AB6FC303C8BA3785FAC64AF5424764E128FECAE4CC72BD54E486F2F2A60F51B8A1D54097D49F626B96969F5CCE921267A92A2F22AC8A839D5EE3DCAA21587D0441DCE9CD8276 展开更多...... 收起↑ 资源预览