資源簡介
教學單元 計算與問題解決 教學主題 綜合問題的解決
教學目標
知識與技能 通過pygame庫游戲的任務拆解,能夠插入文本、圖片。 能夠根據需求簡單代碼,并自主dbug程序。 過程與方法 通過實現游戲的簡單游戲,讓學生能夠感受程序的高階運行過程,庫運行原理,提升問題和代碼的調試能力。 情感態度價值觀 能夠通過游戲設計,對程序運行和Python的探索興趣,為后續職業選擇打下興趣基礎。
核心素養培養
通過對代碼的綜合運用,提升程序調試能力,能夠用計算思維處理和分析日常生活中的事務。
教學內容
Pygame庫;問題解決要素分步實現;插入文字、圖片、鼠標事件實現。
教學媒體
電子白板、PPT
教學過程
教學環節 教師活動 學生活動 設計意圖
游戲導入 播放【簡單的點擊小球】游戲,該游戲是由教師制作的簡單游戲,通過直面運行程序讓學生觀看并自主運行程序結果。 首先觀看視頻,并根據教師的代碼素材運行Python文件,讓學生能夠自主運行,并自主玩樂游戲。 游戲的實現屬于綜合問題解決,需要先讓學生看到結果,激發學生探究的興趣。
活動分析 【點擊小球游戲】 【游戲要素】 界面 分數 小球 鼠標點擊動作 根據教師分析,一起分解小球實現的具體內容。 綜合與分析是一項計算思維的必備內容。學生面對抽象內容時,必然要分析、拆解如何通過小部分、小步驟內容來實現。 學生根據教師引導分解綜合問題,提升綜合分析問題的能力。
活動探究 活動一、【窗口界面】
import pygame pygame.init() # 初始化Pygame size = width, height = 320, 240 # 設置窗口 screen = pygame.display.set_mode(size) # 顯示窗口 # 執行死循環,確保窗口一直顯示 while True: # 檢查事件 for event in pygame.event.get(): # 遍歷所有事件 if event.type == pygame.QUIT: # 如果單擊關閉窗口,則退出 sys.exit() pygame.quit() 【學生模仿代碼,實現結果】 知識講解 【Pygame庫】 #屏幕尺寸 pygame.display.set_mode(200,300)#屏幕尺寸為200*300 #窗口標題 pygame.display.set_caption(‘貪吃蛇游戲’) #刷新 pygame.display.flip()#第一次刷新 pygame.display.update()#第二次刷新 #屏幕顏色 pygame.display.fill((255,0,0)) 播放【教師的插入修改視頻】 學生實現上述界面。 認真聽講,記錄筆記。 根據左側提示,自主設置代碼 1、修改屏幕尺寸 2、修改窗口標題 3、修改屏幕填充色 觀看視頻,并且不斷修正代碼。 在分解任務的過程中,集成程序教學法的小步驟,以緊密的任務安排讓學生在實踐練習中加深對程序設計的理解,并不斷提升程序調試的能力,讓學生感受綜合問題解決時所具備的心態、情緒、能力和知識技能,不斷提升對信息技術的探究興趣。
活動二、【字體畫筆】
【字體畫筆】 score=0#初始定義分數為0 def showscore(score):#設置分數函數 textfont=pygame.font.SysFont('宋體',40)#設置畫筆對象 t=textfont.render('score:'+str(score),True,(255,0,0))#定義畫筆實例 screen.blit(t,[50,50])#將畫筆寫在屏幕上 while True: showscore(score) pygame.display.flip() 講解并播放如何顯示分數的視頻。 【屏幕坐標】 請思考以下畫筆都分布在界面哪些位置,并修改坐標代碼,實現結果。 screen.blit(t,[0,0] screen.blit(t,[50,50] screen.blit(t,[100,50] screen.blit(t,[50,100] 播放【分數坐標】視頻。 在教師指導下認識代碼,運行結果。 觀看視頻,修正代碼,記錄筆記。 根據題意自主實現結果,總結結論。
活動三、【小球顯示】
import pygame,time,sys pygame.init() # 初始化Pygame size = width, height = 320, 240 # 設置窗口 screen = pygame.display.set_mode(size) # 顯示窗口 screen.fill((255,255,255)) img=pygame.image.load(‘ball.png’)#加載小球圖片 # 執行死循環,確保窗口一直顯示 while True: time.sleep(0.1) # 0.1秒 screen.blit(img,(0,0)) pygame.display.flip() # 檢查事件 for event in pygame.event.get(): # 遍歷所有事件 if event.type == pygame.QUIT: # 如果單擊關閉窗口,則退出 sys.exit() pygame.quit() 【圖片插入】 img=pygame.image.load(‘ball.png’)#加載小球圖片 screen.blit(img,(0,0))#將圖片加載到屏幕上,并放在屏幕坐標的(0,0)位置。 【圖片方法】 獲取圖片大小:img.get_size() 按照尺寸縮放:pygame.transform.scale(img, (100, 100)),參數:scale(縮放對象,目標大小), 按照比例縮放:pygame.transform.rotozoom(img,),參數:rotozoom(縮放/旋轉對象,旋轉角度,縮放比例) 自主探索,給屏幕增加背景圖片,并且按照屏幕尺寸把圖片尺寸調整,得到小球圖片的四個頂點坐標。 A點(x,y) B點(x,y+h) C點(x+w,y) D點(x+w,y+h) 播放【圖片坐標】的視頻 【圖片隨機顯示】 分析:圖片的隨機顯示,是為了讓圖片的左頂點的坐標是隨機數字,使得圖片能夠隨機顯示。 import random#導入隨機數字庫 #設置隨機坐標 x=img_x,img_y=random.randint(20,500),random.randint(20,200) #加載在屏幕上 screen.blit(img,[img_x,img_y]) pygame.display.update()#屏幕刷新 播放【圖片隨機顯示】視頻。 模仿代碼,運行結果 模仿并實現結果之后,認真聽講,記錄筆記。 記錄筆記并自主嘗試。 完成任務。 根據教師引導尋找并寫出四個點的坐標,以此認識位置。 觀看視頻,記錄筆記。 跟隨教師分析。 理解并模仿代碼。 觀看視頻。 實現結果。
活動四、【鼠標點擊事件】
while True: screen.fill((255,255,255)) time.sleep(0.1) # 0.1秒 # 檢查事件 for event in pygame.event.get(): # 遍歷所有事件 if event.type==pygame.MOUSEBUTTONDOWN: img_x,img_y=random.randint(20,500),random.randint(20,200) screen.fill((255,255,255)) screen.blit(img,[img_x,img_y]) pygame.display.update() if event.type == pygame.QUIT: # 如果單擊關閉窗口,則退出 sys.exit() 實現鼠標點擊,圖片隨機顯示的事件 鼠標鍵按下事件:pygame.event.MOUSEBUTTONDOWN: 鼠標鍵抬起事件: event.type == pygame.MOUSEBUTTONUP: 鼠標鍵移動事件: event.type == pygame.MOUSEMOTION: 鼠標坐標獲取: mx,my=pygame.mouse.get_pos() 【判斷鼠標是否擊中小球】 mx,my=pygame.mouse.get_pos() if mx in range(x,x+54) and my in range (y,y+48): score=score+5 認真聽講,理解代碼并自主完成結果運行,有問題請教指導教師。
完善總結 按照四部分任務,完善代碼,實現點擊小球游戲。 總結完善教材中的填空內容,學以致用。 鞏固、加強學習,并解決開放性問題。
拓展練習 嘗試給“點擊小球”游戲設計一個難度策略或是給鼠標換一個手形圖,以實現抓取的視覺效果,增加游戲的趣味性。難度策略可以考慮使用什么規則增減速度。嘗試在你的游戲中實現自己的想法。 自主查閱資料,完成任務 高難度挑戰Python應用,讓真正感興趣的學生繼續深入探索,提供任務的要求。(共30張PPT)
4.4 綜合問題的解決
2019教科版
高中信息技術
教學目標
一、活動導入
【簡單的點擊小球游戲】
二、活動分析
【點擊小球游戲】
三、活動探究
【點擊小球游戲】
【窗口界面】
import pygame
pygame.init() # 初始化Pygame
size = width, height = 320, 240 # 設置窗口
screen = pygame.display.set_mode(size) # 顯示窗口
# 執行死循環,確保窗口一直顯示
while True:
# 檢查事件
for event in pygame.event.get(): # 遍歷所有事件
if event.type == pygame.QUIT: # 如果單擊關閉窗口,則退出
sys.exit()
pygame.quit()
模仿代碼,實現結果
這是固定框架
三、活動探究
【點擊小球游戲】
【窗口界面】
Pygame庫
import pygame
pygame.init() # 初始化Pygame
size = width, height = 320, 240 # 設置窗口尺寸
screen = pygame.display.set_mode(size) # 顯示窗口
# 執行死循環,確保窗口一直顯示
while True:
# 檢查事件
for event in pygame.event.get(): # 遍歷所有事件
if event.type == pygame.QUIT: # 如果單擊關閉窗口,則退出
sys.exit()
pygame.quit()
三、活動探究
【點擊小球游戲】
【窗口界面】
Pygame庫
#屏幕尺寸
pygame.display.set_mode(200,300)#屏幕尺寸為200*300
#窗口標題
pygame.display.set_caption(‘貪吃蛇游戲’)
#刷新
pygame.display.flip()#第一次刷新
pygame.display.update()#第二次刷新
#屏幕顏色
screen.(fill((255,0,0))
三、活動探究
【點擊小球游戲】
【窗口界面】
Pygame庫
三、活動探究
【點擊小球游戲】
【分數顯示】
score=0#初始定義分數為0
def showscore(score):#設置分數函數
textfont=pygame.font.SysFont('宋體',40)#設置畫筆對象
t=textfont.render('score:'+str(score),True,(255,0,0))#定義畫筆實例
screen.blit(t,[50,50])#將畫筆寫在屏幕上
while True:
showscore(score)
pygame.display.flip()
字體畫筆
三、活動探究
【點擊小球游戲】
【分數顯示】
三、活動探究
請思考以下畫筆都分布在界面哪些位置,并修改坐標代碼,實現結果。
screen.blit(t,[0,0])
screen.blit(t,[50,50])
screen.blit(t,[100,50])
screen.blit(t,[50,100])
【點擊小球游戲】
【分數顯示】
屏幕坐標
三、活動探究
【點擊小球游戲】
【分數顯示】
三、活動探究
【點擊小球游戲】
【小球顯示】
import pygame,time,sys
pygame.init() # 初始化Pygame
size = width, height = 320, 240 # 設置窗口
screen = pygame.display.set_mode(size) # 顯示窗口
screen.fill((255,255,255))
img=pygame.image.load(‘ball.png’)#加載小球圖片
# 執行死循環,確保窗口一直顯示
while True:
time.sleep(0.1) # 0.1秒
screen.blit(img,(0,0))
pygame.display.flip()
# 檢查事件
for event in pygame.event.get(): # 遍歷所有事件
if event.type == pygame.QUIT: # 如果單擊關閉窗口,則退出
sys.exit()
pygame.quit()
模仿代碼,運行結果
三、活動探究
【點擊小球游戲】
【小球顯示】
img=pygame.image.load(‘ball.png’)#加載小球圖片
screen.blit(img,(0,0))#將圖片加載到屏幕上,并放在屏幕坐標的(0,0)位置。
圖片插入
三、活動探究
【點擊小球游戲】
【小球顯示】
圖片方法
三、活動探究
【點擊小球游戲】
【小球顯示】
圖片方法
獲取圖片大小:img.get_size()
按照尺寸縮放:pygame.transform.scale(img, (100, 100)),參數:scale(縮放對象,目標大小),
按照比例縮放:pygame.transform.rotozoom(img,),參數:rotozoom(縮放/旋轉對象,旋轉角度,縮放比例)
三、活動探究
【點擊小球游戲】
【小球顯示】
自主探索,給屏幕增加背景圖片,并且按照屏幕尺寸把圖片尺寸調整,得到小球圖片的四個頂點坐標。
三、活動探究
【點擊小球游戲】
【小球顯示】
IMG
B點
A點
C點
D點
A點(x,y)
B點(x,y+h)
C點(x+w,y)
D點(x+w,y+h)
(x,y)
w
h
三、活動探究
【點擊小球游戲】
【小球顯示】
三、活動探究
圖片隨機顯示
分析:圖片的隨機顯示,是為了讓圖片的左頂點的坐標是隨機數字,使得圖片能夠隨機顯示。
import random#導入隨機數字庫
#設置隨機坐標
x=img_x,img_y=random.randint(20,500),random.randint(20,200)
#加載在屏幕上
screen.blit(img,[img_x,img_y])
pygame.display.update()#屏幕刷新
【點擊小球游戲】
【小球顯示】
三、活動探究
【點擊小球游戲】
【小球顯示】
三、活動探究
【鼠標點擊事件】
【點擊小球游戲】
鼠標點擊之后,圖片隨機顯示
while True:
screen.fill((255,255,255))
time.sleep(0.1) # 0.1秒
# 檢查事件
for event in pygame.event.get(): # 遍歷所有事件
if event.type==pygame.MOUSEBUTTONDOWN:
img_x,img_y=random.randint(20,500),random.randint(20,200)
screen.fill((255,255,255))
screen.blit(img,[img_x,img_y])
pygame.display.update()
if event.type == pygame.QUIT: # 如果單擊關閉窗口,則退出
sys.exit()
三、活動探究
鼠標鍵按下事件:pygame.event.MOUSEBUTTONDOWN:
鼠標鍵抬起事件: event.type == pygame.MOUSEBUTTONUP:
鼠標鍵移動事件: event.type == pygame.MOUSEMOTION:
鼠標坐標獲取: mx,my=pygame.mouse.get_pos()
【點擊小球游戲】
【鼠標點擊事件】
三、活動探究
判斷鼠標是否“擊中”小球
mx,my=pygame.mouse.get_pos()
if mx in range(x,x+54) and my in range (y,y+48):
score=score+5
【點擊小球游戲】
【鼠標點擊事件】
四、完善總結
按照四部分任務,完善代碼,實現點擊小球游戲。
總結完善教材中的填空內容,學以致用。
繪制屏幕
Score=0
點擊鼠標
小球隨機出現
Score+=5
四、完善總結
pygame.display.set_mode(800,600)
Pygame.image.load
back
四、完善總結
Pygame.display.update()
將背景圖畫在窗口[0,0]位置
加載分數函數
X的值為隨機數
y的值為隨機數
福字為隨機位置顯示
刷新屏幕
四、完善總結
按下鼠標事件
分數加5
四、完善總結
嘗試給“點擊小球”游戲設計一個難度策略或是給鼠標換一個手形圖,以實現抓取的視覺效果,增加游戲的趣味性。難度策略可以考慮使用什么規則增減速度。嘗試在你的游戲中實現自己的想法。
五、拓展練習一、界面現實
import pygame
pygame.init() # 初始化Pygame
size = width, height = 320, 240 # 設置窗口
screen = pygame.display.set_mode(size) # 顯示窗口
# 執行死循環,確保窗口一直顯示
while True:
# 檢查事件
for event in pygame.event.get(): # 遍歷所有事件
if event.type == pygame.QUIT: # 如果單擊關閉窗口,則退出
sys.exit()
pygame.quit()
二、分數顯示
import pygame
pygame.init() # 初始化Pygame
size = width, height = 320, 240 # 設置窗口
screen = pygame.display.set_mode(size) # 顯示窗口
score=0#初始定義分數為0
def showscore(score):#設置分數函數
textfont=pygame.font.SysFont('宋體',40)#設置畫筆對象
t=textfont.render('score:'+str(score),True,(255,0,0))#定義畫筆實例
screen.blit(t,[50,50])#將畫筆寫在屏幕上
# 執行死循環,確保窗口一直顯示
while True:
showscore(score)
pygame.display.flip()
# 檢查事件
for event in pygame.event.get(): # 遍歷所有事件
if event.type == pygame.QUIT: # 如果單擊關閉窗口,則退出
sys.exit()
pygame.quit()
三、小球顯示
import pygame,time,sys
pygame.init() # 初始化Pygame
size = width, height = 320, 240 # 設置窗口
screen = pygame.display.set_mode(size) # 顯示窗口
screen.fill((255,255,255))
img=pygame.image.load('ball.png')
# 執行死循環,確保窗口一直顯示
while True:
time.sleep(0.1) # 0.1秒
screen.blit(img,(0,0))
pygame.display.flip()
# 檢查事件
for event in pygame.event.get(): # 遍歷所有事件
if event.type == pygame.QUIT: # 如果單擊關閉窗口,則退出
sys.exit()
pygame.quit()
四、隨機出現小球
(一)鼠標不點擊
import pygame,time,sys,random
pygame.init() # 初始化Pygame
size = width, height = 600, 300 # 設置窗口
screen = pygame.display.set_mode(size) # 顯示窗口
img=pygame.image.load('ball.png')
# 執行死循環,確保窗口一直顯示
while True:
screen.fill((255,255,255))
img_x,img_y=random.randint(20,500),random.randint(20,200)
screen.blit(img,[img_x,img_y])
pygame.display.update()
time.sleep(3) # 3秒
# 檢查事件
for event in pygame.event.get(): # 遍歷所有事件
if event.type == pygame.QUIT: # 如果單擊關閉窗口,則退出
sys.exit()
pygame.quit()
(二)鼠標點擊
import pygame,time,sys,random
pygame.init() # 初始化Pygame
size = width, height = 600, 300 # 設置窗口
screen = pygame.display.set_mode(size) # 顯示窗口
img=pygame.image.load('ball.png')
# a,b=img.get_size()#獲得小球的尺寸
# print(a,b) #打印小球的尺寸
# 執行死循環,確保窗口一直顯示
while True:
screen.fill((255,255,255))
time.sleep(0.1) # 0.1秒
# 檢查事件
for event in pygame.event.get(): # 遍歷所有事件
if event.type==pygame.MOUSEBUTTONDOWN:
img_x,img_y=random.randint(20,500),random.randint(20,200)
screen.fill((255,255,255))
screen.blit(img,[img_x,img_y])
pygame.display.update()
if event.type == pygame.QUIT: # 如果單擊關閉窗口,則退出
sys.exit()
pygame.quit()
五、鼠標點擊小球后,積分增加
import pygame,time,sys,random
pygame.init() # 初始化Pygame
size = width, height = 600, 300 # 設置窗口
score=0
screen = pygame.display.set_mode(size) # 顯示窗口
screen.fill((255,255,255))
x=random.randint(50,500)
y=random.randint(50,200)
def showqiu(x,y):
qiu=pygame.image.load('ball.png')
screen.blit(qiu,[x,y])
def showscore(score):
textfont=pygame.font.SysFont('宋體',40)
t=textfont.render('score:'+str(score),True,(255,0,0))
screen.blit(t,[50,50])
# 執行死循環,確保窗口一直顯示
while True:
screen.fill((255,255,255))
time.sleep(0.1) # 0.1秒
# 檢查事件
for event in pygame.event.get(): # 遍歷所有事件
if event.type==pygame.MOUSEBUTTONDOWN:
mx,my=pygame.mouse.get_pos()
if mx in range(x,x+54) and my in range (y,y+48):
score=score+5
#print(mx,x,x+54,my,y,y+48)
x=random.randint(50,500)
y=random.randint(50,200)
showqiu(x,y)
showscore(score)
pygame.display.update()
if event.type == pygame.QUIT: # 如果單擊關閉窗口,則退出
sys.exit()
pygame.quit()
展開更多......
收起↑