昨天安裝完 Pygame 以後,今天想最基本的畫圖開始。
因為研究教程然後,墊墊自己的斤兩,決定不要肖想一開始就做什麼遊戲會逼死自己。
決定先從基本的畫圖開始。
首先,先給給我實驗過後可運行的程式碼,詳細的程式碼再解釋。
程式碼如下:
import pygame
import random
pygame.init()
white = (255, 255, 255)
pink = (237, 84, 133)
green = (91, 231,196)
blue = (0, 51, 153)
black = (0, 0, 0)
gameDisplay = pygame.display.set_mode ((800, 600))
gameDisplay.fill(black)
pixAr = pygame. PixelArray (gameDisplay)
pixAr[20][20] = green
pygame.draw.line (gameDisplay, blue, (50,50), (200,50))
pygame.draw.rect (gameDisplay, pink, (50,80,100,50))
pygame.draw.rect (gameDisplay, pink, (200,80,50,50))
pygame.draw.circle (gameDisplay, white, (100,200), 50)
while True:
for event in pygame.event.get ():
if event. type == pygame.QUIT:
pygame.quit()
pygame.display.update()
import pygame
import random
先匯入 pygame 模組,還有random 模組。是模組嗎?不會翻成中文誒 囧
其實,我是看蠻多都有匯入「random」的,所以我就先匯入了,但是我實在是不知道這個為什麼要先匯入,感覺畫圖應該不會用到啊。
暫且不管這個。
再來就是要初始化 pygame.init()
,好的,簡單來說就是要初始化接下來的定義類別。
告訴終端機說,接下來的定義要聽清楚了!!!
我自己的理解是這樣,不知道有沒有錯誒(?
總之,正式可以開始啦!!!
white = (255, 255, 255)
pink = (237, 84, 133)
green = (91, 231,196)
blue = (0, 51, 153)
black = (0, 0, 0)
基本上 pygame 是以 RGB 為主要輸入法。
天啊,我筆名 CMYK ,該不會命中註定和 pygame 不合吧?(呸呸呸亂說話
我自己是去網路上的色票網站,找到自己喜歡的顏色,然後把 Hex顏色代碼去轉換成 RGB 碼,就可以啦!!!
不要問我為什麼要有粉紅色,因為人家是女生耶!!!)被圍毆
好的,時間又到了。
先送出,再後補)掩面
gameDisplay = pygame.display.set_mode ((800, 600))
建立一個遊戲框,我也不知道怎麼說,算是建立一個前端嗎?
還是叫做「遊戲介面」?
總之不管,就是建立一個遊戲畫面就對了。
我本來想設定成(1200,800)像素的大小,結果好像跑不太動欸...
是電腦的問題吧(?
總之,這個以後再解決。
我就先把它設成(800,600)像素好了!
gameDisplay.fill(black)
畫面背景愛什麼顏色,就選什麼顏色!!!
我肯定黑色,走復古風 哈
其實畫「點」,就是把像素著色而已。
pixAr = pygame. PixelArray (gameDisplay)
pixAr[20][20] = green
用[]括起來的就是這個點在整個遊戲介面的座標值。
我是因為()不能執行,查教程才知道用[]的,
但是,其實我不是很懂為什麼這裡要用[],而不是()。
雖然我真的極度想知道到底為什麼!!
不過這個也先暫時略過,以後再研究...
另外,還要先提醒一件事,整個遊戲介面,最左上角就是(0,0)。
往右就是 X 座標往上加1。
往下就是 Y 座標往上加1。
因此pixAr[20][20] = green
就是顯示成
一個小點!)笑歪
pygame.draw.line (gameDisplay, blue, (50,50), (200,50))
首先,要先寫 pygame.draw.line
後面括號(gameDisplay, blue, (50,50), (200,50))
裡面到底在寫些什麼東西呢?
用白話翻譯就是:
(遊戲程式介面名稱, 圖形的顏色, 線段其中一頭的座標A , 線段另一頭的座標B)
輸出之後就會出現美麗的線段啦!!!
現在要來畫個長方形:pygame.draw.rect (gameDisplay, pink, (50,80,100,50))
先下個rect
函數就是,重點就在後面括號裡,除了遊戲程式介面名稱和圖形的顏色以外,裡面還有一個小括號,那個小括號翻譯成白話就會變成:
(長方形最上面左邊的頂點,長方形最上面右邊的頂點,橫軸的長度,縱軸的長度)
好的,我覺得應該有人聽不懂。
圖示法!!!!!
這樣應該就可以看得懂了!!!(製圖真的累...累癱)
但是,如果我想要做一個正方形呢?
天才如我!!!打出了 pygame.draw.square
結果,就出現 error啦!!!
一查才知道 rect
不只是長方形的縮寫!!!
更是矩形函數的縮寫!!!
再仔細思考,也對啦,不然那麼多命名,真的會害死人。
pygame.draw.rect (gameDisplay, pink, (200,80,50,50))
就完成了這樣的式子啦!!!
連同上面的長方形一起輸出,就長成下方這樣:
圓要怎麼畫呢?
pygame.draw.circle (gameDisplay, white, (100,200), 50)
前面依然要先下函數 circle
,後面括號裡也是大同小異,前面兩個依然是遊戲程式介面名稱和圖形的顏色,後面那兩個參數就要記一下,就是圓心的座標,還有半徑的長度。
寫成白話就會變成:
(遊戲程式介面名稱, 圖形的顏色, 圓心的座標, 半徑的長度)
輸出結果就會長成:
結果,畫圓居然比畫方框還簡單誒。
完全誤會了!!!
整體而言,似乎比想像中要簡單很多,最主要是要對座標很熟悉。
慶幸小時候有很認真上過數學課,不然我應該會立刻棄賽(誤
不過,我最近幾天在思考的問題是,對於這些很類似公式的寫法,我到底要不要去「背」它們。
因為很多很簡單的error或是運算子之類的,我至今都還是會錯,然後要一直去查詢同樣的事件,自己覺得這樣好像不太OK,不知道大家初期學寫程式都會不會逼自己背,還是都是走用多了就記起來的路線啊?
明天再來摸摸其他小組件,然後研究看看有什麼可以嘗試的。
開心又瞇瞇眼收工!