pygame模塊參數匯總(python游戲編程)


一、Helloworld

1 pygame.init()     #初始函數,使用pygame的第一步;
2 pygame.display.set_mod((600,500),0,32)     #生成主屏幕screen;第一個參數是屏幕大小,第二個0表示不使用特性,可用FULLSCREEN,RESIZEBLE,NOFRAME,DOUBLEBUF(雙緩沖,使用時需用pygame.display.flip()來刷新屏幕)等替換,32表示色深;
3 pygame.display.set_caption("string")     #命名
4 pygame.display.update()        #刷新
5 pygame.display.list_modes()        #查看本地顯示器支持的分辨率;
6 screen.fill(0,0,0)        #填充

二、繪圖

pygame.draw.rect(surface,color,Rect,width=0) 畫一個矩形,Rect為兩個坐標元組的元組

(一)rect(矩形)參數屬性

 1 r.left         左邊x坐標的整數值
 2 r.right        右邊x坐標的整數值
 3 r.top         頂部y坐標的整數值
 4 r.bottom      底部y坐標的整數值
 5 r.centerx      中央x坐標整數值
 6 r.centery      中央y坐標整數值
 7 r.width        寬度
 8 r.height       高度
 9 r.size         即元組(width,height)
10 r.topleft      (left,top)
11 r.topright     (right,top)
12 r.bottomleft   (left,bottom)
13 r.bottomright  (right,bottom)
14 r.midleft      (left,centery)
15 r.midright     (right,centery)
16 r.midtop       (centerx,top)
17 r.midbottom    (centerx,bottom)

(二)其他形狀

1 pygame.draw.polygon(surface,color,pointlist,width=0)    多邊形
2 pygame.draw.circle(surface,color,pos,radius,width=0)      圓
3 pygame.draw.ellipse(surface,color,Rect,width=0)         橢圓
4 pygame.draw.arc(surface,color,Rect,start_angle,stop_angle,width=1) 圓弧
5 pygame.draw.line(surface,color,start_pos,end_pos,width=1)    直線;
6 pygame.draw.lines(surface,color,closed,pointlist,width=1)     closed為一bool值,表示是否封閉;
7 pygame.draw.aaline(surface,color,start_pos,end_pos,width=1)    一根平滑的線;
8 pygame.draw.aalines(surface,color,closed,pointlist,width=1)    一系列平滑的線;

(三)font(以圖形模式輸出文本)

1 pygame.font.Font("字體","字號",*)
2 my_font.render(text,True,(255,255,255))        使用已有的文本創建一個位圖image,返回值為一個image;對於位圖可用get_height(),get_width()的方法獲得高與寬;True表示是否抗鋸齒,第三個為字體顏色,還可以有第四個為背景色,沒有時就為默認的透明;
3 Font()       使用的是字體文件,要使用系統中的字體需用SysFont(),但一些中文擴展的字體不是很好用。
4 screen.blit(image,(100,100))             將位圖繪制到屏幕上,screen為建立的主屏;
5 pygame.font.get_fonts()           查看當前系統所有可使用的字體

三、圖片處理

