内容正文:
教学单元
学习领域二:程序设计入门
教学主题
项目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()
#下面的代码实现在窗口上添加一个"查询线路"按钮的功能