国产美女主播视频一区_国产精品蜜臀在线观看_亚洲成人动漫一区_亚洲视屏在线播放

首頁(yè) > 財(cái)經(jīng)頻道

環(huán)球訊息:用Python寫(xiě)了一個(gè)「擁抱梅西」的小游戲

來(lái)源:程序員客棧 時(shí)間:2023-06-24 01:15:33

入門(mén)教程、案例源碼、學(xué)習(xí)資料、讀者群

請(qǐng)?jiān)L問(wèn):?python666.cn

大家好,歡迎來(lái)到 Crossin的編程教室 !


(相關(guān)資料圖)

最近有個(gè)小伙兒因?yàn)樵诒荣愔袥_進(jìn)場(chǎng)地?fù)肀肺鞫雒恕?/p>

這種行為當(dāng)然不可取,他也為此付出了代價(jià)。但要說(shuō)我沒(méi)有一丁點(diǎn)羨慕和佩服那是不可能的。

于是,我也尬蹭一下這個(gè)熱點(diǎn),用Python寫(xiě)了一個(gè)「擁抱梅西」的小游戲。

游戲效果是這樣的:

游戲規(guī)則很簡(jiǎn)單:

不要被攔截的工作人員追上

抱到梅西(接觸一定時(shí)長(zhǎng))

定時(shí)會(huì)增加攔截的工作人員

可以反復(fù)擁抱

被追上后游戲結(jié)束,顯示堅(jiān)持的時(shí)間和擁抱的次數(shù)

代碼已上傳,獲取請(qǐng)?jiān)L問(wèn):python666.cn/c/9

或在號(hào)內(nèi)回復(fù)關(guān)鍵字:梅西

運(yùn)行說(shuō)明

代碼使用了游戲框架 pygame-zero?進(jìn)行開(kāi)發(fā)。之前我們也有發(fā)過(guò)基于這個(gè)框架的游戲:

羊了個(gè)羊,但是Python簡(jiǎn)(li)單(pu)版

如果你對(duì)于此框架還不熟悉,可以看下這篇介紹:

PONG - 100行代碼寫(xiě)一個(gè)彈球游戲

因此運(yùn)行代碼前需先安裝模塊:

pip?install?pgzero

用此框架代碼看起來(lái)與一般代碼稍有不同,它更像一個(gè)配置腳本,其中會(huì)出現(xiàn)很多未定義的方法和變量,因此在很多編輯器里會(huì)提示有錯(cuò),但其實(shí)是可以運(yùn)行的,無(wú)需手動(dòng)增加 import。這也是為什么你會(huì)看到我視頻里的代碼截圖有大量的下劃線。

pgzero有兩種方式運(yùn)行,一種是通過(guò)命令行的 pgzrun 命令;另一種是直接在編輯器中運(yùn)行。參見(jiàn)官方文檔:

https://pygame-zero.readthedocs.io/zh_CN/latest/ide-mode.html

本代碼用的是第二種直接運(yùn)行的方式(需新版pgzero),可直接在IDE中執(zhí)行。

有部分讀者反饋此代碼在spyder等一些編輯器中無(wú)法運(yùn)行,類(lèi)似情況可以嘗試第一種傳統(tǒng)方法,即把最后一行代碼 pgzrun.go() 去掉,然后直接在命令行該目錄下運(yùn)行:?

pgzrun?iMessi.py

代碼簡(jiǎn)介

如果你對(duì)代碼的核心邏輯其實(shí)比較容易理解。

對(duì)于「玩家」來(lái)說(shuō),就是根據(jù)上下左右按鍵,變換位置坐標(biāo);

對(duì)于「工作人員」來(lái)說(shuō),就是根據(jù)自身和玩家的相對(duì)位置算出移動(dòng)的方向,不斷靠近,如果碰上了就游戲結(jié)束

對(duì)于「梅西」來(lái)說(shuō),就是判斷是否與玩家碰上,并記錄碰上的持續(xù)時(shí)間

判斷是否“碰上”很簡(jiǎn)單,就是計(jì)算一下兩個(gè)坐標(biāo)的距離是否小于一定值。

