資源簡介 (共20張PPT)綜合問題的解決—— 接 福 游 戲課 前 預 習預習課本P107-P109,思考以下問題1.python中專門用來開發游戲的模塊是( )A、numpy B、pygameC、matplotlib D、math2.在軟件的生命周期中,明確軟件系統具備哪些功能的階段是( )。A.可行性分析 B.需求分析C.概要設計 D.詳細設計BB教 學目 標學會分析任務,描述需求分析,知道需要解決的關鍵問題。體驗軟件開發的基本流程接福游戲運行“接福游戲”,描述這款游戲的功能?需要python中的哪些模塊實現這些功能?一了解需求、分析問題pygame模塊提供了圖像、聲音等函數; random模塊用于產生隨機數;sys模塊包含了跟Python環境相關的函數。綜合考慮游戲功能,需要導入的模塊有pygame、random、 sys。一了解需求、分析問題pygame是一個專門用來開發游戲的模塊,可以包含圖像、聲音等。模塊 功能pygame. display 訪問顯示設備pygame.event 管理事件pygame.font 使用字體pygame.image 加載和存儲圖片二分解任務,設計流程如何實時獲得鼠標的狀態并對鼠標單擊做出正確的響應。也就是不斷地進行監聽、更新游戲狀態 、重繪屏幕三個步驟的操作。二分解任務,設計流程pygame自帶監聽類循環,會不斷檢查用戶的操作,比如用戶按鍵、移動鼠標或者關閉窗口等,通常用來實現游戲中與用戶的交互。監聽while True:#監聽所有事件, 獲取事件列表for event in pygame.event.get():if event.type==pygame.QUIT: #Quit事件sys.exit() #退出程序#鼠標單擊事件if event.type==pygame.MOUSEBUTTONDOWN:……二分解任務,設計流程游戲狀態可以理解為程序中的變量值。隨著鼠標單擊,游戲中的分數需要更新。這些狀態通常隨著鼠標單擊或鍵盤輸入等事件的發生而改變。更新游戲狀態本游戲中福字在窗口隨機出現,實際上就是顯示不同位置的福字。要達到這個效果,需要完成兩個步驟:①把原來的圖像擦掉或覆蓋②在新的位置上畫出圖像重繪屏幕計算機要“擦掉”某個圖像,可以采用重繪背景或者用其他對象來覆蓋的方式活動一:將主程序的各功能語句放到合適的位置。三組裝程序,測試運行1. 創建窗口,設置背景import pygame #導入模塊pygame.init() #pygame模塊初始化#創建一個窗口screen,大小為800*600screen=pygame.display.set_mode([800,600])pygame.display.set_caption('接福') #設置窗口標題三組裝程序,測試運行顯示一個有背景色的窗口screen.fill((144,238,144)) #窗口填充淡綠色*pygame.display.update() #窗口刷新顯示一個有背景圖片的窗口back=pygame.image.load('bj.jpg') #加載背景圖像screen.blit(back,[0,0]) #將背景圖畫在窗口活動二:根據以上分析完成“接福”游戲的界面設計import pygamescreen = pygame.display.set_mode([①]) # 創建一個800*600的窗口pygame.display.set_caption('接福') # 設置窗口標題back = pygame.image.load('bj.jpg') # 加載背景圖像screen.blit(②, [0, 0]) # 將背景圖顯示在窗口pygame.display.③ #刷新畫面三組裝程序,測試運行2.繪制福字在實際使用中,只要提供一對坐標值,就可以調用showfu了。def showfu(x,y): #定義函數,在坐標(x,y)上顯示圖像gift=pygame.image.load('fu.png') #加載福字圖像screen.blit(gift,[x,y]) #顯示福字三組裝程序,測試運行方法為:先定義顯示字體,然后將score顯示出來。為了增加代碼的復用性,以便游戲循環中狀態更新時反復調用,可以定義成一個函數showscore。3.顯示得分def showscore(score): #定義函數,顯示分數textfont=pygame.font.SysFont('Arial',30) #字體為Arial,大小30#生成平滑的紅色字符串t=textfont.render('score:'+str(score),True, (255,0,0))screen.blit(t,[50,50]) #在窗口顯示三組裝程序,測試運行4.游戲狀態的更新和屏幕的重繪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)位置顯示福字刷新窗口三組裝程序,測試運行while True:for event in pygame.event.get(): #偵聽并獲取事件列表if event.type==pygame.QUIT: #接收到退出事件后退出程序sys.exit()if event.type==pygame.MOUSEBUTTONDOWN: #偵聽到鼠標點擊事件mousex,mousey=pygame.mouse.get_pos() #獲取鼠標按下的坐標#判斷鼠標是否擊中福字,本例福字寬為60,高為70if mousex in range(x,x+60) and mousey in range(y,y+70):score=score+5 #加分實 現 交 互課 堂 小 結綜合問題的解決pygame解決問題的方法與步驟pygame.display訪問顯示設備pygame.event 管理事件pygame.font 使用字體pyg ame.miage 加栽和存儲圖片分析問題設計算法(流程圖)編寫代碼調試運行鞏 固 提 升1.以下關于算法中輸入、輸出的描述正確的是( )。A.算法可以沒有輸入,表示該算法不涉及任何數據信息B.算法可以沒有輸出,表示該算法運行結果為“無解”C.算法必須要有輸入,否則算法無法進行D.算法至少要有一個輸出2.采用盲目搜索的方法,在搜索的過程中,對所得的結果逐一篩選,排除不符合要求的結果,保留那些符合要求的結果,這種方法叫做( )。A.解析法 B.遞推法 C.枚舉法 D.選擇法DCTHE END 展開更多...... 收起↑ 資源預覽 縮略圖、資源來源于二一教育資源庫