中职信息技术苏教版-第二册-项目2-3 开发弹球游戏 课件+教案

资源下载
  1. 二一教育资源

中职信息技术苏教版-第二册-项目2-3 开发弹球游戏 课件+教案

资源简介

中小学教育资源及组卷应用平台
教学单元 学习领域二:程序设计入门 教学主题 项目2-3 开发弹球游戏
教学目标
能够定义和调用类和对象。 能够创设窗口对象并修改窗口属性。 能够综合分析任务并对小任务进行流程图、算法分析。 通过对大任务的拆解,能够有模块化思维,具有面向对象的初步想法,提升问题解决能力。 通过大任务拆解为小任务让学生学会面向对象算法思维,同时提升利用程序设计解决问题的意识。
核心素养培养
通过大任务拆解为小任务让学生学会面向对象算法思维,同时提升利用程序设计解决问题的意识。
教学内容
类和对象;创建画布;弹球游戏
教学媒体
电子白板、PPT
教学过程
教学环节 教师活动 学生活动 设计意图
情境导入 播放弹球游戏视频。 并为学生呈现所使用的全部代码。 由学生执行代码。 from tkinter import *
import random
import time
class Ball:
def __init__(self, huabu, color):
self.huabu = huabu
self.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 = -1
self.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 = 1
if p[3] >= self.huabugao: # 如果小球碰到画布底部
self.y = -1
if p[0] <= 0:
self.x = 1
if 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) 观看视频并执行代码素材。 模仿左侧代码并执行结果,思考每句代码内涵。 弹球游戏学生能够通过自主分析和设计代码来实现的简易任务,因此先给学生呈现结果,让学生了解完成的目标,激发学生动机。 其次提供完整代码,让学生自主运行,为学生种下基本代码程序任务的种子和轮廓。
任务探究 【任务一、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 time
win = 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 = 1
if p[3] >= self.huabugao:
self.xy= -1 跟随教师引导分析具体问题的流程图,并且发现流程图的区别。 设计程序实现流程图的功能,并且分析代码的功能。 在水平弹跳基础上,让学生自主探究如何实现垂直方向弹跳。
挑战进阶 【添加球拍】 在游戏中添加一个球拍,用户左右移动球拍接球以防止小球坠落。如何修改程序使小球碰到球拍时反弹?如果小球落到屏幕底部,则游戏结束。 学生网络上自主寻找资料。 自主分析任务并尝试挑战设计实例。
课后作业 请说出定义类和调用类的区别
请自行设计球拍类并在游戏中添加球拍实体。 完成作业。 完成课后作用,巩固回忆知识。(共20张PPT)
项目2-3 开发弹球游戏
2021凤凰教育出版社
中职信息技术
一、情境导入
【弹球游戏】
一、情境导入
from tkinter import *
import random
import time
class Ball:
def __init__(self, huabu, color):
self.huabu = huabu
self.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 = -1
self.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 = 1
if p[3] >= self.huabugao: # 如果小球碰到画布底部
self.y = -1
if p[0] <= 0:
self.x = 1
if 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 time
win = 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 = huabu
self.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 = 0
self.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 = 1
if p[2] >= self.huabukuan:
self.x= -1
2、小球反弹(水平方向)
【任务三】
二、任务探究
【任务三】
思考如何让学生在垂直水平反弹
运行及调适程序。测试过程中遇到了哪些问题?你是如何处理的?
问题探究
二、任务探究
【任务三】
思考如何让学生在垂直水平反弹
运行及调适程序。测试过程中遇到了哪些问题?你是如何处理的?
二、任务探究
【任务三】
def draw(self):
...
if p[1] <= 0:#如果小球碰到画布顶部
self.y = 1
if p[3] >= self.huabugao:
self.xy= -1
2、小球反弹(垂直方向)
三、挑战进阶
【添加球拍】
在游戏中添加一个球拍,用户左右移动球拍接球以防止小球坠落。如何修改程序使小球碰到球拍时反弹?如果小球落到屏幕底部,则游戏结束。
四、课后作业
1、请说出定义类和调用类的区别
2、请自行设计球拍类并在游戏中添加球拍实体。

展开更多......

收起↑

资源列表