Python程序設(shè)計(含視頻分析) 課件 第10章 游戲編程_第1頁
Python程序設(shè)計(含視頻分析) 課件 第10章 游戲編程_第2頁
Python程序設(shè)計(含視頻分析) 課件 第10章 游戲編程_第3頁
Python程序設(shè)計(含視頻分析) 課件 第10章 游戲編程_第4頁
Python程序設(shè)計(含視頻分析) 課件 第10章 游戲編程_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第10章游戲編程10.1引言第10章游戲編程10.1引言

pygame是一個利用SDL庫編寫的游戲庫,使用它可以開發(fā)具有全部特性的游戲和多媒體軟件。它極其輕便且可以運行在幾乎所有的平臺和操作系統(tǒng)上,不僅提供了針對圖形和位圖的繪制函數(shù),還提供了用于用戶輸入,處理音頻播放和監(jiān)控鼠標和鍵盤服務(wù)。pygame一般用于2D游戲的開發(fā)。對于新手而言,從簡單的2D入手是個好的選擇。10.2pygame安裝第10章游戲編程10.2pygame安裝安裝pygame主要有兩種方法:通過pip安裝:pip工具是python用于安裝軟件包的工具。在windows命令行狀態(tài)下輸入:通過IDE安裝。要檢查pygame是否已正確安裝,可以在IDE的解釋器中輸入以下命令:importpygame,然后回車。如果該命令成功運行且未引發(fā)任何錯誤,則表明已經(jīng)成功安裝了pygame。pipinstallpygame10.2pygame安裝pygame中有很多模塊。下面是常用模塊表:模塊名功能pygame.cdrom訪問光驅(qū)pygame.cursors加載光標pygame.display訪問顯示設(shè)備pygame.draw繪制形狀、線和點pygame.event管理事件pygame.font使用字體pygame.image加載和存儲圖片pygame.joystick使用游戲手柄或者類似的東西pygame.key讀取鍵盤按鍵pygame.mixer聲音pygame.mouse鼠標pygame.movie播放視頻pygame.music播放音頻pygame.overlay訪問高級視頻疊加pygame.rect管理矩形區(qū)域pygame.sndarray操作聲音數(shù)據(jù)pygame.sprite操作移動圖像pygame.surface管理圖像和屏幕pygame.surfarray管理點陣圖像數(shù)據(jù)pygame.time管理時間和幀信息pygame.transform縮放和移動圖像10.3pygame基礎(chǔ)知識第10章游戲編程10.3pygame基礎(chǔ)知識10.3.1坐標pygame坐標系為傳統(tǒng)的笛卡爾坐標系統(tǒng)。原點(0,0)位于窗口左上角,X軸自左向右,Y軸自上向下,單位為像素。10.3pygame基礎(chǔ)知識10.3.2顏色pygame使用RGB顏色系統(tǒng),用于描述顏色的類是pygame.color。該類有r、g、b、a四個屬性分別表示RGB顏色的紅、綠、藍和透明度四個分量。pygame還提供了一個命名顏色的列表THECOLORS:frompygame.colorimportTHECOLORSpygame.draw.circle(screen,THECOLORS[“red”],[100,100],30,0)10.3pygame基礎(chǔ)知識10.3.3字體pygame可以直接調(diào)用系統(tǒng)字體,也可以調(diào)用TTF字體。pygame.font為操作和表示字體的模塊。使用系統(tǒng)自帶字體:使用自己的TTF字體:myfont=pygame.font.SysFont(‘a(chǎn)rial’,16)myfont=pygame.font.Font(‘my_font.ttf’,16)10.4第一個pygame程序:簡單的pie游戲第10章游戲編程10.4第一個pygame程序:簡單的pie游戲pie游戲是一個非常簡單的游戲,玩家獲勝時有一個小獎品。游戲時以任意順序按下1、2、3和4。當按下每個數(shù)字時,就會繪制對應(yīng)的餅塊。當所有4個餅塊完成之后,餅塊會改變顏色。游戲界面如圖所示:10.4第一個pygame程序:簡單的pie游戲10.4.1使用pygame使用pygame的第一步是將pygame庫導入到python程序中,以便在程序中使用它:導入pygame中所有常量。這一步非必選,但操作后會讓代碼更整潔易讀。importpygamefrompygame.localsimport*10.4第一個pygame程序:簡單的pie游戲10.4.2初始化并創(chuàng)建窗口初始化pygame:獲取對顯示系統(tǒng)的訪問,并創(chuàng)建一個窗口并設(shè)置大小。注意窗口寬度和高度要放在圓括號中。pygame.init()screen=pygame.display.set_mode((600,500))10.4第一個pygame程序:簡單pie游戲給窗口添加標題:給窗口填充顏色并更新窗口:pygame.display.set_caption("ThePieGame-Press1,2,3,4")screen.fill((0,0,200))pygame.display.update()10.4第一個pygame程序:簡單pie游戲10.4.3打印文本首先創(chuàng)建一個字體:使用None參數(shù)會使用默認pygame字體,60為字體大小。在Pygame中繪制文本并不是快速繪制到屏幕上,而是渲染到一個平面,然后再將其繪制到屏幕上。建議先在內(nèi)存中創(chuàng)建文本平面(或圖像),然后再將文本當作一個圖像來繪制。myfont=pygame.font.Font(None,60)10.4第一個pygame程序:簡單pie游戲要繪制文本,一般先清楚屏幕,然后使用screen.blit()繪制文本平面到指定區(qū)域,最后刷信顯示。10.4第一個pygame程序:簡單pie游戲10.4.4事件循環(huán)每個游戲都有一個事件循環(huán),也稱主循環(huán)。主循環(huán)一般就做三件事:處理事件更新游戲狀態(tài)在屏幕上繪制游戲狀態(tài)事件循環(huán)用偽代碼表示如右所示:whileTrue:foreventinpygame.event.get():

