资源简介 中小学教育资源及组卷应用平台教学单元 学习领域二:程序设计入门 教学主题 项目2-3 开发弹球游戏教学目标能够定义和调用类和对象。 能够创设窗口对象并修改窗口属性。 能够综合分析任务并对小任务进行流程图、算法分析。 通过对大任务的拆解,能够有模块化思维,具有面向对象的初步想法,提升问题解决能力。 通过大任务拆解为小任务让学生学会面向对象算法思维,同时提升利用程序设计解决问题的意识。核心素养培养通过大任务拆解为小任务让学生学会面向对象算法思维,同时提升利用程序设计解决问题的意识。教学内容类和对象;创建画布;弹球游戏教学媒体电子白板、PPT教学过程教学环节 教师活动 学生活动 设计意图情境导入 播放弹球游戏视频。 并为学生呈现所使用的全部代码。 由学生执行代码。 from tkinter import *import randomimport timeclass Ball:def __init__(self, huabu, color):self.huabu = huabuself.id = huabu.create_oval(10, 10, 50, 50, fill=color)self.huabu.move(self.id, 295, 100)starts = [-3, -2, -1, 1, 2, 3]random.shuffle(starts)self.x = starts[0]self.y = -1self.huabukuan = self.huabu.winfo_width()self.huabugao = self.huabu.winfo_height()def draw(self):self.huabu.move(self.id, self.x, self.y)p = self.huabu.coords(self.id)if p[1] <= 0: # 如果小球碰到画布顶部self.y = 1if p[3] >= self.huabugao: # 如果小球碰到画布底部self.y = -1if p[0] <= 0:self.x = 1if p[2] >= self.huabukuan:self.x = -1win = Tk()win.title("Ball Game")win.resizable(0, 0)#win.wm_attributes("-topmost", 1)huabu = Canvas(win, width=600, height=400)huabu.pack()win.update()ball = Ball(huabu, 'blue')while 1:ball.draw()win.update_idletasks()win.update()time.sleep(0.01) 观看视频并执行代码素材。 模仿左侧代码并执行结果,思考每句代码内涵。 弹球游戏学生能够通过自主分析和设计代码来实现的简易任务,因此先给学生呈现结果,让学生了解完成的目标,激发学生动机。 其次提供完整代码,让学生自主运行,为学生种下基本代码程序任务的种子和轮廓。任务探究 【任务一、tkinter和time库】经过任务分析,将开发弹球游戏的任务分解为三个小任务: Python 标准库Tkinter 提供了强大的跨平台图形用户界面(GUI)编程的功能。Tkinter 提供了大量用于 GUI编程的组件,如 button、label、menu、message、canvas等。GUI-窗体 模仿任务 from tkinter import *root = Tk()#创建一个窗口root.title("trivial")#设置窗口标题#设置窗口大小root.geometry('300x120')#禁止调整窗口大小root.resizable(0,0)#在窗口上建一个“添加线路”按钮Button(root,text="添加线路",relief="solid",width=10,height=2). pack()#下面的代码实现在窗口上添加一个"查询线路"按钮的功能root.mainloop()模仿代码并实现上述图形结果。 根据教师的引导,学习如何分解任务。 面向对象思维就是对任务进行拆解。 认真学习并记录笔记。 通过探究大探究任务为三个小任务,让学生掌握面向对象的思维模式,同时通过代码的实践模仿,提升代码运行能力,学习基本概念。from tkinter import *import timewin = Tk()win.title("Ball Game")win.resizable(0, 0)huabu = Canvas(win, width=600, height=400)huabu.pack()win.update() 运行代码 根据代码让学生实践代码。【任务二、类和对象】播放类和对象的视频,学习和了解如何类的含义,创建和调用类的方法。 Python提供了一个构造方法,其固定名称为"_init_"(两个下画线开头和两个下画线结尾),当创建类的实例时,系统自动调用构造方法,从而实现对类的初始化操作。操作简单的小球弹跳游戏,想一想,预设小球移动方向和速度的算法是什么?检测到小球碰到画布边界时反弹的算法是什么?小球如何在画布上移动?小球的坐标位置是如何获取的?需要调用哪些CANVAS函数?CANVAS 函数MOVE函数:通过ID让对象在屏幕上移动WINFO_HEIGHT画布高度函数:获取画布当前的高度。WINFO_WIDTH画布宽度函数:获职画布当前的宽度。COORDS函数:通过ID返回画布上画好的对象的当前坐标。 学习类和对象的创建、调用方法,并运行代码,实践运行,深度学习。 首先讲授如何创建类和对象,让学生掌握任务二的基本知识。 其次引导学生分析如何让小球动起来的函数。【任务三、弹球游戏实现】从问题分析出发,观看流程图,并且说明流程图含义。1、使小球左右移动。 2、使小球碰到边界反弹。运行及调适程序。测试过程中遇到了哪些问题?你是如何处理的?思考如何让学生在垂直水平反弹 垂直方向弹跳: def draw(self):...if p[1] <= 0:#如果小球碰到画布顶部self.y = 1if p[3] >= self.huabugao:self.xy= -1 跟随教师引导分析具体问题的流程图,并且发现流程图的区别。 设计程序实现流程图的功能,并且分析代码的功能。 在水平弹跳基础上,让学生自主探究如何实现垂直方向弹跳。挑战进阶 【添加球拍】 在游戏中添加一个球拍,用户左右移动球拍接球以防止小球坠落。如何修改程序使小球碰到球拍时反弹?如果小球落到屏幕底部,则游戏结束。 学生网络上自主寻找资料。 自主分析任务并尝试挑战设计实例。课后作业 请说出定义类和调用类的区别请自行设计球拍类并在游戏中添加球拍实体。 完成作业。 完成课后作用,巩固回忆知识。(共20张PPT)项目2-3 开发弹球游戏2021凤凰教育出版社中职信息技术一、情境导入【弹球游戏】一、情境导入from tkinter import *import randomimport timeclass Ball:def __init__(self, huabu, color):self.huabu = huabuself.id = huabu.create_oval(10, 10, 50, 50, fill=color)self.huabu.move(self.id, 295, 100)starts = [-3, -2, -1, 1, 2, 3]random.shuffle(starts)self.x = starts[0]self.y = -1self.huabukuan = self.huabu.winfo_width()self.huabugao = self.huabu.winfo_height()def draw(self):self.huabu.move(self.id, self.x, self.y)p = self.huabu.coords(self.id)if p[1] <= 0: # 如果小球碰到画布顶部self.y = 1if p[3] >= self.huabugao: # 如果小球碰到画布底部self.y = -1if p[0] <= 0:self.x = 1if p[2] >= self.huabukuan:self.x = -1模仿左侧代码并执行结果,思考每句代码内涵。【弹球游戏】win = Tk()win.title("Ball Game")win.resizable(0, 0)#win.wm_attributes("-topmost", 1)huabu = Canvas(win, width=600, height=400)huabu.pack()win.update()ball = Ball(huabu, 'blue')while 1:ball.draw()win.update_idletasks()win.update()time.sleep(0.01)【任务分析】二、任务探究二、任务探究【任务一】Python 标准库Tkinter 提供了强大的跨平台图形用户界面(GUI)编程的功能。Tkinter 提供了大量用于 GUI编程的组件,如 button、label、menu、message、canvas等。二、任务探究GUI—窗体模仿任务from tkinter import *root = Tk()#创建一个窗口root.title("trivial")#设置窗口标题#设置窗口大小root.geometry('300x120')#禁止调整窗口大小root.resizable(0,0)#在窗口上建一个“添加线路”按钮Button(root,text="添加线路",relief="solid",width=10,height=2). pack()#下面的代码实现在窗口上添加一个"查询线路"按钮的功能root.mainloop()模仿代码并实现上述图形结果二、任务探究创建画布运行任务from tkinter import *import timewin = Tk()win.title("Ball Game")win.resizable(0, 0)huabu = Canvas(win, width=600, height=400)huabu.pack()win.update()模仿代码并实现上述图形结果二、任务探究【任务二】类和对象二、任务探究类和对象定义Python提供了一个构造方法,其固定名称为"_init_"(两个下画线开头和两个下画线结尾),当创建类的实例时,系统自动调用构造方法,从而实现对类的初始化操作。class Ball:def __init__(self, huabu, color):#创建属性self.huabu = huabuself.id = huabu.create_oval(10, 10, 50, 50, fill=color)self.huabu.move(self.id, 295, 100)starts = [-3, -2, -1, 1, 2, 3]def draw(self):#创建方法self.huabu.move(self.id, self.x, self.y)p = self.huabu.coords(self.id)ball = Ball(huabu, 'blue')#创建实体小球class 类名:属性列表方法列表二、任务探究【任务三】分析任务操作简单的小球弹跳游戏,想一想,预设小球移动方向和速度的算法是什么?检测到小球碰到画布边界时反弹的算法是什么?小球如何在画布上移动?小球的坐标位置是如何获取的?需要调用哪些CANVAS函数?二、任务探究【任务三】分析任务CANVAS 函数MOVE函数:通过ID让对象在屏幕上移动WINFO_HEIGHT画布高度函数:获取画布当前的高度。WINFO_WIDTH画布宽度函数:获职画布当前的宽度。COORDS函数:通过ID返回画布上画好的对象的当前坐标。二、任务探究从问题分析出发,观看流程图,并且说明流程图含义。【任务三】二、任务探究1、使小球左右移动。2、使小球碰到边界反弹。【任务三】二、任务探究【任务三】def __init__(self, huabu, color):self.x = -1#水平移动self.y = 0self.huabukuan = self.huabu.winfo_width()1、小球移动二、任务探究def draw(self):self.huabu.move(self.id, self.x, self.y)#调用画布的move 函数p = self.huabu.coords(self.id)#调用画布的coords 函数if p[0] <= 0:self.x = 1if p[2] >= self.huabukuan:self.x= -12、小球反弹(水平方向)【任务三】二、任务探究【任务三】思考如何让学生在垂直水平反弹运行及调适程序。测试过程中遇到了哪些问题?你是如何处理的?问题探究二、任务探究【任务三】思考如何让学生在垂直水平反弹运行及调适程序。测试过程中遇到了哪些问题?你是如何处理的?二、任务探究【任务三】def draw(self):...if p[1] <= 0:#如果小球碰到画布顶部self.y = 1if p[3] >= self.huabugao:self.xy= -12、小球反弹(垂直方向)三、挑战进阶【添加球拍】在游戏中添加一个球拍,用户左右移动球拍接球以防止小球坠落。如何修改程序使小球碰到球拍时反弹?如果小球落到屏幕底部,则游戏结束。四、课后作业1、请说出定义类和调用类的区别2、请自行设计球拍类并在游戏中添加球拍实体。 展开更多...... 收起↑ 资源列表 项目2-3 开发弹球游戏.pptx 项目2-3 开发弹球游戏.docx