1、 教学目标:教学目标: 1.学会分析任务,描述需求分析,知道需要解决的 关键问题 2.了解面向对象的编程思想 3.体验软件开发的基本流程 教学重点教学重点 熟悉应用程序开发流程、pygame模块的使用 教学难点教学难点 理解、使用函数实现功能模块 接福游戏:打开接福程序,实现通过单击鼠标,去接屏幕 上不断出现的福字,并根据成功接到福字的次数记录分值。 确定软件系统的功能。通俗地讲就是确定需要计算机做什 么,想达到什么样的效果,只有确定了这些需求后,才能 够分析和寻求系统的解决方法。 综合考虑这款游戏: 需要导入的模块有pygame、random、sys。其中, pygame模块提供了图像、声音
2、等函数;random模块用 于产生随机数;sys模块包含了跟Python环境相关的函数。 它是一个专门用来开发游戏的模块,可以包含图像、声音 等。它的相关内容主要有: 模块模块功能功能 Pygame.display访问显示设备 Pygame.event管理事件 Pygame.font使用字体 Pygame.image加载和存储图片 import pygame #导入模块 pygame.init() #pygame模块初始化 #创建一个窗口screen,大小为800*600 screen=pygame.display.set_mode(800,600) screen.fill(255,255,0
3、) #窗口填充黄色* pygame.display.update() #窗口刷新 用下面两条语句替换(2)代码段中带“*”号的语句 back=pygame.image.load(bj.jpg) #加载背景图像 screen.blit(back,0,0) #将背景图画在窗口 通常情况下,游戏的基本结构如图所示: 游戏状态可以理解为程序中的变量。随着鼠标单击,游游戏状态可以理解为程序中的变量。随着鼠标单击,游 戏中的分数需要更新,这些状态随着鼠标单击或键盘输戏中的分数需要更新,这些状态随着鼠标单击或键盘输 入等事件的发生而改变。入等事件的发生而改变。 随着游戏状态更新或游戏场景变化,屏幕上显示的内
4、容也 会相应地发生改变。 本案例中,实际上就是显示不同位置的福字,要达到这个 效果,需要完成以下步骤: 1、在新的位置上画出图像。 2、把原来的图像擦掉,可采用重绘背景覆盖的方法。 x=random.randint(50,700) #随机生成福字水平方向 坐标 y=random.randint(50,500) #随机生成福字垂直方向 坐标 showfu(x,y)#在(x,y)位置显示福字 pygame.display.update() #刷新窗口 3、Pygame自带了一个监听类循环,不断检查用户的操 作,这个循环在程序运行过程期间持续工作。 while True: for event in
5、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 mo
6、usey in range(y,y+70): score=score+5 #加分加分 以下是本游戏中要用到的程序功能块,包括游戏环境设置、 绘制图像、设置初始值等。 由创建界面绘制福字显示得分等功能块,程序 代码下发给学生。 学生分组研讨并调试学生分组研讨并调试运行运行 人机交互主要体现在鼠标上,需要获取按键的情况,就要 在监听事件中增加相应的判断语句。 代码如下: while True: for event in pygame.event.get(): #侦听并获取事件列表 if event.type=pygame.QUIT: #接收到退出事件后退出程 序 #鼠标单击事件 if event.
7、type=pygame.MOUSEBUTTONDOWN: #获取鼠标按下的坐标并记录在mousex,mousey中 mousex,mousey=pygame.mouse.get_pos() #判断鼠标是否击中 if mousex in range(x,x+60) and mousey in range(y,y+70): import pygame pygame.init() screen=pygame.display.set_mode(600,400) screen.fill(144,238,144) img=pygame.image.load(ball.png) screen.blit(img,200,200) pygame.display.update() input(运行完毕,请按回车键退出.) 运运 行行 结结 果果