處理事件event更新游戲狀態(tài)在屏幕上繪制游戲狀態(tài)10.5事件處理第10章游戲編程10.5事件處理pygame中完整的事件列表如下:從上表得知,pygame支持游戲手柄。事件產(chǎn)生途徑參數(shù)QUIT用戶按下關(guān)閉按鈕noneACTIVEEVENTPygame被激活或者隱藏gain,stateKEYDOWN鍵盤被按下unicode,key,modKENUP鍵盤被放開key,modMOUSEMOTION鼠標易懂pos,rel,buttonsMOUSEBUTTONUP鼠標按下pos,buttonMOUSEBUTTONDOWN鼠標放開pos,buttonJOYAXISMOTION游戲手柄軸移動joy,axis,valueJOYBALLMOTION游戲手柄球移動joy,axis,valueJOYHATMOTION游戲手柄帽移動joy,axis,valueJOYBUTTONUP游戲操縱桿按鈕按下joy,buttonJOYBUTTONDOWN游戲操縱桿按鈕松開joy,buttonVIDEORESIZEPygame窗口縮放size,w,hVIDEOEXPOSEPygame窗口部分公開noneUSEREVENT用戶自定義事件code10.5事件處理10.5.1鍵盤事件鍵盤事件包括KEYUP和KEYDOWN。如果要處理按鍵按下事件時,響應(yīng)KEYDOWN事件;要處理按鍵松開事件時,響應(yīng)KEYUP事件。一般游戲中使用Escape鍵作為默認的游戲退出鍵。響應(yīng)參考代碼如下:whileTrue: foreventinpygame.event.get(): ifevent.type==QUIT: sys.exit() elifevent.type==KEYDOWN: ifevent.key==pygame.K_ESCAPE: sys.exit()10.5事件處理10.5.2鼠標事件pygame支持的鼠標事件包括:MOUSEMOTION、MOUSEBUTTONUP和MOUSEBUTTONDOWN。當鼠標事件發(fā)生時,有時還需要通過傳進來的事件參數(shù)讀取事件屬性。10.5事件處理對于MOUSEMOTION事件,屬性是event.pos、event.rel和event.buttons。使用這些屬性的參考代碼如下:foreventinpygame.event.get(): ifevent.type==MOSUEMOTION: mouse_x,mouse_y=event.pos move_x,move_y=event.rel10.5事件處理對于MOUSEBUTTONDOWN和MOUSEBUTTONUP這兩個事件,屬性是event.pos和event.buttons。使用這兩個屬性的參考代碼:foreventinpygame.event.get(): ifevent.type==MOSUEBUTTONDOWN: mouse_down=event.button mouse_down_x,mouse_down_y=event.pos elifevent.type==MOUSEBUTTONUP: mouse_up=event.button mouse_up_x,mouse_up_y=event.pos10.5事件處理10.5.3設(shè)備輪詢pygame中的事件處理系統(tǒng)并非檢測用戶輸入的唯一方法,還可以通過輪詢輸入設(shè)備,來查看用戶是否與程序交互。10.5事件處理pygame使用pygame.key.get_pressed()來輪詢鍵盤接口,該方法返回布爾值列表,在列表中每個鍵都有一個True或False的標志。通過鍵常量值來索引所得到的布爾值列表。通過輪詢所有鍵,也可以檢測多個鍵的按下。如檢測Escape鍵的代碼:keys=pygame.key.get_pressed()ifkeys[K_ESCAPE]: sys.exit()10.5事件處理pygame還可以直接輪詢鼠標。此時需要了解3個函數(shù):pygame.mouse.get_pos():返回鼠標當前位置的x和y值對pygame.mouse.get_rel():返回鼠標的相對移動距離pygame.mouse.get_pressed():讀取鼠標按鈕,返回按鈕狀態(tài)的一個數(shù)組pos_x,pos_y=pygame.mouse.get_pos()rel_x,rel_y=pygame.mouse.get_rel()button1,button2,button3=pygame.mouse.get_pressed()10.6基本繪制函數(shù)第10章游戲編程10.6基本繪圖函數(shù)常用繪圖方法:1)pygame.draw.line(Surface,color,start_pos,end_pos,width):此方法用于繪制一條線段;2)pygame.draw.aaline(Surface,color,start_pos,end_pos,blend):此方法用于繪制一條抗鋸齒的線;3)pygame.draw.lines(Surface,color,closed,pointlist,width):此方法用于繪制一條折線;4)pygame.draw.rect(Surface,color,Rect):此方法用于繪制一個矩形;5)pygame.draw.rect(Surface,color,Rect,width):此方法用于繪制一個矩形框;6)pygame.draw.ellipse(Surface,color,Rect):此方法用于繪制一個橢圓;7)pygame.draw.ellipse(Surface,color,Rect,width):此方法用于繪制一個橢圓框;8)pygame.draw.polygon(Surface,color,pointlist,width):此方法用于繪制一個多邊形;9)pygame.draw.arc(Surface,color,Rect,start_angle,stop_angle,width):此方法用于繪制一條弧線;10)pygame.draw.circle(Surface,color,Rect,radius):此方法用于繪制一個圓;10.7位圖和動畫第10章游戲編程10.7位圖和動畫pygame中可以使用pygame.Surface和pygame.image模塊加載和繪制位圖,還可以使用pygame.spirit模塊來實現(xiàn)動畫效果。10.7.1位圖pygame可以通過pygame.image.load()函數(shù)處理JPG、PNG、GIF、BMP、PCX、TGA、TIF、LBM、PBM、PGM、PPM、XMP等格式的位圖文件。space=pygame.image.load(‘space.png’).convert()10.7位圖和動畫在pygame中,位圖也叫做Surface?!捌聊弧睂ο缶褪且粋€Surface。當調(diào)用pygame.display.set_mode()創(chuàng)建pygame窗口時,返回的就是一個Surface對象。pygame使用Surface對象來繪制位圖。Surface類有一個名為blit()的函數(shù)用來繪制位圖。它是把一塊內(nèi)存從一個位置復制到另一個位置的繪制方法。使用Surface.get_size()可以獲取位圖的寬度和高度,也可以分別使用Surface.get_width()和Surface.get_height()獲取高度和寬度。使用pygame.transform模塊可以對位圖進行縮放、翻轉(zhuǎn)及其他操作10.7位圖和動畫10.7.2動畫pygame.spirite模塊可以實現(xiàn)動畫,但并不是完整的解決方案,其功能較少,但它是pygame動畫學習的起點。pygame.spirite包含一幅圖像(image)和一個位置(rect),編寫動畫代碼要圍繞這兩個屬性。如果想讓動畫根據(jù)時間一張一張播放,需要加入定時的代碼。10.8播放音頻第10章游戲編程10.8播放音頻pygame播放音頻有兩個方法:1)pygame.mixer.Sound(filename):該方法返回一個Sound對象,調(diào)用它的play()方法,即可播放較短的音頻文件。主要用它來播放音效。2

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論