NO IMAGE

最近總覺得自己在道上開始跑偏了,但是那又怎麼樣呢?即便我是做資料探勘的,但是我還是覺得python真的好有意思,我接觸到了python的遊戲模組,發現它是如此的神奇,神奇如我,神奇的存在,下面就開始我們美妙的旅程了吧

因為python 的game模組只能安裝在32位python上,首先要檢測一下我們安裝的python是多少位的。在IDEL上敲

import platform

platform.architecture

即可檢視安裝在機器上python是多少位,雖然是64位的window的系統,但是仍然可以安裝32位的python的喲

如果機器上還有別的版本的python,可以通過設定登錄檔的一些設定來改變預設執行時的python版本

執行,regedit,找到相關檔案,這裡有些忘了,回頭回來填哈

這幾天接觸到的pgame的模組主要有用於控制顯示的display模組,用於影象控制的surface模組、使用者畫出各種圖形形狀的draw模組以及對surface物件進行操作,比如翻轉、剪裁等操作的transform模組、pygame中內嵌的矩形物件,這裡不同於畫圖中的形狀,更重要的是rect物件可以存放圖形的矩形座標。還有font模組,主要是對文字一些設定,還有mouse關於滑鼠的一些操作,比如獲得滑鼠指標的座標,還有在互動過程中的事件處理操作。

這裡我將在針對我瞭解到的幾個方面來分別介紹模組中的相關方法

display模組

生成windows視窗,pygame.display.set_mode(resolution=(0,0),flags=0,depth=0)

返回的也是一個surface物件,resolution可以控制生成windows視窗的大小,flags代表的是擴充套件選項,depath不推薦設定

flags標誌位控制你想要什麼樣的顯示屏,主要有下面幾個,這幾個量相當於是全域性的常量,使用的時候可以from pygame.locals import *匯入

pygame.FULLSCREEN,控制全屏,0或者1來控制

pygame.HWSURFACE 控制是否進行硬體加速

pygame.RESIZABLE 控制視窗是否可以調節大小

pygame.display.get_caption()獲得視窗的標題

pygame.display.set_caption(title)設定視窗的標題

對生成的windows視窗設定標題 pygame.display.set_caption(“”)傳入的則為字串,可以利用字串來設定視窗上的標題

pygame.display.flip()則是由於雙緩衝的原因,需要將整個display的surface物件更新到螢幕上去

surface模組

surface物件是用於表示影象的影象,只要指定尺寸,就可以利用,可以通過載入圖片或者是可以自動建立一個surface物件

載入影象返回的也是一個surface物件,這裡可能就會用到image模組

pygame.surface((width,height),flag=0,depth =0,mask = None)

surface.copy()返回撥用例項的副本,也是一個surface物件

pygame.surface.blit(sourse,dest,area = None,special_flag=0)這裡的surface不是模組名而是一個建立好了的surface例項,比如之前建立的screen的surface物件

方法表示將一個surface物件畫在另一個surface物件之上,sourse為要畫的surface物件,表示要將哪一個surface物件畫在呼叫的例項上,而dest則是要畫在例項surface物件的什麼位置,如果這個引數傳入的是一個rect物件,則會取rect物件的左上角的點作為要開始畫的地方,而與rect物件的大小是無關的,後面的area則說明是畫其中的一部分,還是完整的畫上去。這個引數也可以傳一個rect物件

pygame.surface.fill(color)

對surface物件填充某一種顏色,可以主要是對背景可以實現填充

surface.get_rect()返回的是呼叫例項即為surface物件的rect物件

surface.subsurface(Rect)

傳入一個矩形物件,為了返回例項surface物件中矩形的一部分,新的surface物件將繼承他的父親,顏色以及透明度設定上都繼承了它的父物件

surface.set_at((x,y),color)設定某一畫素位置的顏色

surface.get_at((x,y))獲得某一畫素位置的顏色

surface.get_width()返回surface物件的寬度

surface.get_height()返回surface物件的高度

mouse模組主要是針對於滑鼠事件進行控制

pygame.mouse.get_pos()獲得滑鼠指標當前的位置,返回的值為元祖型別,即為(x,y),返回值與顯示屏的Top-Left值是息息相關的。

