用pygame開發(fā)自己的游戲-1. 下載與安裝pygame

一、前言

pygame是一個用Python寫的SDL庫。SDL是一個能訪問計算機多媒體硬件組件(包括聲卡,視頻卡监憎,輸入組件等)的跨平臺庫。本系列主要通過pygame做小游戲來學習編程婶溯。對于學過基本語法鲸阔,刷過一些題目的同學偷霉,提高自己的最佳方式就是通過做小游戲等實際的項目,有目標地做項目才能真正將知識內(nèi)化隶债。初學者一定要學會CRM(Copy Run Modify,又稱魔改)大法跑筝,把書上網(wǎng)上的例子代碼跑起來后死讹,一定要嘗試修改下代碼,通過關(guān)鍵參數(shù)或者關(guān)鍵語句的修改曲梗,可以驗證自己對代碼的理解是否正解赞警。

二、安裝

安裝pygame的最佳方式是通過pip命令來安裝虏两,在Windows下打開CMD窗口(win鍵 + R愧旦,輸入 cmd)界面上輸入pip install pygame命令便安裝好。

pip install pygame.png

有一些同學在這步安裝過程中會遇到包無法順利下載的問題定罢,可以用一下命令來執(zhí)行,這個命令是通過pip使用豆瓣源的鏡像來下載安裝pygame笤虫。兩個命令的區(qū)別在于安裝過程所需要的文件是在國外還是國內(nèi)的網(wǎng)站去下載。

pip install pygame -i https://pypi.doubanio.com/simple/ --trusted-host pypi.doubanio.com

三祖凫、Hello world

學習編程任何語言琼蚯,框架都是從Hello world例子開始的,學習pygame也不例外惠况,我們從以下例子開始遭庶。

import pygame, sys

# 初始化
pygame.init()
# 設(shè)置屏幕的寬度,高度
SCREEN = pygame.display.set_mode((400, 300))
# 設(shè)置窗口的標題
pygame.display.set_caption('Hello World!')

# 游戲主循環(huán)
while True: # main game loop
    for event in pygame.event.get():
        # 處理退出事件
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
    # 將屏幕的背景填充成白色稠屠,了解下RGB三原色
    SCREEN.fill((255, 255, 255))
    # 調(diào)用 pygame.display.update() 方法更新整個屏幕的顯示
    pygame.display.update()

效果如下:


pygame hello world程序效果圖.png

游戲主循環(huán)

游戲主循環(huán)(事件)是一直在運行著的峦睡。無論是在玩游戲,更新游戲狀態(tài)权埠,渲染畫面或者是采集輸入數(shù)據(jù)榨了,它是一直在不間斷運行著的。當我們創(chuàng)建一個循環(huán)時攘蔽,必須能保證阻逮,我們有方法可以跳出循環(huán),結(jié)束程序運行秩彤。游戲中經(jīng)常用各種事件要處理叔扼,比如鍵盤鼠標等操作,pygame把所有類似的事件都放進事件隊列漫雷,再由用戶來處理瓜富。我們可以用pygame.event.get()方法來操作它。目前我們只處理游戲的退出事件降盹,上面代碼里當收到退出事件后与柑,就退出游戲。

四、常用的知識點

1. 理解游戲坐標系

pygame坐標系的理解是十分關(guān)鍵的价捧,所有的圖形圖片的繪制都與之相關(guān)丑念。原點 在 左上角 (0, 0)
x 軸 水平方向向 右,逐漸增加
y 軸 垂直方向向 下结蟋,逐漸增加

2. 矩形結(jié)構(gòu)

矩形是一個簡單的矩形——僅由左上角的位置脯倚、寬度和高度來定義。很多pygame函數(shù)都把rects作為參數(shù)嵌屎,它們也取“rectstyle”推正,這個序列的值與矩形的值相同,所以如果我需要一個矩形來定義10 20 40 50的面積宝惰,我可以做以下任何一項:

rect = pygame.Rect(10, 20, 40, 50)
rect = pygame.Rect((10, 20, 40, 50))
rect = pygame.Rect((10, 20), (40, 50))
rect = (10, 20, 40, 50)
rect = ((10, 20, 40, 50))

如果要將結(jié)果矩形化畫出來植榕,可以使用pygame.draw.rect函數(shù)。第一個參數(shù)填寫屏幕對象尼夺,第二參數(shù)為矩形的顏色尊残,第三個參數(shù)為矩形對象,可以填寫前面矩形結(jié)構(gòu)中的一種淤堵。

import pygame, sys

# 初始化
pygame.init()
# 設(shè)置屏幕的寬度夜郁,高度
SCREEN = pygame.display.set_mode((400, 300))
# 設(shè)置窗口的標題
pygame.display.set_caption('Hello World!')

# 游戲主循環(huán)
while True: # main game loop
    for event in pygame.event.get():
        # 處理退出事件
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
    # 將屏幕的背景填充成白色,了解下RGB三原色
    SCREEN.fill((255, 255, 255))
    # 調(diào)用 pygame.display.update() 方法更新整個屏幕的顯示
    pygame.draw.rect(SCREEN, (255, 0, 0), (20, 30, 100, 50))
    pygame.display.update()

效果如下:


pygame.draw.rect畫出來的矩形.png

五粘勒、練習題

  1. 在(80, 60)位置畫出一個綠色竞端,段度為60,高度100的矩形庙睡。
  2. 在(180, 160)位置畫出一個藍色事富,半徑為50的圓形。

pygame.draw.circle
原型:pygame.draw.circle(Surface, color, pos, radius, width=0): return Rect
用途:用于繪制圓形乘陪。第三個參數(shù)pos是圓心的位置坐標统台,radius指定了圓的半徑。

  1. 畫一條紫色的直線啡邑, 起點為(0, 80), 終點為(70贱勃, 120)

pygame.draw.line
原型:pygame.draw.line(Surface, color, start_pos, end_pos, width=1): return Rect  
用途:繪制直線段,start_pos 和 end_pos 分別表示起始點和終止點谤逼,用坐標表示贵扰。width為線條寬度,默認為1流部。
本文由博客群發(fā)一文多發(fā)等運營工具平臺 OpenWrite 發(fā)布

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末戚绕,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子枝冀,更是在濱河造成了極大的恐慌舞丛,老刑警劉巖耘子,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異球切,居然都是意外死亡谷誓,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進店門吨凑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來捍歪,“玉大人,你說我怎么就攤上這事怀骤》逊猓” “怎么了焕妙?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵蒋伦,是天一觀的道長。 經(jīng)常有香客問我焚鹊,道長痕届,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任末患,我火速辦了婚禮研叫,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘璧针。我一直安慰自己嚷炉,他們只是感情好,可當我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布探橱。 她就那樣靜靜地躺著申屹,像睡著了一般。 火紅的嫁衣襯著肌膚如雪隧膏。 梳的紋絲不亂的頭發(fā)上哗讥,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天,我揣著相機與錄音胞枕,去河邊找鬼杆煞。 笑死,一個胖子當著我的面吹牛腐泻,可吹牛的內(nèi)容都是我干的决乎。 我是一名探鬼主播,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼派桩,長吁一口氣:“原來是場噩夢啊……” “哼瑞驱!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起窄坦,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤唤反,失蹤者是張志新(化名)和其女友劉穎凳寺,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體彤侍,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡肠缨,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了盏阶。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片晒奕。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖名斟,靈堂內(nèi)的尸體忽然破棺而出脑慧,到底是詐尸還是另有隱情,我是刑警寧澤砰盐,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布闷袒,位于F島的核電站,受9級特大地震影響岩梳,放射性物質(zhì)發(fā)生泄漏囊骤。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一冀值、第九天 我趴在偏房一處隱蔽的房頂上張望也物。 院中可真熱鬧,春花似錦列疗、人聲如沸滑蚯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽告材。三九已至,卻和暖如春竭讳,著一層夾襖步出監(jiān)牢的瞬間创葡,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工绢慢, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留灿渴,地道東北人。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓胰舆,卻偏偏與公主長得像骚露,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子缚窿,可洞房花燭夜當晚...
    茶點故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內(nèi)容