這節將介紹PyGame的基礎架構。并學習如何在PyGame里繪制各種幾何圖形和顯示加載圖片。
01.應用框架
上一節的示例程序里,我們用到一個PyGame的應用程序框架。這是一個基礎框架,利用它我們可以很輕松的添加各類圖型繪制,鍵盤鼠標輸入處理和各類邏輯管理。一句話,它是一切游戲設計的基礎框架。我們必須把它讀懂,再往下學習。
02.圖元繪制
PyGame可以繪制各種幾何圖型、文字和圖片。下面我們分別介紹它們是如何使用的。
幾何圖元
#繪制線pygame.draw.line(畫布,顏色,起始點,終止點,線粗細)#繪制矩陣pygame.draw.rect(畫布,顏色,(矩陣左上角坐標,矩陣長寬),線粗細)#繪制圓形pygame.draw.circle(畫布,顏色,中心點坐標,半徑,線粗細)#繪制橢圓pygame.draw.ellipse(畫布,顏色,(矩陣坐標),線粗細)#繪制多邊形pygame.draw.polygon(畫布,顏色,[頂點列表],線粗細)#繪制連續線段pygame.draw.lines(畫布,顏色,是否封閉,[頂點列表],線粗細)
文字顯示
在PyGame顯示文字比劃圖形復雜點。他分為四個步驟:
1、創建字體對像。創建字體對象有兩種方法,一種是直接指定使用系統自帶字體(字體文件名),另一種是加載外部字體文件。這兩種方法差不多。做成軟件的話,建議第二種方法。
#方法1:指定系統自帶黑體字庫#字體大小為32個像素font = pygame.font.SysFont("SimHei",32) #方法2:指定外部黑體字庫#字體大小為32個像素#必須指定字體文件SimHei.ttf字體文件所在的路徑。font = pygame.font.Font("SimHei.ttf",32)
2、調置字體格式。
#是否要文字加粗font.set_bold(True) #是否要文字斜體font.set_italic(True) #是否要下劃線font.set_underline(True)
3、設置文字顯示位置
#獲取文字對象尺寸大小text_pos = text_obj.get_rect() #設置文本顯示屏幕坐標,文本的中心點。text_pos.center = (300,100)
4、繪制文字
#在設定區域繪制文字canvas2d.blit(text_obj,text_pos);
圖片顯示
pygame支持兩種類型圖片顯示。一種是不透明的位圖(JPG和BMP),一種有透明的位圖(PNG和GIF)。這兩種圖片使用方法是一樣的。
#加載圖片文件img01 = pygame.image.load("boy.jpg") #獲得圖片長和寬像素值,取其一半img01_w = img01.get_width()/2img01_h = img01.get_height()/2 #縮放圖片img01 = pygame.transform.smoothscale(img01,(int(img01_w),int(img01_h)))#屏幕(10,10)位置顯示圖片canvas2d.blit(img01,(10,10))
03.綜合示例
下面,我們寫一個完整的程序,演示如何用PyGame繪制幾何圖型、文字和圖片。
#包含pygame模塊import pygame#包含pygame.locals模塊,包含了 Pygame 定義的各種常量import pygame.locals#包含pygame.locals模塊import pygame.locals #包含sys系統操作模塊import sys #初始化pygamepygame.init() #設置應用程序窗口大小,返回畫布canvas2d = pygame.display.set_mode((800,600)) #設置應用程序窗口標簽名稱pygame.display.set_caption('02.繪制圖元')#========================================#設置使用黑體字font = pygame.font.SysFont("SimHei",30) #是否要文字加粗font.set_bold(True) #是否要文字斜體font.set_italic(True) #是否要下劃線font.set_underline(True)#========================================#加載不透明圖片文件img01 = pygame.image.load("zs.jpg") #獲得圖片長和寬像素值,取其四分之一img01_w = img01.get_width()/4img01_h = img01.get_height()/4 #縮放圖片img01 = pygame.transform.smoothscale(img01,(int(img01_w),int(img01_h)))#========================================= #開啟游戲循環while True: #輪詢窗口事件 for event in pygame.event.get(): #如果獲得關閉程序事件 if event.type== pygame.locals.QUIT: pygame.quit() #退出pygame sys.exit() #銷毀程序 #繪制幾何圖型 #繪制線 pygame.draw.line(canvas2d,(255,0,0),(10,100),(100,100),4) #繪制矩陣 pygame.draw.rect(canvas2d,(0,255,0),(120,50,200,100),2) #繪制圓形 pygame.draw.circle(canvas2d,(0,0,255),(400,100),50,2) #繪制橢圓 pygame.draw.ellipse(canvas2d,(255,255,0),(500,75,200,50),1) #繪制多邊形 plist1 = [(30,200),(30,300),(100,300)] pygame.draw.polygon(canvas2d,(0,255,255),plist1,2) #繪制連續線段 plist2 = [(230,200),(230,300),(320,300)] pygame.draw.lines(canvas2d,(255,0,255),False,plist2,2) #繪制文字 #把文字渲染到文本對象 #設置文字前景色和背景色 text_obj = font.render('PyGame顯示字體!',True,(255,128,0),(128,128,128)) #獲取文字對象尺寸大小 text_pos = text_obj.get_rect() #設置文本顯示屏幕坐標,文本的中心點。 text_pos.center = (200,400) #繪制文字 canvas2d.blit(text_obj,text_pos); #屏幕(400,300)位置顯示不透明圖片 canvas2d.blit(img01,(400,300)) #窗口顯示內容更新 pygame.display.update()
程序運行效果
關注我們