滑鼠事件中有pos成員,代表的是按下滑鼠或者是釋放滑鼠的時候記錄下當前滑鼠指標的位置,以(x,y)

的形式返回,而滑鼠事件的button屬性則可以分別取值為1,2, 3,4,當button=1時的時候代表的是按下滑鼠左鍵,當button=2的時候代表的是按下滑鼠右鍵,當button =3的時候代表的是按下滑鼠右鍵,當button =4的時候代表的是按下滑鼠滾輪

pygame.mouse.get_rel()返回的是滑鼠距離上一次次在橫縱軸方向的位移大小

pygame.mouse.set_visible(bool)設定滑鼠是否是可見的

pygame.mouse.get_pressed()返回一個三元組,都是bool型別的取值來代表使用者按下的是(button1,button2,button3)中的哪一個鍵

pygame.event模組主要是人機互動時所產生的事件進行控制,移動滑鼠會觸犯相關的事件,按下滑鼠左鍵也會觸發相關的事件,按下鍵盤上的某一些鍵也會觸發相關的事件。這裡列舉一些比較常用的事件

事件型別         基於事件型別的成員

QUIT                  None

ACTIVEVENT  gain ,state

KEYDOWN      unicode ,key , mode

KEYUP             key,mode

MOUSEMOTION      pos,rel,bottons

MOUSEBUTTONDOWN     pos,button

MOUSEBUTTONUP           pos,button

pygame.event.get()返回的是一個事件列表,可以通過迭代不斷從列表中獲得事件,根據事件的型別分別進行處理

預設是無引數的,但是也可以傳入引數,比如傳入某一種事件型別,返回值就是屬於這一型別的事件列表,也可以傳入一個列表,列表中是需要返回的多個事件型別,返回值也會相應的返回發生了的事件

生成一個特定的時間

pygame.event.Event(type,dict)

pygame.event.Event(type,**attribute)這兩種方法都返回指定型別和屬性的時間,可以將屬性放在列表中,也可以中**來表示多個不定量的屬性

pygame.rect模組,Rect物件是用來儲存矩形物件的,Rect物件有一些虛擬屬性,比如top.left,bottom.right這些是用來固定矩形的位置的,還有size,width,height,這些是描述矩形大小,寬高分別是多大,center為矩形的中心點,其實就是關於橫縱座標的二元組,因此又有centerx,centery兩個屬性

rect,move(speed),表示是rect物件在橫軸和縱軸方向上移動的標杆,其實就是速度,通常獲得surface物件的rect物件,可以利用rect物件的move方法來使得surface物件進行移動

生成一個Rect物件

pygame.Rect(left,top,width,height)或者是pygame.Rect((left,top),(width,height)),left,top其實就是矩形左上點的橫縱座標,用來控制生成rect物件的位置,而後面的寬度和高度則是用來控制生成矩形的大小尺寸的,也可以傳入一個object物件從而生成rect物件

pygame.transform模組

pygame..transform.flip(surface,xbool,ybool),第一個引數控制的是需要翻轉的物件,而後面兩個引數則是控制是在水平方向翻轉還是在垂直方向進行翻轉,返回的是翻轉後的surface物件

pygame.transform.smoothscale(surface,(width,height),DestSurface = None)返回的是平滑放大或者是縮小後的surface物件,第一個引數就是需要放大或者是縮小的物件,後面的我們要放大縮小後達到的size

pygame.transform.rotate(surface,angle)返回一個旋轉後的surface物件,預設是按照逆時針進行旋轉的,當angle小於0時則代表的順時針進行旋轉

pygame.transform.chop(surface,rect)返回裁剪的部分,rect也表示要裁剪的區域

pygame.font模組

pygame.font.Font(filename,size)返回font物件,

font.get_linessize()

font.render(text,antialias,color,background=None)返回的是surface物件,文字並不能直接顯示出來,需要先把文字渲染成圖片畫到另一個surface物件上才能正常的顯示出來。font為實力,text引數只能是單行文字,antilalias則是bool型別的值,用來控制文字的邊是否是鋸齒狀的還是圓滑型的。後面分別是文字顏色和文字的背景顏色

憑著這幾天學習的印象記得,感覺會有一堆錯誤呢,回去好好整整理理再來呀