0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Python中的塔防墻建筑|Wireframe#70

jf_9aVl32Dp ? 來(lái)源:Arm軟件開發(fā)者 ? 2023-01-08 09:49 ? 次閱讀

以Atari先鋒Rampart的風(fēng)格保護(hù)您的城堡。Mark在最新版本的Wireframe雜志中向您展示了如何操作。

上世紀(jì)80年代,一種新的戰(zhàn)略流派應(yīng)運(yùn)而生。塔防游戲包括在你的城堡周圍建造圍墻或障礙物,以防止敵人摧毀它。Atari發(fā)行的《Rampart》是該類游戲中一個(gè)著名的早期作品。比賽分為兩個(gè)階段。在建造階段,玩家在堡壘周圍的墻壁上填洞,并放置大炮。在第二階段,玩家的堡壘將被艦隊(duì)從海上攻擊,玩家可以用大炮還擊。這個(gè)循環(huán)會(huì)一直持續(xù)下去,直到玩家無(wú)法再填補(bǔ)墻壁的空隙,或者他們摧毀了所有攻擊船只。

0dcb3a06-8e91-11ed-bfe3-dac502259ad0.png

大炮準(zhǔn)備好了,準(zhǔn)備戰(zhàn)斗!這是最初的Rampart,由Atari于1990年開發(fā)。

在我們的PygameZero示例中,我們將研究?jī)煞N塔防機(jī)制:筑墻系統(tǒng),然后檢查要塞是否被墻包圍。要開始編碼,我們需要一個(gè)背景——在本例中,是一個(gè)海岸線部分。然后,我們需要定義一個(gè)不可見(jiàn)的網(wǎng)格,該網(wǎng)格將保存墻所在位置的詳細(xì)信息。如果我們假設(shè)每個(gè)墻段是40×40像素,那么在800×600像素的窗口上,我們可以定義一個(gè)二維列表中20×15的網(wǎng)格。在這個(gè)列表中,我們將從所有設(shè)置為0的正方形開始,然后如果我們添加墻截面,將該正方形切換為1。為了定義我們可以構(gòu)建和不能構(gòu)建的地方,我們可以加載一個(gè)小黑白圖像,并從中讀取像素,將不可構(gòu)建的正方形設(shè)置為3。

我們的堡壘將占據(jù)四個(gè)正方形,因此我們將堡壘位置的左上角正方形設(shè)為2,其他三個(gè)正方形設(shè)為3。這將阻止玩家在堡壘上筑墻。我們使用on_mouse_move()函數(shù)跟蹤鼠標(biāo)的移動(dòng),當(dāng)我們獲得鼠標(biāo)x和y坐標(biāo)時(shí),我們?cè)阪i定到不可見(jiàn)網(wǎng)格的鼠標(biāo)指針下繪制一段墻。當(dāng)我們得到一個(gè)on_mouse_down()事件時(shí),我們檢查所經(jīng)過(guò)的正方形是否為0,如果為0,我們將其轉(zhuǎn)換為1。

0ea14dbc-8e91-11ed-bfe3-dac502259ad0.png

我們向塔防流派致敬。建造一系列的墻來(lái)安全地包圍你的堡壘。

在draw()函數(shù)中,如果我們?cè)诰W(wǎng)格中有1的地方繪制一個(gè)墻截面,我們將看到墻所在的平面正方形。然而,我們想要的是所有的墻都與外面的城垛連接起來(lái)。為此,我們需要檢查每個(gè)墻件周圍的正方形,并根據(jù)其與其他墻件的連接方式來(lái)更改我們使用的圖像。我們查看上方、右側(cè)、下方和左側(cè)的正方形,如果沒(méi)有墻,則創(chuàng)建一個(gè)帶零的字符串,如果有墻,則生成一個(gè)帶1的字符串。這意味著如果沒(méi)有墻連接,我們將獲得字符串“0000”,如果上方有墻,將獲得字符串1000,如果當(dāng)前墻的左側(cè)和右側(cè)有墻,示例:“wall0101”。

在示例的第二部分,我們將檢測(cè)堡壘是否被墻包圍。有多種方法可以做到這一點(diǎn),但我們將使用“flood fill”例程來(lái)測(cè)試這一點(diǎn)。首先,我們制作一份網(wǎng)格列表的副本以進(jìn)行測(cè)試。然后,從網(wǎng)格上的堡壘位置開始,我們遞歸地測(cè)試所有相鄰的正方形。如果我們碰到了一堵墻,那么我們就關(guān)閉了回路的分支。這就產(chǎn)生了一系列向外延伸的測(cè)試,直到到達(dá)地圖的一側(cè),或者因?yàn)樗械拇a分支都碰到了墻,所以我們沒(méi)有正方形來(lái)測(cè)試。如果到達(dá)地圖的邊緣,墻上就會(huì)有洞;否則,堡壘將被封閉。

這些是我們的筑墻和測(cè)試程序。為了完成塔防風(fēng)格的游戲,你需要添加一些大炮和艦船來(lái)戰(zhàn)斗,但我們會(huì)把這部分留給你來(lái)實(shí)現(xiàn)。

