4.4 综合问题的解决
学习目标
1.学会分析任务,描述需求分析,知道需要解决的关键问题
2.了解面向对象的编程思想
3.体验软件开发的基本流程
教学重点
熟悉应用程序开发流程、pygame模块的使用
教学难点
理解、使用函数实现功能模块
第一、二课时 Python中的动画
教学过程
教学内容
设计意图
导入
pygame模块介绍
pygame是一个专门用来开发游戏的模块,可以包含图像、声音等
基础知识准备
先有个窗口
(1)显示一个窗口
import pygame #导入模块
pygame.init() #pygame模块初始化
#创建一个窗口screen,大小为800*600
screen=pygame.display.set_mode([800,600])
(2)显示一个有背景色的窗口
在(1)代码段中增加以下语句:
screen.fill((144,238,144)) #窗口填充淡绿色*
pygame.display.update() #窗口刷新
(3)显示一个有背景图片的窗口
用下面两条语句替换(2)代码段中带“*”号的语句
back=pygame.image.load('bj.jpg') #加载背景图像
screen.blit(back,[0,0]) #将背景图画在窗口
从无到有,代码逐步增多,难度逐步推进,由简到难
在窗口中显示一张图像
在窗口中显示一只蝴蝶
在(3)的合适位置增加下列语句:
img=pygame.image.load('hudie.png') #载入hudie.png图像到内存
screen.blit(img,[200,200])# 将图像绘制在screen中,图像的左上角在[200,200]
加强练习与理解
让图像动起来
让蝴蝶在屏幕上连续运动起来
(1)屏幕动画原理及实现
for i in range(1,5):
screen.blit(img,[200+i*30,200+i*30]) #不断更改显示位置
pygame.display.update() #更新屏幕
pygame.time.delay(800) #设置两次显示蝴蝶之间的延时
实现对象的移动需要完成两个步骤:
①把原来的图像擦掉或覆盖
②在新的位置上画出图像
for i in range(1,5):
screen.blit(back,[0,0])
screen.blit(img,[200+i*30,200+i*30]) #不断更改显示位置
pygame.display.update() #更新屏幕
pygame.time.delay(800) #设置显示之间的延时
(2)让蝴蝶在屏幕随机位置不断闪现
如何更改(1)中的程序段,让蝴蝶能在随机位置出现?
screen.blit(img,[random.randint(50,700),random.randint(50,500)]) #随机显示
讲解原理,深入理解计算机动画原理
能力提升
pygame游戏循环
上述的运动次数是由For循环来决定的,如果要使运动一直运行下去,我们可以使用pygame中的游戏循环,这个循环会在程序运行期间持续工作。其中的监听类循环,会不断检查用户的操作,比如用户按键、移动鼠标或者关闭窗口等,通常用来实现游戏中与用户的交互。
while True:
for event in pygame.event.get(): #侦听并获取事件列表
if event.type==pygame.QUIT: #接收到退出事件后退出程序
sys.exit()
screen.blit(back,[0,0]) #重绘背景 screen.blit(img,[random.randint(50,700),random.randint(50,500)]) #随机显示位置
pygame.display.update() #更新屏幕
pygame.time.delay(800) #延时
步入正轨
实现交互
while True:
for event in pygame.event.get(): #侦听并获取事件列表
if event.type==pygame.QUIT: #接收到退出事件后退出程序
#鼠标单击事件
if event.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):
……
这里的数值和蝴蝶图片的尺寸有关
练习
尝试完成蝴蝶在天空随机显示,并实现用鼠标点击。
练习巩固
第三、四课时 打地鼠游戏
教学过程
教学内容
设计意图
导入
演示“打地鼠”游戏
明确任务
问题描述
描述“打地鼠”游戏功能
了解需求
问题分析
功能模块有哪些
实现方法
分组实现,先填写规划表,然后实现。
任务
人员
各功能模块设计
素材收集及处理
程序实现
测试功能
分析问题,分解模块功能,体验合作
问题解决
编写程序、拼装程序、调试运行
总结
一个应用程序的开发流程
总结归纳
习题
开发“打地鼠”游戏
在游戏基础上进一步改进,例如:
1.将鼠标显示为锤子图像
2.游戏难度随着分数递增
练习巩固
精益求精