至于角色的移動(dòng),粗略的做法是,計(jì)算出x軸方向和y軸方向上的速度,然后在update函數(shù)中,將原坐標(biāo)位置加上速度值,得到新的坐標(biāo)位置。

但在我這次的代碼中,為了讓跑動(dòng)更“絲滑”,沒(méi)有選擇直接改變速度,而是根據(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è)定一種最高速度比玩家快,但是加速度比較小的「工作人員」,玩家就需要通過(guò)不停地變換方向來(lái)擺脫。

代碼中另一個(gè)比較復(fù)雜的地方是“轉(zhuǎn)向”的細(xì)節(jié)處理。同樣為了更加絲滑,我沒(méi)有選擇直接根據(jù)計(jì)算出的方向來(lái)改變角色貼圖方向,而是將計(jì)算出的方向作為“目標(biāo)方向”,然后根據(jù)角色當(dāng)前實(shí)際方向與目標(biāo)方向的偏差,決定是向順時(shí)針還是逆時(shí)針?lè)较蛐D(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í),想要理清的話建議在紙上畫(huà)一畫(huà)。

最后,是關(guān)于這個(gè)游戲的一個(gè)小視頻,給大家圖一樂(lè):

歡迎大家關(guān)注+三連~

代碼已上傳,獲取請(qǐng)?jiān)L問(wèn):python666.cn/c/9

或在號(hào)內(nèi)回復(fù)關(guān)鍵字:梅西

Crossin的新書(shū)《碼上行動(dòng):零基礎(chǔ)學(xué)會(huì)PYTHON編程(CHATGPT版)》已經(jīng)上市了。

本書(shū)力求做到淺顯易懂,讓完全沒(méi)有編程經(jīng)驗(yàn)的零基礎(chǔ)“小白”也能學(xué)會(huì)Python。內(nèi)容從環(huán)境搭建這種最基礎(chǔ)的步驟開(kāi)始講起,逐漸深入到常見(jiàn)的實(shí)際應(yīng)用當(dāng)中。在講解知識(shí)點(diǎn)的同時(shí)配有相應(yīng)的代碼示例,讓讀者可以邊學(xué)邊練加深理解。書(shū)中還創(chuàng)新地使用?ChatGPT?作為編程學(xué)習(xí)的輔助,帶領(lǐng)讀者探索AI時(shí)代下學(xué)習(xí)編程的新模式。

公眾號(hào)的讀者朋友們購(gòu)買(mǎi)后可在后臺(tái)聯(lián)系我,加入讀者交流群,Crossin會(huì)為你開(kāi)啟陪讀模式,解答你在閱讀本書(shū)時(shí)的一切疑問(wèn)。

感謝轉(zhuǎn)發(fā)和點(diǎn)贊的各位~

_往期文章推薦_

英語(yǔ)不好能不能學(xué)編程?如需了解付費(fèi)精品課程及教學(xué)答疑服務(wù)請(qǐng)?jiān)贑rossin的編程教室內(nèi)回復(fù): 666

相關(guān)稿件

環(huán)球訊息:用Python寫(xiě)了一個(gè)「擁抱梅西」的小游戲

6.22期指(二)|世界熱點(diǎn)評(píng)

要聞速遞:oracle創(chuàng)建用戶怎么做_Oracle如何創(chuàng)建用戶

法拉第未來(lái)股價(jià)暴跌37% 此前宣布FF91交付延期_全球微動(dòng)態(tài)

北汽藍(lán)谷: 關(guān)于極狐考拉的上市安排,公司計(jì)劃于三季度末上市并接受預(yù)定 當(dāng)前要聞

南威軟件: 公司名稱(chēng)為“南威”,此“南”非彼“難”

世界焦點(diǎn)!結(jié)晶什么意思_結(jié)晶解釋

漫步者:6月20日公司高管肖敏減持公司股份合計(jì)150.17萬(wàn)股|焦點(diǎn)短訊

李佳琦“靈魂發(fā)問(wèn)”:主播這個(gè)行業(yè)還可以存在多久?

