資源簡介 (共22張PPT)e7d195523061f1c0c2b73831c94a3edc981f60e396d3e182073EE1468018468A7F192AE5E5CD515B6C3125F8AF6E4EE646174E8CF0B46FD19828DCE8CDA3B3A044A74F0E769C5FA8CB87AB6FC303C8BA3785FAC64AF5424764E128FECAE4CC72BD54E486F2F2A60F51B8A1D54097D49F626B96969F5CCE921267A92A2F22AC8A839D5EE3DCAA21587D0441DCE9CD82764.4 綜合問題的解決四、計算與問題解決e7d195523061f1c0c2b73831c94a3edc981f60e396d3e182073EE1468018468A7F192AE5E5CD515B6C3125F8AF6E4EE646174E8CF0B46FD19828DCE8CDA3B3A044A74F0E769C5FA8CB87AB6FC303C8BA3785FAC64AF5424764E128FECAE4CC72BD54E486F2F2A60F51B8A1D54097D49F626B96969F5CCE921267A92A2F22AC8A839D5EE3DCAA21587D0441DCE9CD8276學習目標★學會分析任務, 描述需求分析, 知道需要解決的關鍵問題。 ★體驗軟件開發的基本流程。e7d195523061f1c0c2b73831c94a3edc981f60e396d3e182073EE1468018468A7F192AE5E5CD515B6C3125F8AF6E4EE646174E8CF0B46FD19828DCE8CDA3B3A044A74F0E769C5FA8CB87AB6FC303C8BA3785FAC64AF5424764E128FECAE4CC72BD54E486F2F2A60F51B8A1D54097D49F626B96969F5CCE921267A92A2F22AC8A839D5EE3DCAA21587D0441DCE9CD8276e7d195523061f1c0c2b73831c94a3edc981f60e396d3e182073EE1468018468A7F192AE5E5CD515B6C3125F8AF6E4EE646174E8CF0B46FD19828DCE8CDA3B3A044A74F0E769C5FA8CB87AB6FC303C8BA3785FAC64AF5424764E128FECAE4CC72BD54E486F2F2A60F51B8A1D54097D49F626B96969F5CCE921267A92A2F22AC8A839D5EE3DCAA21587D0441DCE9CD8276“迎?!薄凹{?!?是迎新春必不可少的傳統項目。有道是:“ 大福小福全家福, 有福享福處處福。知福來福有祝福,清福洪福添幸福。接福納福年年福,守福祈福歲歲福!”本節我們將圍繞“ ‘接了個福’游戲”項目, 創設游戲情境,實現通過單擊鼠標,去接屏幕上不斷出現的福字, 并根據成功接到福字的次數記錄分值。“接了個福”游戲導入e7d195523061f1c0c2b73831c94a3edc981f60e396d3e182073EE1468018468A7F192AE5E5CD515B6C3125F8AF6E4EE646174E8CF0B46FD19828DCE8CDA3B3A044A74F0E769C5FA8CB87AB6FC303C8BA3785FAC64AF5424764E128FECAE4CC72BD54E486F2F2A60F51B8A1D54097D49F626B96969F5CCE921267A92A2F22AC8A839D5EE3DCAA21587D0441DCE9CD8276打開教科書配套資源中的“接福.Py”程序并運行,單擊屏幕上不斷出現的福字,觀察屏幕變化。 在下框中寫出這款游戲的功能。“接了個?!庇螒蛎枋?br/>鼠標點擊隨機出現的“?!弊郑c擊到“福”字則加五分,否則不得分。需求分析是軟件工程中的一個關鍵過程。需求分析階段的任務是確定軟件系統的功能。通俗地說,就是確定需要計算機“做什么”,想達到什么樣的效果。只有在確定了這些需求后,才能夠分析和尋求系統的解決方法活動1 了解需求,分析問題e7d195523061f1c0c2b73831c94a3edc981f60e396d3e182073EE1468018468A7F192AE5E5CD515B6C3125F8AF6E4EE646174E8CF0B46FD19828DCE8CDA3B3A044A74F0E769C5FA8CB87AB6FC303C8BA3785FAC64AF5424764E128FECAE4CC72BD54E486F2F2A60F51B8A1D54097D49F626B96969F5CCE921267A92A2F22AC8A839D5EE3DCAA21587D0441DCE9CD8276分析要用什么模塊pygame是一個專門用來開發游戲的模塊,可以包含圖像、聲音等。模塊 功能pygame.display 訪問顯示設備pygame.event 管理事件pygame.font 使用字體pygame.image 加載和存儲圖片綜合考慮游戲功能,需要導入的模塊有pygame、random、sys。其中random模塊用于產生隨機數;sys模塊包含了跟Python環境相關的函數。e7d195523061f1c0c2b73831c94a3edc981f60e396d3e182073EE1468018468A7F192AE5E5CD515B6C3125F8AF6E4EE646174E8CF0B46FD19828DCE8CDA3B3A044A74F0E769C5FA8CB87AB6FC303C8BA3785FAC64AF5424764E128FECAE4CC72BD54E486F2F2A60F51B8A1D54097D49F626B96969F5CCE921267A92A2F22AC8A839D5EE3DCAA21587D0441DCE9CD8276活動二 分解任務,設計流程本項目中設計的重點和難點是人機交互,即如何實時獲取鼠標的狀態并對鼠標單擊做出正確的響應。也就是不斷地進行監聽、更新游戲狀態、重繪屏幕三個步驟的操作。游戲循環監聽事件更新游戲狀態重繪屏幕游戲狀態可理解為程序中的變量值。通常隨事件的發生而改變,例如鼠標單擊、鍵盤輸入或時間的流逝等。1.在新的位置上畫出 圖像。2.把原來的圖像擦掉(覆蓋)如何實現監聽?e7d195523061f1c0c2b73831c94a3edc981f60e396d3e182073EE1468018468A7F192AE5E5CD515B6C3125F8AF6E4EE646174E8CF0B46FD19828DCE8CDA3B3A044A74F0E769C5FA8CB87AB6FC303C8BA3785FAC64AF5424764E128FECAE4CC72BD54E486F2F2A60F51B8A1D54097D49F626B96969F5CCE921267A92A2F22AC8A839D5EE3DCAA21587D0441DCE9CD8276自帶了一個監聽類循環:不斷檢查用戶的操作, 比如用戶按鍵、移動鼠標或者關閉窗口等。這個循環會在程序運行期間持續工作。其代碼框架如下:while True: #循環會在程序運行期間持續for event in pygame.event.get(): #監聽所有事件, 獲取事件列表if event.type==pygame.QUIT: # Quit事件sys.exit() #退出程序if event.type==pygame.MOUSEBUTTONDOWN: #鼠標單擊事件……在python 中,True (真)、False(假)的第一個字符要大寫。監聽事件——Pygamee7d195523061f1c0c2b73831c94a3edc981f60e396d3e182073EE1468018468A7F192AE5E5CD515B6C3125F8AF6E4EE646174E8CF0B46FD19828DCE8CDA3B3A044A74F0E769C5FA8CB87AB6FC303C8BA3785FAC64AF5424764E128FECAE4CC72BD54E486F2F2A60F51B8A1D54097D49F626B96969F5CCE921267A92A2F22AC8A839D5EE3DCAA21587D0441DCE9CD8276任務二:程序組裝,測試運行e7d195523061f1c0c2b73831c94a3edc981f60e396d3e182073EE1468018468A7F192AE5E5CD515B6C3125F8AF6E4EE646174E8CF0B46FD19828DCE8CDA3B3A044A74F0E769C5FA8CB87AB6FC303C8BA3785FAC64AF5424764E128FECAE4CC72BD54E486F2F2A60F51B8A1D54097D49F626B96969F5CCE921267A92A2F22AC8A839D5EE3DCAA21587D0441DCE9CD8276程序流程程序運行接到福字是是否②④①⑤③主程序開始主程序結束①監聽事件獲取鼠標單擊位置②游戲環境設置③重新繪制背景及圖像④設置初始值并繪制圖像⑤加分請將主程序的各功能語句放到合適的位置,完善程序流程圖。e7d195523061f1c0c2b73831c94a3edc981f60e396d3e182073EE1468018468A7F192AE5E5CD515B6C3125F8AF6E4EE646174E8CF0B46FD19828DCE8CDA3B3A044A74F0E769C5FA8CB87AB6FC303C8BA3785FAC64AF5424764E128FECAE4CC72BD54E486F2F2A60F51B8A1D54097D49F626B96969F5CCE921267A92A2F22AC8A839D5EE3DCAA21587D0441DCE9CD8276任務二 組裝程序,測試運行1.創建程序窗口, 設置背景。調用pygame.display.set_mode()函數,將返回一個窗口。pygame中的坐標系原點在左上角,水平方向為x軸,垂直方向為y軸。xy0※ 活動1 界面設計通過pygame.image.load(filename)來載入圖片,filename表示圖像文件的路徑和名稱。圖像文件必須和程序在同一文件夾下才可以使用相對路徑的引用方式。e7d195523061f1c0c2b73831c94a3edc981f60e396d3e182073EE1468018468A7F192AE5E5CD515B6C3125F8AF6E4EE646174E8CF0B46FD19828DCE8CDA3B3A044A74F0E769C5FA8CB87AB6FC303C8BA3785FAC64AF5424764E128FECAE4CC72BD54E486F2F2A60F51B8A1D54097D49F626B96969F5CCE921267A92A2F22AC8A839D5EE3DCAA21587D0441DCE9CD8276import pygame #導入模塊pygame.init() #pygame模塊初始化screen=pygame.display.set_mode([800,600]) #創建一個窗口screen,大小為800*600pygame.display.set_caption('實例’) #設置屏幕標題screen.fill((144,238,144)) #窗口填充淡綠色img=pygame.image.load('ball.png’) #載入ball.png圖像到內存screen.blit(img,[200,200]) #將圖像繪制在screen中,圖像的左上角在[200,200]pygame.display.update() #窗口刷新※ 創建足球游戲窗口實例e7d195523061f1c0c2b73831c94a3edc981f60e396d3e182073EE1468018468A7F192AE5E5CD515B6C3125F8AF6E4EE646174E8CF0B46FD19828DCE8CDA3B3A044A74F0E769C5FA8CB87AB6FC303C8BA3785FAC64AF5424764E128FECAE4CC72BD54E486F2F2A60F51B8A1D54097D49F626B96969F5CCE921267A92A2F22AC8A839D5EE3DCAA21587D0441DCE9CD82761、創建窗口screen=___________________————————————— #設置窗口標題為“接了個?!?br/>back=__ ____________('bj.jpg’) #加載背景圖screen.blit(____________,[0,0]) #將背景圖畫在窗口[0, 0]位置_________________________ #刷新畫面※分析完成“接了個?!庇螒虻慕缑嬖O計pygame.display.set_mode([800,600])pygame.display.set_caption('接了個福')pygame.image.loadbackpygame.display.update()2、繪制福字為了便于游戲循環中反復調用,可以定義成一個函數showfu,在繪制福字時,需要設置圖像顯示的位置,因此showfu中有兩個參數,分別表示圖像位置的橫坐標和縱坐標。def showfu(x,y): #定義函數,在坐標(x,y)上顯示圖像gift=pygame.image.load('fu.png') #加載福字圖像screen.blit(gift,[x,y]) #顯示福字在實際使用中,只要提供一對坐標值,就可以調用showfu了。e7d195523061f1c0c2b73831c94a3edc981f60e396d3e182073EE1468018468A7F192AE5E5CD515B6C3125F8AF6E4EE646174E8CF0B46FD19828DCE8CDA3B3A044A74F0E769C5FA8CB87AB6FC303C8BA3785FAC64AF5424764E128FECAE4CC72BD54E486F2F2A60F51B8A1D54097D49F626B96969F5CCE921267A92A2F22AC8A839D5EE3DCAA21587D0441DCE9CD82763、顯示得分。方法為:先定義顯示字體,然后將score顯示出來。為了增加代碼的復用性,以便游戲循環中狀態更新時反復調用,可以定義成一個函數showscore。def showscore(score): #定義函數,顯示分數textfont=pygame.font.SysFont('Arial',30) #字體為Arial,大小30t=textfont.render('score:'+str(score),True, (255,0,0)) #生成平滑的紅色字符串screen.blit(t,[50,50]) #在窗口顯示e7d195523061f1c0c2b73831c94a3edc981f60e396d3e182073EE1468018468A7F192AE5E5CD515B6C3125F8AF6E4EE646174E8CF0B46FD19828DCE8CDA3B3A044A74F0E769C5FA8CB87AB6FC303C8BA3785FAC64AF5424764E128FECAE4CC72BD54E486F2F2A60F51B8A1D54097D49F626B96969F5CCE921267A92A2F22AC8A839D5EE3DCAA21587D0441DCE9CD8276在本項目中,人機交互主要體現在鼠標單擊上。 需要獲取按鍵的情況,就要在監聽事件中增加相應的判斷語句。if event.type==pygame.MOUSEBUTTONDOWN: # __________________#獲取鼠標按下的坐標并記錄在mousex,mousey中mousex,mousey=pygame.mouse.get_pos()#判斷鼠標是否擊中福字,本例中福字寬為60,高為70if mousex in range(x,x+60) and mousey in range(y,y+70):score=score+5 #___________________偵聽到鼠標點擊事件加分4、判斷鼠標是否接到福字e7d195523061f1c0c2b73831c94a3edc981f60e396d3e182073EE1468018468A7F192AE5E5CD515B6C3125F8AF6E4EE646174E8CF0B46FD19828DCE8CDA3B3A044A74F0E769C5FA8CB87AB6FC303C8BA3785FAC64AF5424764E128FECAE4CC72BD54E486F2F2A60F51B8A1D54097D49F626B96969F5CCE921267A92A2F22AC8A839D5EE3DCAA21587D0441DCE9CD82765、游戲狀態的更新和屏幕的重繪在pygame的游戲循環中,我們通過調用以下語句來完成游戲狀態的更新和屏幕的重繪,請在橫線上注明各語句的功能。screen.blit(back,[0,0]) # _showscore(score) # _x=random. randint(50, 700) # _y=random.randint(50, 500) # _showfu(x,y) # _pygame.display.update() # _pygame.time.delay(800) #設置兩次顯示福字之間的延時將背景圖顯示在窗口顯示分數隨機生成福字水平方向坐標隨機生成福字垂直方向坐標在(x,y)位置顯示福字刷新窗口e7d195523061f1c0c2b73831c94a3edc981f60e396d3e182073EE1468018468A7F192AE5E5CD515B6C3125F8AF6E4EE646174E8CF0B46FD19828DCE8CDA3B3A044A74F0E769C5FA8CB87AB6FC303C8BA3785FAC64AF5424764E128FECAE4CC72BD54E486F2F2A60F51B8A1D54097D49F626B96969F5CCE921267A92A2F22AC8A839D5EE3DCAA21587D0441DCE9CD8276課堂小結綜合問題的解決pygame是一個專門用來開發游戲的模塊,可以包含圖像、聲音等。解決問題的方法與步驟pygame.display訪問顯示設備pygame.event 管理事件pygame.font 使用字體pyg ame.miage 加栽和存儲圖片分析問題設計算法(流程圖)編寫代碼調試運行e7d195523061f1c0c2b73831c94a3edc981f60e396d3e182073EE1468018468A7F192AE5E5CD515B6C3125F8AF6E4EE646174E8CF0B46FD19828DCE8CDA3B3A044A74F0E769C5FA8CB87AB6FC303C8BA3785FAC64AF5424764E128FECAE4CC72BD54E486F2F2A60F51B8A1D54097D49F626B96969F5CCE921267A92A2F22AC8A839D5EE3DCAA21587D0441DCE9CD8276e7d195523061f1c0c2b73831c94a3edc981f60e396d3e182073EE1468018468A7F192AE5E5CD515B6C3125F8AF6E4EE646174E8CF0B46FD19828DCE8CDA3B3A044A74F0E769C5FA8CB87AB6FC303C8BA3785FAC64AF5424764E128FECAE4CC72BD54E486F2F2A60F51B8A1D54097D49F626B96969F5CCE921267A92A2F22AC8A839D5EE3DCAA21587D0441DCE9CD8276e7d195523061f1c0c2b73831c94a3edc981f60e396d3e182073EE1468018468A7F192AE5E5CD515B6C3125F8AF6E4EE646174E8CF0B46FD19828DCE8CDA3B3A044A74F0E769C5FA8CB87AB6FC303C8BA3785FAC64AF5424764E128FECAE4CC72BD54E486F2F2A60F51B8A1D54097D49F626B96969F5CCE921267A92A2F22AC8A839D5EE3DCAA21587D0441DCE9CD8276e7d195523061f1c0c2b73831c94a3edc981f60e396d3e182073EE1468018468A7F192AE5E5CD515B6C3125F8AF6E4EE646174E8CF0B46FD19828DCE8CDA3B3A044A74F0E769C5FA8CB87AB6FC303C8BA3785FAC64AF5424764E128FECAE4CC72BD54E486F2F2A60F51B8A1D54097D49F626B96969F5CCE921267A92A2F22AC8A839D5EE3DCAA21587D0441DCE9CD8276驚艷你的世界The future is coming and The future is comingTHANKSTHANKSe7d195523061f1c0c2b73831c94a3edc981f60e396d3e182073EE1468018468A7F192AE5E5CD515B6C3125F8AF6E4EE646174E8CF0B46FD19828DCE8CDA3B3A044A74F0E769C5FA8CB87AB6FC303C8BA3785FAC64AF5424764E128FECAE4CC72BD54E486F2F2A60F51B8A1D54097D49F626B96969F5CCE921267A92A2F22AC8A839D5EE3DCAA21587D0441DCE9CD8276 展開更多...... 收起↑ 資源預覽 縮略圖、資源來源于二一教育資源庫