用Python寫了一個(gè)「擁抱梅西」的小游戲
入門教程、案例源碼、學(xué)習(xí)資料、讀者群
請(qǐng)?jiān)L問:?python666.cn
(相關(guān)資料圖)
大家好,歡迎來到 Crossin的編程教室 !
最近有個(gè)小伙兒因?yàn)樵诒荣愔袥_進(jìn)場地?fù)肀肺鞫雒恕?/p>
這種行為當(dāng)然不可取,他也為此付出了代價(jià)。但要說我沒有一丁點(diǎn)羨慕和佩服那是不可能的。
于是,我也尬蹭一下這個(gè)熱點(diǎn),用Python寫了一個(gè)「擁抱梅西」的小游戲。
游戲效果是這樣的:
游戲規(guī)則很簡單:
不要被攔截的工作人員追上
抱到梅西(接觸一定時(shí)長)
定時(shí)會(huì)增加攔截的工作人員
可以反復(fù)擁抱
被追上后游戲結(jié)束,顯示堅(jiān)持的時(shí)間和擁抱的次數(shù)
代碼已上傳,獲取請(qǐng)?jiān)L問:python666.cn/c/9
或在號(hào)內(nèi)回復(fù)關(guān)鍵字:梅西
運(yùn)行說明
代碼使用了游戲框架 pygame-zero?進(jìn)行開發(fā)。之前我們也有發(fā)過基于這個(gè)框架的游戲:
羊了個(gè)羊,但是Python簡(li)單(pu)版
如果你對(duì)于此框架還不熟悉,可以看下這篇介紹:
PONG - 100行代碼寫一個(gè)彈球游戲
因此運(yùn)行代碼前需先安裝模塊:
pip?install?pgzero
用此框架代碼看起來與一般代碼稍有不同,它更像一個(gè)配置腳本,其中會(huì)出現(xiàn)很多未定義的方法和變量,因此在很多編輯器里會(huì)提示有錯(cuò),但其實(shí)是可以運(yùn)行的,無需手動(dòng)增加 import。這也是為什么你會(huì)看到我視頻里的代碼截圖有大量的下劃線。
pgzero有兩種方式運(yùn)行,一種是通過命令行的 pgzrun 命令;另一種是直接在編輯器中運(yùn)行。參見官方文檔:
https://pygame-zero.readthedocs.io/zh_CN/latest/ide-mode.html
本代碼用的是第二種直接運(yùn)行的方式(需新版pgzero),可直接在IDE中執(zhí)行。
有部分讀者反饋此代碼在spyder等一些編輯器中無法運(yùn)行,類似情況可以嘗試第一種傳統(tǒng)方法,即把最后一行代碼 pgzrun.go() 去掉,然后直接在命令行該目錄下運(yùn)行:?
pgzrun?iMessi.py
代碼簡介
如果你對(duì)代碼的核心邏輯其實(shí)比較容易理解。
對(duì)于「玩家」來說,就是根據(jù)上下左右按鍵,變換位置坐標(biāo);
對(duì)于「工作人員」來說,就是根據(jù)自身和玩家的相對(duì)位置算出移動(dòng)的方向,不斷靠近,如果碰上了就游戲結(jié)束
對(duì)于「梅西」來說,就是判斷是否與玩家碰上,并記錄碰上的持續(xù)時(shí)間
判斷是否“碰上”很簡單,就是計(jì)算一下兩個(gè)坐標(biāo)的距離是否小于一定值。
至于角色的移動(dòng),粗略的做法是,計(jì)算出x軸方向和y軸方向上的速度,然后在update函數(shù)中,將原坐標(biāo)位置加上速度值,得到新的坐標(biāo)位置。
但在我這次的代碼中,為了讓跑動(dòng)更“絲滑”,沒有選擇直接改變速度,而是根據(jù)玩家的按鍵計(jì)算出加速度,然后在update函數(shù)中,將原速度值加上加速度值,得到新的速度,再用新的速度去計(jì)算新的坐標(biāo)位置。
# 加速self.speedx += self.fx * self.accself.speedy += self.fy * self.acc# 限制最高速度d = (self.speedx**2 + self.speedy**2)**0.5 / self.speed_maxif d >1:self.speedx /= dself.speedy /= d# 更新坐標(biāo)self.x += self.speedxself.y += self.speedy
有了這樣的設(shè)定之后,還有個(gè)好處就是可以增加游戲的可玩性,比如你可以設(shè)定一種最高速度比玩家快,但是加速度比較小的「工作人員」,玩家就需要通過不停地變換方向來擺脫。
代碼中另一個(gè)比較復(fù)雜的地方是“轉(zhuǎn)向”的細(xì)節(jié)處理。同樣為了更加絲滑,我沒有選擇直接根據(jù)計(jì)算出的方向來改變角色貼圖方向,而是將計(jì)算出的方向作為“目標(biāo)方向”,然后根據(jù)角色當(dāng)前實(shí)際方向與目標(biāo)方向的偏差,決定是向順時(shí)針還是逆時(shí)針方向旋轉(zhuǎn),直到兩個(gè)方向小于一定閾值。
# 跑動(dòng)方向if keyboard.left:self.fx = -1elif keyboard.right:self.fx = 1else:self.fx = 0if keyboard.up:self.fy = -1elif keyboard.down:self.fy = 1else:self.fy = 0# 計(jì)算目標(biāo)方向角度directs = ((135, 180, -135), (90, None, -90), (45, 0, -45))direct = directs[self.fx + 1][self.fy + 1]if direct is None:self.angle_dest = self.angleelse:self.angle_dest = direct # 貼圖旋轉(zhuǎn)if abs(self.angle - self.angle_dest) < 5 or abs(self.angle - self.angle_dest) >355:self.angle = self.angle_destelse:if (0 < self.angle - self.angle_dest < 180) or (self.angle - self.angle_dest < -180):self.angle -= 500 * dtelse:self.angle?+=?500?*?dt
這段會(huì)牽扯一點(diǎn)初中幾何的知識(shí),想要理清的話建議在紙上畫一畫。
最后,是關(guān)于這個(gè)游戲的一個(gè)小視頻,給大家圖一樂:
歡迎大家關(guān)注+三連~
代碼已上傳,獲取請(qǐng)?jiān)L問:python666.cn/c/9
或在號(hào)內(nèi)回復(fù)關(guān)鍵字:梅西
公眾號(hào)的讀者朋友們購買后可在后臺(tái)聯(lián)系我,加入讀者交流群,Crossin會(huì)為你開啟陪讀模式,解答你在閱讀本書時(shí)的一切疑問。
感謝轉(zhuǎn)發(fā)和點(diǎn)贊的各位~
_往期文章推薦_
英語不好能不能學(xué)編程?如需了解付費(fèi)精品課程及教學(xué)答疑服務(wù)請(qǐng)?jiān)贑rossin的編程教室內(nèi)回復(fù): 666關(guān)鍵詞:
您可能也感興趣:
今日熱點(diǎn)
為您推薦
紐泰轉(zhuǎn)債(代碼123201)申購指南
每日快播:晴雨端午難擋出行熱 上海最北端道口過站車流已破2萬輛次
更多
- 優(yōu)化營商環(huán)境青島在行動(dòng) | 營商環(huán)境“三支隊(duì)伍”覆蓋24條產(chǎn)...
- 世界實(shí)時(shí):東營事業(yè)編考試 東營事業(yè)編考試時(shí)間2022
- 全球新動(dòng)態(tài):百菲酪關(guān)于水牛奶的加工工藝與制作方法
- 【世界報(bào)資訊】上期殺10碼全中!雙色球第23072期授漁看彩預(yù)測...
- 當(dāng)前熱門:激烈的GDP爭奪戰(zhàn),未來川渝占據(jù)優(yōu)勢嗎?
- 觀點(diǎn):諾基亞n95是哪一年上市的(諾基亞n95)
- 全球微資訊!焦點(diǎn)速看:存款利率降了,對(duì)我們有哪些影響?|觀...
- 世界關(guān)注:名家說端午·舊憶少時(shí)節(jié)
更多
- 全球觀速訊丨在職場中,如何做好人際溝通,提升自己的溝通能力?
- 要聞速遞:林俊杰也有大瓜?搞笑男演員有私生子?辰亦儒汪東...
- 新款豐田Mirai上市,售價(jià)74.8萬的氫能源汽車你買嗎?_每日觀察
- 環(huán)球快資訊:2023優(yōu)秀大學(xué)生社會(huì)實(shí)踐心得感悟
- 官宣!陳國豪正式參加CBA選秀,寧波or四川?朱芳雨該出手了_...
- 全球視點(diǎn)!S2O電音節(jié)端午在三亞開啟中國大陸首秀
- 焦點(diǎn)簡訊:手機(jī)迅雷8.0全新上線:界面大變
- 嚴(yán)監(jiān)管!北京銀行、民生銀行重慶分行合計(jì)領(lǐng)超億元罰單 涉及...
排行
- 用Python寫了一個(gè)「擁抱梅西」的小游戲
- 開課23天!宿遷經(jīng)貿(mào)高職線上教學(xué)4692節(jié)
- 北京積分落戶申報(bào)審核工作結(jié)束,6045人擬獲得落戶資格
- 筑牢校園安全防線——宿遷市鐘吾初中開展師生防災(zāi)減災(zāi)演練
- 泗洪縣人民路小學(xué)開展法治宣傳教育周系列活動(dòng)
- 掌握這三個(gè)飛機(jī)購票小技巧,為外出旅行省下大費(fèi)用!
- 北京建成438座生活垃圾分類驛站,完成率達(dá)73%
- 湖北將開展綠色社區(qū)創(chuàng)建,讓居民生活環(huán)境更“綠”
- 從江蘇電大到江蘇開大!宿遷開放大學(xué)怎么轉(zhuǎn)型發(fā)展?
- 東營市全面落實(shí)全省社保經(jīng)辦社銀直連工作方案
最近更新
- 用Python寫了一個(gè)「擁抱梅西」的小游戲
- 證監(jiān)會(huì)公布6月證券公司“白名單”,共31家券商入榜
- 麥趣爾控股股東800萬股被拍賣,持股比例降至26.9%
- 當(dāng)前視訊!NONO宣布停工反省,被控侵犯多人最高判30年,吳宗...
- 環(huán)球看熱訊:雷聲音效 雷聲
- 每日觀察!確保農(nóng)民工工資爭議案件優(yōu)先受理、快調(diào)速裁——人力...
- 當(dāng)前短訊!國腳歸隊(duì)備戰(zhàn)足協(xié)杯 中超各隊(duì)要提防被對(duì)手爆冷
- 負(fù)債超資產(chǎn)、主業(yè)未創(chuàng)收 君圣泰創(chuàng)始人還漲薪|當(dāng)前熱訊
- 李佳琦“靈魂發(fā)問”:主播這個(gè)行業(yè)還可以存在多久?
- 我的世界花雨庭怎么舉報(bào)玩家 我的世界花雨庭怎么舉報(bào)
- 環(huán)球報(bào)道:一噸現(xiàn)金是多少錢 一噸現(xiàn)金有多少人民幣
- 北京將迎來近50只熊貓!“落戶”在——
- 廣州白云站樞紐配套聯(lián)絡(luò)線萬噸轉(zhuǎn)體梁空中“牽手”
- 聲嘶力竭!明星夫妻一番言論被罵上熱搜!網(wǎng)友:太毀三觀-環(huán)球...
- 減肥的時(shí)候不能吃肉嗎?
- 營養(yǎng)價(jià)值高的肉類?
- 機(jī)構(gòu)公布5月全球移動(dòng)游戲收入榜,米哈游新游升至第二
- 交易談崩!感謝波津?yàn)榫G軍奉獻(xiàn)的一切!害...小莫又回到我船了...
- 專家贊阿門為超級(jí)天才!美記曬火箭先發(fā)平均身高2.05米:復(fù)刻...
- 五年前的今天:老鷹探花簽選中東契奇 隨后與獨(dú)行俠交換得到...
- 西安到海南飛機(jī)多長時(shí)間(西安到海南)|天天速看
- 今日觀點(diǎn)!外交部領(lǐng)事司司長:十年來組織實(shí)施近20次海外中國公...
- 頭條:青平:端午節(jié)掀起一輪傳統(tǒng)文化新浪潮
- 瑪莎拉蒂levante_馬沙拉蒂
- IPO動(dòng)態(tài):致遠(yuǎn)電子擬在深交所創(chuàng)業(yè)板上市募資8億元_世界關(guān)注
- 世界熱門:鴻遠(yuǎn)電子(603267)6月21日主力資金凈買入6922.68萬元
- 高血壓怎么辦慢性病卡_高血壓慢性病申請(qǐng)條件_世界今熱點(diǎn)
- 環(huán)球最資訊丨欣旺達(dá):控股子公司以增資及受讓股權(quán)方式收購贛...
- 環(huán)球今亮點(diǎn)!臥龍電驅(qū)(600580)6月21日主力資金凈買入5873.01萬元
- 宋曉娜 全球快資訊
今日要聞
- 情系一線送清涼我愛我家開展“盛夏送清涼”活動(dòng)
- 昆明理工大學(xué)黨委副書記蔡金紅到昆明理工大學(xué)應(yīng)用人才培養(yǎng)基地調(diào)研指導(dǎo)畢業(yè)生就業(yè)工作
- 索漢在選秀大會(huì)上擔(dān)任球員記者 把頭發(fā)染成了紫色 當(dāng)前熱文
- 當(dāng)前短訊!國腳歸隊(duì)備戰(zhàn)足協(xié)杯 中超各隊(duì)要提防被對(duì)手爆冷
- 即時(shí):保羅談被交易至勇士:我已經(jīng)被問了很多次了 真的非常興奮!
- 世界速訊:人生的抉擇一定要謹(jǐn)慎!
- 解密5幅可拆卸壁畫,獻(xiàn)上驚喜萬圣節(jié)派對(duì) & 生日禮物指南
- 優(yōu)化營商環(huán)境青島在行動(dòng) | 營商環(huán)境“三支隊(duì)伍”覆蓋24條產(chǎn)業(yè)鏈-天天觀熱點(diǎn)
- 世界實(shí)時(shí):東營事業(yè)編考試 東營事業(yè)編考試時(shí)間2022
- 全球觀速訊丨在職場中,如何做好人際溝通,提升自己的溝通能力?