一、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() 獲得當前播放的位置,以毫秒為單位;