0f412b52-8e91-11ed-bfe3-dac502259ad0.png

這是Mark的塔防游戲開始代碼。要在系統(tǒng)上運(yùn)行它,首先需要安裝PygameZero。完整說(shuō)明可在此處(http://wfmag.cc/pgzero)找到。有關(guān)完整代碼,請(qǐng)?jiān)L問(wèn)我們的github(http://wfmag.cc/wfmag70)。

獲取Wireframe#70

您可以在Wireframe第70期中閱讀更多類似的功能(https://www.raspberrypi.com/news/tag/wireframe/),可直接從Raspberry Pi Press(http://wfmag.cc/issues)獲得,我們?cè)谌蚍秶鷥?nèi)提供。

0fd2343a-8e91-11ed-bfe3-dac502259ad0.jpg

大結(jié)局:Wireframe#70,現(xiàn)已上市。

如果你喜歡數(shù)字形式的雜志,你也可以下載Wireframe第70期的免費(fèi)PDF?。╤ttp://wfmag.cc/70)


審核編輯 :李倩


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 編碼
    +關(guān)注

    關(guān)注

    6

    文章

    946

    瀏覽量

    54866
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4798

    瀏覽量

    84799

原文標(biāo)題:Python中的塔防墻建筑|Wireframe#70

文章出處:【微信號(hào):Arm軟件開發(fā)者,微信公眾號(hào):Arm軟件開發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    電子將控股和碩印度iPhone工廠

    近日,印度電子宣布了一項(xiàng)重大收購(gòu)計(jì)劃,將收購(gòu)和碩在印度iPhone工廠的多數(shù)股權(quán)。據(jù)知情人士透露,雙方已就此事達(dá)成一致,并將共同組建一家新的合資企業(yè)。 據(jù)悉,電子將持有這家合資
    的頭像 發(fā)表于 11-18 13:49 ?198次閱讀

    側(cè)工藝是什么意思

    與亞微米工藝類似,側(cè)工藝是指形成環(huán)繞多晶硅的氧化介質(zhì)層,從而保護(hù)LDD 結(jié)構(gòu),防止重?fù)诫s的源漏離子注入到LDD結(jié)構(gòu)的擴(kuò)展區(qū)。側(cè)是由兩個(gè)主要工藝步驟形成,首先淀積 ONO 結(jié)構(gòu),再利用各向異性
    的頭像 發(fā)表于 11-09 10:02 ?465次閱讀
    側(cè)<b class='flag-5'>墻</b>工藝是什么意思

    集團(tuán)攜手ADI成立戰(zhàn)略聯(lián)盟,共探印度芯片制造新篇章

    9月22日最新資訊,印度集團(tuán)攜手全球領(lǐng)先的模擬芯片制造商ADI(Analog Devices Inc.)正式宣布結(jié)成戰(zhàn)略伙伴關(guān)系,雙方正積極探討在印度本土共建芯片生產(chǎn)設(shè)施的可能性。這一合作標(biāo)志著
    的頭像 發(fā)表于 09-23 13:01 ?693次閱讀

    低壓差分信號(hào)(LVDS)在LED燈的應(yīng)用

    電子發(fā)燒友網(wǎng)站提供《低壓差分信號(hào)(LVDS)在LED燈的應(yīng)用.pdf》資料免費(fèi)下載
    發(fā)表于 08-30 09:23 ?0次下載
    低壓差分信號(hào)(LVDS)在LED燈<b class='flag-5'>墻</b><b class='flag-5'>中</b>的應(yīng)用

    園區(qū)安智能建筑管理系統(tǒng)全面介紹

    園區(qū)安智能建筑管理系統(tǒng)( IBMS )集成平臺(tái)是一種綜合性的智能化系統(tǒng),旨在實(shí)現(xiàn)對(duì)園區(qū)內(nèi)各類安設(shè)備和系統(tǒng)的集中管理、監(jiān)控、調(diào)度和決策。該平臺(tái)融合了安監(jiān)控、訪客管理、入侵檢測(cè)、視頻
    的頭像 發(fā)表于 08-02 11:53 ?301次閱讀

    Python在AI的應(yīng)用實(shí)例

    Python在人工智能(AI)領(lǐng)域的應(yīng)用極為廣泛且深入,從基礎(chǔ)的數(shù)據(jù)處理、模型訓(xùn)練到高級(jí)的應(yīng)用部署,Python都扮演著至關(guān)重要的角色。以下將詳細(xì)探討Python在AI的幾個(gè)關(guān)鍵應(yīng)用
    的頭像 發(fā)表于 07-19 17:16 ?1162次閱讀

    阿維在車輛安全的以攻促實(shí)例 | 附PPT下載

    以下內(nèi)容整理自談思AutoSec 8周年年會(huì)。 分享嘉賓:蘇牧辰 阿維科技數(shù)字安全-車輛安全負(fù)責(zé)人 本次的演講主題為《阿維在車輛安全以攻促實(shí)例》,內(nèi)容相較于此前在談思平臺(tái)上分享
    的頭像 發(fā)表于 05-14 13:54 ?314次閱讀
    阿維<b class='flag-5'>塔</b>在車輛安全<b class='flag-5'>中</b>的以攻促<b class='flag-5'>防</b>實(shí)例 | 附PPT下載

    印度電子開始出口封裝芯片

    印度電子近日宣布,其已在班加羅爾試驗(yàn)線上成功封裝芯片并開始出口,這一重要進(jìn)展標(biāo)志著在半導(dǎo)體行業(yè)的雄心壯志邁出了堅(jiān)實(shí)步伐。公司計(jì)劃在未來(lái)幾年內(nèi),在古吉拉特邦的Dholera建立一
    的頭像 發(fā)表于 05-13 10:31 ?633次閱讀

    雷達(dá)直擊雷防護(hù):側(cè)擊玻璃鋼避雷針

    雷達(dá)直擊雷防護(hù):側(cè)擊玻璃鋼避雷針
    的頭像 發(fā)表于 05-07 19:35 ?443次閱讀
    雷達(dá)<b class='flag-5'>塔</b>直擊雷防護(hù):<b class='flag-5'>防</b>側(cè)擊玻璃鋼避雷針

    平板丨平板終端丨三平板電腦丨建筑工地應(yīng)用

    隨著建筑工程越來(lái)越復(fù)雜和規(guī)模越來(lái)越大,工地管理和協(xié)調(diào)變得越來(lái)越復(fù)雜。在這個(gè)過(guò)程,工業(yè)設(shè)備的作用越來(lái)越重要,而三平板作為一種實(shí)用的工業(yè)設(shè)備,在工地上的應(yīng)用越來(lái)越廣泛。本文將介紹三
    的頭像 發(fā)表于 02-19 10:30 ?490次閱讀
    三<b class='flag-5'>防</b>平板丨平板終端丨三<b class='flag-5'>防</b>平板電腦丨<b class='flag-5'>建筑</b>工地應(yīng)用

    淺談建筑工地應(yīng)用三平板

    隨著建筑工程越來(lái)越復(fù)雜和規(guī)模越來(lái)越大,工地管理和協(xié)調(diào)變得越來(lái)越復(fù)雜。在這個(gè)過(guò)程,工業(yè)設(shè)備的作用越來(lái)越重要,而三平板作為一種實(shí)用的工業(yè)設(shè)備,在工地上的應(yīng)用越來(lái)越廣泛。本文將介紹三
    的頭像 發(fā)表于 02-19 10:20 ?392次閱讀

    冷卻原理及作用 冷卻的填料是什么東西

    冷卻是一種用于將熱水冷卻的設(shè)備,它通過(guò)將熱水與空氣進(jìn)行接觸和交換,從而降低水溫。冷卻通常被廣泛應(yīng)用于熱力系統(tǒng)、工業(yè)制程以及空調(diào)系統(tǒng)。冷卻的主要原理是通過(guò)風(fēng)扇將周圍空氣通過(guò)塔體,
    的頭像 發(fā)表于 02-03 10:52 ?2241次閱讀

    建筑工地機(jī)監(jiān)測(cè)系統(tǒng)助力工地建設(shè)

    一、系統(tǒng)介紹 機(jī)信息化管理系統(tǒng)是基于傳感器技術(shù)、嵌入式技術(shù)、數(shù)據(jù)采集技術(shù)、數(shù)據(jù)融合處理,無(wú)線傳感網(wǎng)絡(luò)與遠(yuǎn)程數(shù)據(jù)通信技術(shù),高效率的實(shí)現(xiàn)了建筑機(jī)單機(jī)運(yùn)行的群干涉作業(yè)
    的頭像 發(fā)表于 02-01 17:37 ?337次閱讀

    建筑電氣火災(zāi)的控與管理

    我國(guó)古建筑多為磚木結(jié)構(gòu),當(dāng)發(fā)生火災(zāi)事故時(shí)具有蔓延快、撲救難的特點(diǎn),而火災(zāi)對(duì)古建筑的損害性很大,電氣火災(zāi)事故在我國(guó)火災(zāi)事故中比重居高不下。本文通過(guò)對(duì)古建筑電氣火災(zāi)成因進(jìn)行分析,有針對(duì)性地提出了古
    的頭像 發(fā)表于 01-30 17:03 ?559次閱讀
    古<b class='flag-5'>建筑</b>電氣火災(zāi)的<b class='flag-5'>防</b>控與管理

    機(jī)防碰撞安全在線監(jiān)測(cè)系統(tǒng)在建筑行業(yè)的應(yīng)用

    機(jī)防碰撞安全在線監(jiān)測(cè)系統(tǒng)是集互聯(lián)網(wǎng)技術(shù)、傳感器技術(shù)、嵌入式技術(shù)、數(shù)據(jù)采集技術(shù)、數(shù)據(jù)融合處理、無(wú)線傳感網(wǎng)絡(luò)與遠(yuǎn)程數(shù)據(jù)通信等前沿應(yīng)用技術(shù)于一體的產(chǎn)品。該產(chǎn)品能高精度、高效率地實(shí)現(xiàn)建筑機(jī)單機(jī)運(yùn)行和群
    的頭像 發(fā)表于 01-25 17:58 ?459次閱讀