天天頭條:6月21日菏澤江源硫酸價(jià)格暫穩(wěn) 開(kāi)工正常

定做冬季工作服主要考慮的是面料 世界即時(shí)

美團(tuán)在包頭成立科技新公司#注冊(cè)資本400萬(wàn)美元_天天速看料

天天亮點(diǎn)!華晨宇的女友標(biāo)準(zhǔn)_華晨宇的女友是誰(shuí)

世界資訊:應(yīng)急管理部派工作組赴寧夏銀川燃?xì)獗ㄊ鹿尸F(xiàn)場(chǎng)指導(dǎo)救援處置

減肥的時(shí)候不能吃肉嗎?_世界新動(dòng)態(tài)

每日熱聞!營(yíng)養(yǎng)價(jià)值高的肉類(lèi)?

每日熱議!特殊的端午節(jié)“禮物”!廣州為多位立功現(xiàn)役軍人家庭送喜報(bào)

三大應(yīng)用場(chǎng)景系統(tǒng)解決方案直指安全!華為重新定義光儲(chǔ)產(chǎn)業(yè)

海水晶是什么味道的_海水晶是什么 焦點(diǎn)關(guān)注

世界觀天下!春居 高鼎字版_春居 高鼎

soopatent專(zhuān)利查詢_soopat專(zhuān)利搜索官網(wǎng)

專(zhuān)家贊阿門(mén)為超級(jí)天才!美記曬火箭先發(fā)平均身高2.05米:復(fù)刻掘金|世界時(shí)訊

世界頭條:建設(shè)銀行黑龍江省分行:社銀合作“就近辦”便民服務(wù)“零距離”

全球熱推薦:大動(dòng)作!華為8.7億元成立新公司!董事長(zhǎng)是他

【世界報(bào)資訊】生豬期貨發(fā)力 豬價(jià)波動(dòng)明顯降低

焦點(diǎn)熱門(mén):2023北京中考期間送考車(chē)輛尾號(hào)限行違法不作處罰

決戰(zhàn)“三個(gè)年”楊凌在行動(dòng) | 強(qiáng)作風(fēng) 優(yōu)服務(wù) 高質(zhì)量推進(jìn)重點(diǎn)項(xiàng)目建設(shè)

全國(guó)鐵路7月1日起實(shí)行新的列車(chē)運(yùn)行圖|熱推薦

環(huán)球觀點(diǎn):公安部發(fā)布端午節(jié)假期道路交通安全預(yù)警

廣東一早教中心被指“上課時(shí)裝修致孩子發(fā)病”?官方介入 世界聚焦


主站蜘蛛池模板: 国产欧美一区二区三区在线看| 国产99在线免费| 国产欧美日韩小视频| 久久久久久美女| 国产精品日韩三级| 午夜精品久久久久久久久久久久久 | 日韩经典在线视频| 中文字幕日韩精品无码内射| 久久99精品视频一区97| 国产精品久久久久久亚洲影视| 国产精品久久久久久av| 日韩视频免费观看| 青春草国产视频| 国产在线精品一区二区中文v| 欧美一级片一区| 日本一区二区在线播放| 91精品国产综合久久久久久蜜臀| 美女久久久久久久久久久| 国产精品免费视频久久久| 精品国模在线视频| 欧美精品久久久久久久免费| 国产日韩欧美在线| 国产欧美日韩亚洲| 欧美有码在线观看视频| 国产欧美日韩综合精品| 国产日韩欧美在线| 亚洲国产欧美一区二区三区不卡| 国产美女久久精品香蕉69| 久久久久国产精品www| 91久久精品www人人做人人爽| 欧美一区二区三区精品电影| 欧美精品中文字幕一区二区| 国产精品免费在线免费| 蜜桃视频成人在线观看| 国产精品乱码一区二区三区| 日本高清久久天堂| 久久久亚洲福利精品午夜| 欧美成人在线影院| 好吊色欧美一区二区三区视频| 欧美精品v日韩精品v国产精品| 日本久久久精品视频|