日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
Python 竟能開(kāi)發(fā)如此精美的俄羅斯方塊

前言

公司主營(yíng)業(yè)務(wù):成都網(wǎng)站建設(shè)、做網(wǎng)站、移動(dòng)網(wǎng)站開(kāi)發(fā)等業(yè)務(wù)。幫助企業(yè)客戶(hù)真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開(kāi)放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶(hù)帶來(lái)驚喜。創(chuàng)新互聯(lián)推出珠山免費(fèi)做網(wǎng)站回饋大家。

本文的文字及圖片來(lái)源于網(wǎng)絡(luò),僅供學(xué)習(xí)、交流使用,不具有任何商業(yè)用途,版權(quán)歸原作者所有,如有問(wèn)題請(qǐng)及時(shí)聯(lián)系我們以作處理。

最近想找一些Python相關(guān)的游戲開(kāi)發(fā)例子,正好在itch.io上閑逛看到這個(gè)俄羅斯方塊項(xiàng)目,瞬間被驚艷到了。

1.游戲介紹

下面就給大家介紹一下這個(gè)用Python寫(xiě)的俄羅斯方塊具體功能。它一共有七個(gè)游戲模式:

  1. 單人模式
  2. 普通雙人模式
  3. 鏡像雙人模式(即掉落方塊都一樣)
  4. 雙人加速模式(每消去一行都會(huì)給對(duì)方加速)
  5. 雙人交換控制模式(一次控制自己的方塊,一次控制對(duì)方的)
  6. 雙人平衡模式(會(huì)改變對(duì)方的容量)
  7. 雙人單容器模式

沒(méi)錯(cuò),是不是被這豐富的游戲模式震驚到了?而且這款游戲的界面設(shè)計(jì)也是相當(dāng)簡(jiǎn)潔舒服(而且玩這樣的Python開(kāi)源游戲,你永遠(yuǎn)不會(huì)被廣告氣到):

不僅如此,除了wasd和上下左右鍵,它還支持用游戲手柄(僅一個(gè))進(jìn)行游戲,并且能切換兩個(gè)玩家的按鍵設(shè)置:

雙人模式類(lèi)似如下, 非常適合小情侶之間消耗時(shí)光哦(如果你們都喜歡玩俄羅斯方塊的話(huà))

尤其是雙人協(xié)作模式,兩個(gè)人一起解決問(wèn)題也是增進(jìn)感情的好方法:

2.源碼剖析

當(dāng)然,我們首要目的還是學(xué)習(xí)這款游戲的源代碼,下面就給大家介紹一些這款游戲的部分核心代碼。下載該開(kāi)源項(xiàng)目后,你會(huì)發(fā)現(xiàn)它的py文件分布如下:

 
 
 
  1. │ base.py  
  2. │ game_modes.py  
  3. │ main.py  
  4. │ run_to_release.py  
  5. │ tetris.py  
  6. │ ... ....  
  7. ├─assets 
  8.  │ ... ...  
  9. │  
  10. └─screens  
  11. ... ... 

其中,main.py是程序的入口點(diǎn),首先看看模塊引入,sys的引入是當(dāng)然的,游戲結(jié)束的時(shí)候需要調(diào)用

 
 
 
  1. sys.exit() 

使得Python程序正常退出。這個(gè)游戲的引擎使用了pygame,是一個(gè)比較老的基于Python的2D游戲引擎,不過(guò)也是因?yàn)榇嬖跁r(shí)間長(zhǎng),它已經(jīng)成為一個(gè)很成熟且易上手的2D游戲開(kāi)發(fā)庫(kù) 。

作者自己寫(xiě)了兩個(gè)模塊,一個(gè)是base,里面有畫(huà)布配置、按鍵配置、玩家配置等等一系列游戲的基礎(chǔ)設(shè)置。而 game_modes 則是七種游戲模式的邏輯所在模塊,里頭還引用了tetris.py,這個(gè)模塊定義了整個(gè)俄羅斯方塊旋轉(zhuǎn)的方法及其數(shù)據(jù)結(jié)構(gòu)。

不過(guò)由于時(shí)間關(guān)系,我們重點(diǎn)看看base里的主循環(huán)main_loop:

pygame.time.Clock() 用于配置游戲的幀數(shù),Clock.tick(frameate) 代表每秒framerate幀運(yùn)行,也就是說(shuō),每秒不會(huì)執(zhí)行超過(guò) framerate 次循環(huán) 。這個(gè)參數(shù)的值,我們可以在主函數(shù)里看到是600. 也就是這個(gè)循環(huán)每秒不會(huì)超過(guò)600次。

pygame.event.get() 是pygame游戲引擎的事件處理器,它用于處理所有的事件,好像打開(kāi)大門(mén)讓所有的人進(jìn)入,然后我們可以根據(jù)事件不同的屬性做相應(yīng)的操作,如 event.type == pgl.KEYDOWN 表示鍵盤(pán)被按下時(shí),執(zhí)行條件中的語(yǔ)句:

 
 
 
  1. pressed_keys.add(event.key) 

便將其加入到pressed_keys集合中,yield返回生成器,也就是說(shuō)只要程序不被終止,這個(gè)函數(shù)就會(huì)不斷地返回四個(gè)值: events, time_passed, pressed_keys 或 {(0, 0)}。events就是用戶(hù)觸發(fā)的事件,time_passed就是這些事件的時(shí)長(zhǎng),pressed_keys即用戶(hù)按下的鍵。

這樣就完成了一次用戶(hù)事件的傳遞,然后再又后端對(duì)用戶(hù)的事件進(jìn)行處理,展示在游戲當(dāng)中。當(dāng)然,更復(fù)雜的還在后面,這里只是一個(gè)簡(jiǎn)單的事件處理,當(dāng)然也是最重要的事件處理部分。


網(wǎng)站欄目:Python 竟能開(kāi)發(fā)如此精美的俄羅斯方塊
本文網(wǎng)址:http://m.5511xx.com/article/cdjocec.html