![新教科版-高一信息技術-44-綜合問題的解決課件_第1頁](http://file4.renrendoc.com/view/f8cc8a5012710a2c801b47c51b9f7e04/f8cc8a5012710a2c801b47c51b9f7e041.gif)
![新教科版-高一信息技術-44-綜合問題的解決課件_第2頁](http://file4.renrendoc.com/view/f8cc8a5012710a2c801b47c51b9f7e04/f8cc8a5012710a2c801b47c51b9f7e042.gif)
![新教科版-高一信息技術-44-綜合問題的解決課件_第3頁](http://file4.renrendoc.com/view/f8cc8a5012710a2c801b47c51b9f7e04/f8cc8a5012710a2c801b47c51b9f7e043.gif)
![新教科版-高一信息技術-44-綜合問題的解決課件_第4頁](http://file4.renrendoc.com/view/f8cc8a5012710a2c801b47c51b9f7e04/f8cc8a5012710a2c801b47c51b9f7e044.gif)
![新教科版-高一信息技術-44-綜合問題的解決課件_第5頁](http://file4.renrendoc.com/view/f8cc8a5012710a2c801b47c51b9f7e04/f8cc8a5012710a2c801b47c51b9f7e045.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
4.4綜合問題的解決第4單元計算與問題解決學習目標2.體驗軟件開發(fā)的基本流程1.學會分析任務,描述需求分析,知道需要解決問題的關鍵點。pygame模塊的使用(重點)過程設計中,事件代碼的理解及使用。(難點)請同學們打開光盤接福.py程序,體驗并能說出游戲的過程?;谛枨?,分解任務活動1了解需求,分析問題
通過剛才的游戲,我們知道游戲過程是通過單擊鼠標,接屏幕上不斷出現(xiàn)的福字,并根據(jù)成功接到福字的次數(shù)記錄分值。請同學們完成課本P108“接福”游戲描述。
需求分析是軟件工程中的一個關鍵過程。需求分析階段的任務是確定軟件系統(tǒng)的功能。通俗地說,就是確定需要計算機“做什么”,想達到什么樣的效果。只有在確定了這些需求后,才能夠分析和尋求系統(tǒng)的解決方法?;谛枨?,分解任務“接?!庇螒颍盒枰獙氲哪K有pygame、random、sys。其中,pygame模塊提供了圖像、聲音等函數(shù);random模塊用于產生隨機數(shù);sys模塊包含了跟Python環(huán)境相關的函數(shù)。pygame模塊
它是一個專門用來開發(fā)游戲的模塊,可以包含圖像、聲音等。它的相關內容主要有:模塊功能Pygame.display訪問顯示設備Pygame.event管理事件Pygame.font使用字體Pygame.image加載和存儲圖片基于需求,分解任務活動2分解任務,設計流程
“接福”游戲設計的重難點是人機交互,即如何實時獲得鼠標的狀態(tài)并對鼠標單擊做出正確的響應。也就是不斷地進行監(jiān)聽、更新游戲狀態(tài)、重繪屏幕三個步驟的操作。基于需求,分解任務
通常情況下,游戲的基本結構如圖所示。其中的事件主要指鼠標事件、鍵盤事件等。
游戲狀態(tài)可以理解為程序中的變量值。隨著鼠標單擊,游戲中的分數(shù)需要更新,這種狀態(tài)隨著鼠標單擊或鍵盤輸入等事件的發(fā)生而改變?;谛枨螅纸馊蝿?/p>
游戲狀態(tài)通常隨事件的發(fā)生而改變,如鼠標單擊、鍵盤輸入或者時間的流逝,游戲循環(huán)不停地檢查是否有新事件產生,并且會根據(jù)事件來更新游戲狀態(tài),這通常叫作事件處理。
隨著游戲狀態(tài)更新或游戲場景變化,屏幕上顯示的內容也會相應地發(fā)生改變。本游戲中福字在窗口隨機出現(xiàn),實際上就是顯示不同位置的福字。要達到這個效果,需要完成兩個步驟:(1)在新的位置上畫出圖像;(2)把原來的圖像擦掉。要“擦掉”某個圖像,可以選擇“覆蓋”它,通常采用重繪背景或者用其他對象來覆蓋的方式。在該游戲中,我們通過重繪背景來覆蓋前一個福字?;谛枨?,分解任務Pygame自帶了一個監(jiān)聽類循環(huán),不斷檢查用戶的操作,這個循環(huán)在程序運行過程期間持續(xù)工作。仔細閱讀理解如下代碼whileTrue:foreventinpygame.event.get():#監(jiān)聽并獲取事件列表ifevent.type==pygame.QUIT:#Quit事件sys.exit()#退出程序
ifevent.type==pygame.MOUSEBUTTONDOWN:#偵聽到鼠標點擊事件……基于需求,分解任務本游戲中要用到的程序功能塊,包括游戲環(huán)境設置、繪制圖像、設置初始值等。請將主程序的各功能語句放到合適的位置,完善流程圖?;谛枨?,分解任務基于需求,分解任務
需求分析之后、程序設計之前,需要對系統(tǒng)進行總體設計和詳細設計。總體設計就是在需求分析的基礎上對模型細化、分解任務,明確程序由哪些模塊組成。概括地說,就是系統(tǒng)應該如何實現(xiàn)。詳細設計主要指界面設計、過程設計等。組裝程序,測試運行
活動1:界面設計1.創(chuàng)建程序窗口,設置背景。調用pygame.display.set_mode()函數(shù),將返回一個窗口。如果想在窗口上繪制或是放置對象,需要指定這個對象在窗口的具體位置即坐標。pygame中的坐標系原點在左上角,水平方向為x軸,垂直方向為y軸。在pygame中,使用圖像的最簡單方法是調用image函數(shù)。通過pygame.image.load(filename)來載入圖片,filename表示圖像文件的路徑和名稱。圖像文件必須和程序在同一文件夾下才可以使用相對路徑的引用方式。
組裝程序,測試運行根據(jù)以上分析完成“接?!庇螒虻慕缑嬖O計(1)顯示一個窗口
importpygame#導入模塊
pygame.init()
#pygame模塊初始化screen=pygame.display.set_mode([800,600])
#創(chuàng)建一個窗口screen,大小為800*600
(2)顯示一個有背景色的窗口
screen.fill((255,255,0))
#窗口填充黃色
*pygame.display.update()#窗口刷新(3)顯示一個有背景圖片的窗口
用下面兩條語句替換(2)代碼段中帶“*”號的語句
back=pygame.image.load('bj.jpg’)
#加載背景圖像screen.blit(back,[0,0])
#將背景圖畫在窗口運行P111樣例程序,體驗圖像文件的引用importpygame#導入模塊pygame.init()#pygame模塊初始化screen=pygame.display.set_mode([600,400])#創(chuàng)建窗口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()#窗口刷新組裝程序,測試運行
活動1:界面設計
2.繪制福字。
在屏幕上出現(xiàn)福宇同祥可以使用以上在屏幕上繪制圖像的方法。為了便于游戲循環(huán)中反復調用,可以定義成一個函數(shù)showfu,在繪制福字時,需要設置圖像顯示的位置,因此showfu中有兩個參數(shù),分別表示圖像位置的橫坐標和縱坐標。defshowfu(x,y):#定義函數(shù),在坐標(x,y)上顯示圖像gift=pygame.image.load('fu.png')#加載福字圖像screen.blit(gift,[x,y])#顯示福字在實際使用中,只要提供一對坐標值,就可以調用showfu了。活動1:界面設計
3.顯示得分。
方法為:先定義顯示字體,然后將score顯示出來。為了增加代碼的復用性,以便游戲循環(huán)中狀態(tài)更新時反復調用,可以定義成一個函數(shù)showscore。組裝程序,測試運行defshowscore(score):#定義函數(shù),顯示分數(shù)textfont=pygame.font.SysFont('Arial',30)#字體為Arial,大小30
#生成平滑的紅色字符串t=textfont.render('score:'+str(score),True,(255,0,0))screen.blit(t,[50,50])#在窗口顯示
活動1:界面設計4.游戲狀態(tài)的更新和屏幕的重繪在pygame的游戲循環(huán)中,我們通過調用以下語句來完成游戲狀態(tài)的更新和屏幕的重繪,請在橫線上注明各語句的功能。組裝程序,測試運行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)#設置兩次顯示福字之間的延時活動2:人機交互及程序拼裝人機交互主要體現(xiàn)在鼠標上,需要獲取按鍵的情況,就要在監(jiān)聽事件中增加相應的判斷語句。打開光盤中“接福,py”,找到相應代碼,理解各句含義,在橫線上用自然語言描述對應功能。ifevent.type==pygame.MOUSEBUTTONDOWN:##獲取鼠標按下的坐標并記錄在mousex,mousey中mousex,mousey=pygame.mouse.get_pos()#判斷鼠標是否擊中福字,本例福字寬為60,高為70ifmousexinrange(x,x+60)andmouseyinrange(y,y+70):
score=score+5#
偵聽到鼠標點擊事件加分組裝程序,測試運行總結組裝程序,測試運行基于需求,分解任務跨平臺的Python模塊專為電子游戲開發(fā)設計包含圖像、聲音等多種元素控制建立在SDL基礎上允許實時電子游戲研發(fā)不被低級語言束縛pygame.cdrom訪問光驅pygame.color顏色pygame.cursors加載光標pygame.display訪問顯示設備pygame.draw繪制形狀、線和點pygame.event管理事件pygame.font使用字體pygame.image加載和存儲圖片pygame.joystick使用游戲手柄pygame.key讀取鍵盤按鍵pygame.mixer聲音pygame.movie播放視頻pygame.music播放音頻pygame.overlay訪問高級視頻疊加pygame.rect管理矩形區(qū)域pygame.scrap本地剪貼板訪問pygame.sndarray操作聲音數(shù)據(jù)pygame.sprite操作移動圖像pygame.surface管理圖像和屏幕pygame.surfarray管理點陣圖像數(shù)據(jù)pygame.time管理時間和幀信息pygame.transform縮放和移動圖像pygame.mouse鼠標在控制面板的高級系統(tǒng)設置中點擊環(huán)境變量,找到path變量,在其末尾輸入本機安裝Python的路徑。例如:C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\Scripts或在安裝軟件時,選擇“添加到路徑”打開cmd輸入pipinstallpygame系統(tǒng)將自動下載相應的安裝包并自動安裝。環(huán)境變量配置安裝pygame模塊開始游戲編程23112安裝笑臉爆炸基本知識核心功能導入初始化加載圖片響應點擊隨機大小反彈功能顯示設置事件處理圖片運動游戲循環(huán)游戲退出“畫點”importpygamepygame.init()screen=pygame.display.set_mode([800,600])pygame.display.set_caption("畫點")GREEN=(0,255,0)#RGB色彩模式,每段0~255radius=10keep_going=Truewhilekeep_going:foreventinpygame.event.get():
ifevent.type==pygame.QUIT:keep_going=Falsepygame.draw.circle(screen,GREEN,(100,100),radius)pygame.display.update()pygame.quit()#pygame.event.get()獲取用戶執(zhí)行事件列表,從而處理例如鼠標點擊、按鍵、關閉等事件操作。#退出程序#繪制圓形#刷新顯示#設定窗口大小#設定窗口標題#導入模塊#初始化“隨機彩點”importpygamepygame.init()screen=pygame.display.set_mode([800,600])pygame.display.set_caption("畫點")GREEN=(0,255,0)#RGB色彩模式,每段0~255radius=10keep_going=Truewhilekeep_going:foreventinpygame.event.get():
ifevent.type==pygame.QUIT:keep_going=Falsepygame.draw.circle(screen,GREEN,(100,100),radius)pygame.display.update()pygame.quit()COLOR=(int(random.random()*255),int(random.random()*255),int(random.random()*255))radius=random.randrange(1,10)(int(random.random()*800),int(random.random()*600))1“點擊繪點”importpygamepygame.init()screen=pygame.display.set_mode([800,600])pygame.display.set_caption("畫點")GREEN=(0,255,0)#RGB色彩模式,每段0~255radius=10keep_going=Truewhilekeep_going:foreventinpygame.event.get():
ifevent.type==pygame.QUIT:keep_going=Falsepygame.draw.circle(screen,GREEN,(100,100),radius)pygame.display.update()pygame.quit()2ifevent.type==pygame.MOUSEBUTTONDOWN:spot=event.pos#獲取鼠標點擊位置pygame.draw.circle(screen,COLOR,spot,radius)“加載圖片”importpygamepygame.init()screen=pygame.display.set_mode([800,600])pygame.display.set_caption("畫點")GREEN=(0,255,0)#RGB色彩模式,每段0~255radius=10keep_going=Truewhilekeep_going:foreventinpygame.event.get():
ifevent.type==pygame.QUIT:keep_going=False
pygame.draw.circle(screen,GREEN,(100,100),radius)pygame.display.update()pygame.quit()3ifevent.type==pygame.MOUSEBUTTONDOWN:
spot=event.pos
screen.blit(pic,spot)pic=pygame.image.load("smile.png")
#圖片需要和文件在同一目錄#點擊畫笑臉(加載圖片),書寫時注意大小寫importpygame#導入模塊importrandompygame.init()#初始化screen=pygame.display.set_mode([800,600])pygame.display.set_caption("畫笑臉")pic=pygame.image.load("smile.png")#圖片需要和文件在同一目錄keep_going=Truewhilekeep_going:foreventinpygame.event.get():
ifevent.type==pygame.QUIT:keep_going=Falseifevent.type==pygame.MOUSEBUTTONDOWN:spot=event.pos#獲取鼠標點擊位置
screen.blit(pic,spot)pygame.display.update()pygame.quit()笑臉爆炸笑臉爆炸基本知識核心功能導入初始化加載圖片響應點擊隨機大小反彈功能顯示設置事件處理圖片運動游戲循環(huán)游戲退出彈球?速度與運動?位置參數(shù)、速度參數(shù)關鍵1反彈判斷關鍵2設計擋板對象關鍵3importpygame#導入模塊pygame.init()#初始化screen=pygame.display.set_mode([800,600])pygame.display.set_caption("彈球")keep_going=Truepic=pygame.image.load("ball.png")BLACK=(0,0,0)picx=0picy=0whilekeep_going:#Gameloopforeventinpygame.event.get():ifevent.type==pygame.QUIT:keep_going=False
picx+=1picy+=1
screen.fill(BLACK)#用來擦除之前繪制的圖形
screen.blit(pic,(picx,picy))pygame.display.update()pygame.quit()#如果圖片不透明要加上這兩句,以免邊角出現(xiàn)黑邊#colorkey=pic.get_at((0,0))#pic.set_colorket(colorkey)“運動小球”“時間控制”importpygame#導入模塊pygame.init()#初始化screen=pygame.display.set_mode([800,600])pygame.display.set_caption("彈球")keep_going=Truepic=pygame.image.load("ball.png")picx=0picy=0BLACK=(0,0,0)timer=pygame.time.Clock()#引入計時器whilekeep_going:#Gameloopforeventinpygame.event.get():ifevent.type==pygame.QUIT:keep_going=Falsepicx+=1picy+=1screen.fill(BLACK)screen.blit(pic,(picx,picy))pygame.display.update()
timer.tick(60)#每秒60幀pygame.quit()“反彈研究”speedxspeedy與左/右邊界接觸時,speedx_____________,speedy_____________與上/下邊界接觸時,speedx_____________,speedy_____________*(-1)不變*(-1)不變“反彈研究”importpygamepygame.init()screen=pygame.display.set_mode([800,600])pygame.display.set_caption("彈球")keep_going=Truepic=pygame.image.load("ball.png")picx=0picy=0BLACK=(0,0,0)timer=pygame.time.Clock()speedx=5speedy=5whilekeep_going:#Gameloopforeventinpygame.event.get():ifevent.type==pygame.QUIT:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 100以內加減法豎式計算評價試題訓練題大全附答案
- 三年級數(shù)學兩位數(shù)乘一位數(shù)計算題能力檢測訓練題帶答案
- 山東省萊州市九年級歷史上冊 10 資本主義時代的曙光說課稿 新人教版
- 用向量法研究三角形性質說課稿-2023-2024學年高一下學期數(shù)學人教A版(2019)必修第二冊
- 出售公司股權合同范例
- 塑膠模具合同范本
- 售糧合同范例
- 低價倉庫合租合同范本
- 農戶產銷合作合同范例
- 勞務公司協(xié)議合同范例
- 小學六年級數(shù)學上冊《簡便計算》練習題(310題-附答案)
- 2024年河南省《輔警招聘考試必刷500題》考試題庫及答案【全優(yōu)】
- -情景交際-中考英語復習考點
- 安全隱患報告和舉報獎勵制度
- 地理標志培訓課件
- 2023行政主管年終工作報告五篇
- 2024年中國養(yǎng)老產業(yè)商學研究報告-銀發(fā)經濟專題
- 公園衛(wèi)生保潔考核表
- 培訓如何上好一堂課
- 高教版2023年中職教科書《語文》(基礎模塊)下冊教案全冊
- 2024醫(yī)療銷售年度計劃
評論
0/150
提交評論