师:同学们,大家好。今天我们接着上一节课来学习综合问题的解决。第二课时,我们先来看学习目标。第一,学会分析任务描述、需求分析,明确需要解决的关键问题。第二,体验软件开发的基本流程。上一节课我们学习了Python的游戏开发模块Pygame,同学们想不想用它来开发一个完整的游戏程序呢?

  请看屏幕左边,这是我们熟悉的打地鼠游戏。今天我们要做的接福游戏和它类似,学会接福游戏,打地鼠游戏也就能做出来了。下面请看接福游戏的演示,请同学们一边看,一边思考接福游戏有什么功能。

  我们一起来运行一下这个接福游戏。把背景图片和福字图片跟接福游戏的Python程序放在一起,然后用Python的IDLE打开它。点击“file”,选择“open”,找到放在桌面的Python程序打开,再选择“run model”,接福游戏就启动了。我们可以看到,它的界面大小大概是800×600,初始化“score”为0,标题为“接福”。福字大概800毫秒出现一次,点击福字,点中时分数加5分。游戏就是这样,关闭它,游戏就关闭了。

  同学们,这个游戏的功能你们分析好了吗?现在我们一起来看看它的功能。主要有四个:第一个,有背景图片,能看到鞭炮、春字、葫芦。窗口大小是800×600,左上角有标题“接福”;第二个,福字会在窗口随机位置不断闪现,左上角有“score”,初始分数为0;第三个,用鼠标击中福字,“score”会加5分,福字在屏幕中间随机位置出现;第四个,重新绘制背景以及新的福字图像。

  下面我们总结一下这些功能。首先,背景图片、窗口标题等属于游戏的环境设置;其次,福字随机出现、初始分数为0,可总结为绘制初始图像,并设置初始值;再次,鼠标击中福字加分,这属于人机交互系统,它会不断监听鼠标位置,判断是否接到福字,接到就加分;最后,更新游戏状态,重绘背景,以便开始新一轮人机交互。这个游戏的重难点在于人机交互,它是怎么实现交互的呢?其实是用一个循环,借助PYG库来实现的。

  我们看看这个循环。首先,监听事件系统会不断监听窗口是否关闭、鼠标单击位置。然后根据监听到的事件,对游戏进行更新、关闭窗口或者增加分数。更新完成后,重绘背景,重新显现福字,让游戏继续循环。我们再来看一个重点,系统是怎么监听窗口是否关闭、鼠标位置的呢?原来用了PYK库,这个库专门为游戏设计,自带一个鉴定类的循环,会不断检查用户操作,比如用户是否按键、鼠标是否移动及位置、是否点击关闭窗口等。这个循环在程序运行期间持续工作,直到关闭窗口才会退出。

  再来看另一个重点,福字怎么重新出现呢?系统中并没有像平常橡皮擦那样擦掉的功能,而是通过一个巧妙方法,用背景把旧福字覆盖掉,然后在新背景上画新福字。具体过程是这样的:首先出现旧福字,分两步,第一步用随机函数产生福字的随机坐标x、y,然后在这个随机坐标中出现福字,这样就出现了旧福字。接着重绘背景,用背景图把福字盖住,就看不到旧福字了。然后在新背景中,同样用随机函数产生坐标,在新坐标中出现新福字。

  同学们,我们一起来看完整的游戏程序。请翻开书本110页,把右边的功能语块放到左边的流程图中。都做好了吗?我们一起来对答案。首先,程序开始先进行游戏环境设置,设置窗口大小、标题。然后设置初始值并绘制图像,也就是把“score”置为0,并绘制出旧福字。接着进入一个循环,这个循环在程序运行期间一直运行,直到关闭窗口才退出。

  我们看看程序中都做了什么。首先,系统用Pygay不断监听事件,监听到鼠标单击位置,如果单击位置在福字范围内,就认为接到福字,给“score”变量加5分,否则什么都不做。循环体的最后是重绘背景,绘制新福字,也就是重新换一个背景,把旧福字覆盖掉,再出现新福字。这样整个程序就不断运行,监听鼠标位置,判断是否接到福字,接到就加分,没接到就重新绘制新福字图像。

  下面我们用代码实现这些功能。先看第一个功能,创建程序窗口,设置背景标题,用4句话完成。这里有个“pygame.display”,“pygame.display”的“set_mode”是设置窗口的意思,设置窗口大小为800×600。设置完窗口后,同样是“pygame.display”,这次用“set_caption”显示标题。第三句,用“pygame.image.load”函数把图片加载进来,注意这里加载后没显示,而是放到变量“back”里。最后一句“screen.blit”把背景“back”显示出来,显示位置在左上角(0, 0)。第一个功能完成。

  请同学们再看第二个功能,在绘制的窗口随机位置出现福字。请大家花点时间把程序补充完整,并调试运行。都做好了吗?我们来对答案。这里有个“def”,表示系统定义了一个函数,函数名叫做“收服”,参数是x、y。函数里有两句话,第一句是“pygame.image.load”,这次加载的是福字图片,加载后放到变量“gift”里。第二句“screen.blit”把“gift”显示出来,也就是把福字显示在x、y坐标位置。这就是函数实现的功能——在x、y位置显示福字。

>> 点击阅读全文
《信息技术 必修1 4.4综合问题的解决(第二课时) 逐字稿-4,137字 第5版》.docx
将本文下载保存,方便收藏和打印
导出文档