pygame支持的圖片格式有:JPEG,PNG,GIF,BMP,PCX,TGA,TIF,LBM,PBM,XPM

 1 pygame.image.load("圖片路徑").conver()        將圖片處理為surface對象,如果使用conver_alpha()則保留了Alpha通道信息(可透明),使用時用blit()函數來添加到顯示屏
 2 pygame.Surface((250,250),flags,depth)        創建一個surface對象,如果不指定尺寸則會創建和屏幕一樣大小;flags為可選,有SRCALPHA(保留Alpha通道)、HWSURFACE(優化)兩個選擇,depth為色深;
 3 screen.subsurface((0,0),(80,80))           子表面對象;
 4 screen.set_at(pos,color)                   設置一個像素的色彩;
 5 screen.get_at(pos)                        獲取某一像素的色彩,不過此操作的反應比較慢;
 6 pygame.transform.scale(surface,(width//2,height//2)    縮放圖片
 7 pygame.transform.smoothscale(surface,(width,height)    縮放圖片,比scale慢,但效果更好;
 8 pygame.sprite.Group()           精靈組,一個簡單的實體容器;
 9 pygame.sprite.add(sprite)        添加精靈對象;
10 pygame.sprite.update(ticks)        
11 pygame.sprite.draw(screen)
12 pygame.sprite.collide_rect(arrow,dragon)    沖突
13 screen.set_clip(0,400,200,600)    設定裁剪區域;
14 screen.get_clip()              獲得裁剪區域

四、事件event

1 pygame.event.get()    獲取事件的返回值,使用event.type == 進行區分
2 pygame.event.wait()    等待發生一個事件才會繼續下去;
3 pygame.event.poll()    會根據現在的情形返回一個真實的事件
4 pygame.event.set_blocked(事件名)    過濾
5 pygame.event.set_allowed() 允許事件

 自定義事件

1 my_event = pygame.event.Event(KEYDOWN,key=K_SPACE,mod=0,unicode=u' ')
2 pygame.event.post(my_event)

pygame所有事件type

 1 QUIT             退出;
 2 ACTIVEEVENT     pygame被激活或隱藏;
 3 KEYDOWN         區分不同鍵 event.key == pygame.K_a,pygame使用keys=pygame.key.get_pressed()來輪詢鍵盤接口,返回的是所有按下鍵值的元組;用keys[K_b]方式來核對鍵值;K_b也可以是鍵值Unicode碼;如果mod & KMOD_CTRL為真的話表示同時按下Ctrl鍵;key.get_mods()組合鍵,key.set_repeat()重復事件;key.name()接受鍵值返回鍵名;
 4 KEYUP            按鍵放開
 5 MOUSEMOTION     含event.pos,event.rel,event.buttons屬性,用mouse_x,mouse_y = event.pos進行確認,pygame.mouse.get_pos()返回鼠標的當前位置,pygame.mouse.get_rel()獲取鼠標相對移動,pygame.mouse.get_pressed()返回按鈕狀態數組(鼠標三個鍵的狀態)
 6 mouse.set_visible(False) 使鼠標不可見;
 7 event.set_grab(True)     使鼠標不會跑出窗口
 8 mouse.set_pos()          設置鼠標位置
 9 mouse.get_focused()      如果鼠標在pygame窗口內有效,返回True
10 mouse.set_cursor()       設置鼠標默認光標式樣;
11 mouse.get_cursor()       獲取鼠標默認光標式樣;
12 MOUSEBUTTONUP      鼠標放開
13 MOUSEBUTTONDOWN    鼠標按下
14 JOYAXISMOTION      x手柄移動
15 JOYBALLMOTION      所有手機移動
16 JOYHATMOTION       hat手柄移動
17 JOYBUTTONUP        手柄按鍵放開
18 JOYBUTTONDOWN      手柄按鍵按下
19 VIDEORESIZE        窗口縮放;
20 VIDEOEXPOSE        窗口部分公開;
21 USEREVENT          觸發了一個用戶事件;

五、異常捕捉

1 try:
2     screen = pygame.display.set_mode(SCREEN_SIZE)
3 except pygame.error,e:
4     print("Can't create the display :-(")
5     print(e)
6     exit()

 六、時間

1 clock = pygame.time.Clock()    初始化一個clock對象
2 clock.tick()     返回一個上次調用的時間,以毫秒為單位
3 clock.tick(30)    控制游戲繪制的最大幀率為30

 七、聲音

(一)sound對象

pygame.mixer.Sound("文件")  讀取聲音對象sound,格式只有wav和ogg兩種;

對象方法:

 1 fadeout()               淡出時間,可用參數為毫秒;
 2 get_lengh()            獲得聲音文件長度,以秒為單位;
 3 get_num_channels()        聲音要播放的次數;
 4 play(loop,maxtime)        對讀取的聲音對象可執行播放操作,loop為-1表示無限循環,1表示重復兩次,maxtime表示多少毫秒后結束;返回一個Channel對象,失敗則返回None;
 5 set_volum()            設置音量;
 6 stop()                 停止播放;
 7 pygame.mixer.music          背景音樂處理方法
 8 pygame.mixer.music.load()    加載文件可為mp3和ogg格式;
 9 pygame.mixer.music.play()    播放
10 pygame.mixer.music.stop()    停止,還有pause()和unpause()方法

(二)Channels對象

pygame.mixer.get_num_channels()    獲取當前系統可同時播放的聲道數;pygame中默認為8;

對象方法:

 1 fadeout()        設置淡出時間
 2 get_busy()       如果正在播放,返回True;
 3 set_endevent()    設置播放完畢時要做的event;
 4 get_endevent()    獲取播放完畢時要做的event,如果沒有則返回None;
 5 get_queue()      獲得隊列中的聲音,如果沒有則返回None;
 6 set_volume()      設置音量;
 7 get_volume()      獲得音量;
 8 pause()          暫停播放;
 9 unpause()        繼續播放;
10 play()           播放;
11 stop()           停止播放;
12 queue()          將一個Sound對象加入隊列,在當前聲音播放完畢后播放;
13 set_num_channels() 自定義聲道數;

(三)music對象

pygame.mixer.pre_init(frequency,size,stereo,buffer) 聲音系統初始化,第一個為采樣率,第二個為量化精度,第三為立體聲效果,第四為緩沖;

對象方法:

1 fadeout()        設置淡出時間
2 set_endevent()    設置播放完畢后事件
3 get_endevent()    獲取播放完畢后進行的事件;
4 set_volume()      設置音量;
5 get_volume()      獲取音量;
6 load()           加載音樂文件;
7 rewind()         從頭開始播放;
8 get_pos()         獲得當前播放的位置,以毫秒為單位;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM