新聞中心
前言

公司主營業(yè)務:成都網站建設、做網站、移動網站開發(fā)等業(yè)務。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出珠山免費做網站回饋大家。
本文的文字及圖片來源于網絡,僅供學習、交流使用,不具有任何商業(yè)用途,版權歸原作者所有,如有問題請及時聯(lián)系我們以作處理。
最近想找一些Python相關的游戲開發(fā)例子,正好在itch.io上閑逛看到這個俄羅斯方塊項目,瞬間被驚艷到了。
1.游戲介紹
下面就給大家介紹一下這個用Python寫的俄羅斯方塊具體功能。它一共有七個游戲模式:
- 單人模式
- 普通雙人模式
- 鏡像雙人模式(即掉落方塊都一樣)
- 雙人加速模式(每消去一行都會給對方加速)
- 雙人交換控制模式(一次控制自己的方塊,一次控制對方的)
- 雙人平衡模式(會改變對方的容量)
- 雙人單容器模式
沒錯,是不是被這豐富的游戲模式震驚到了?而且這款游戲的界面設計也是相當簡潔舒服(而且玩這樣的Python開源游戲,你永遠不會被廣告氣到):
不僅如此,除了wasd和上下左右鍵,它還支持用游戲手柄(僅一個)進行游戲,并且能切換兩個玩家的按鍵設置:
雙人模式類似如下, 非常適合小情侶之間消耗時光哦(如果你們都喜歡玩俄羅斯方塊的話)
尤其是雙人協(xié)作模式,兩個人一起解決問題也是增進感情的好方法:
2.源碼剖析
當然,我們首要目的還是學習這款游戲的源代碼,下面就給大家介紹一些這款游戲的部分核心代碼。下載該開源項目后,你會發(fā)現(xiàn)它的py文件分布如下:
- │ base.py
- │ game_modes.py
- │ main.py
- │ run_to_release.py
- │ tetris.py
- │ ... ....
- ├─assets
- │ ... ...
- │
- └─screens
- ... ...
其中,main.py是程序的入口點,首先看看模塊引入,sys的引入是當然的,游戲結束的時候需要調用
- sys.exit()
使得Python程序正常退出。這個游戲的引擎使用了pygame,是一個比較老的基于Python的2D游戲引擎,不過也是因為存在時間長,它已經成為一個很成熟且易上手的2D游戲開發(fā)庫 。
作者自己寫了兩個模塊,一個是base,里面有畫布配置、按鍵配置、玩家配置等等一系列游戲的基礎設置。而 game_modes 則是七種游戲模式的邏輯所在模塊,里頭還引用了tetris.py,這個模塊定義了整個俄羅斯方塊旋轉的方法及其數(shù)據(jù)結構。
不過由于時間關系,我們重點看看base里的主循環(huán)main_loop:
pygame.time.Clock() 用于配置游戲的幀數(shù),Clock.tick(frameate) 代表每秒framerate幀運行,也就是說,每秒不會執(zhí)行超過 framerate 次循環(huán) 。這個參數(shù)的值,我們可以在主函數(shù)里看到是600. 也就是這個循環(huán)每秒不會超過600次。
pygame.event.get() 是pygame游戲引擎的事件處理器,它用于處理所有的事件,好像打開大門讓所有的人進入,然后我們可以根據(jù)事件不同的屬性做相應的操作,如 event.type == pgl.KEYDOWN 表示鍵盤被按下時,執(zhí)行條件中的語句:
- pressed_keys.add(event.key)
便將其加入到pressed_keys集合中,yield返回生成器,也就是說只要程序不被終止,這個函數(shù)就會不斷地返回四個值: events, time_passed, pressed_keys 或 {(0, 0)}。events就是用戶觸發(fā)的事件,time_passed就是這些事件的時長,pressed_keys即用戶按下的鍵。
這樣就完成了一次用戶事件的傳遞,然后再又后端對用戶的事件進行處理,展示在游戲當中。當然,更復雜的還在后面,這里只是一個簡單的事件處理,當然也是最重要的事件處理部分。
網站欄目:Python 竟能開發(fā)如此精美的俄羅斯方塊
文章出自:http://www.dlmjj.cn/article/cdjocec.html


咨詢
建站咨詢
