一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

如何用C++實現(xiàn)曠野之息中的武器

 進擊的科科 2021-04-09

擁有Switch的同學相信都玩過塞爾達·曠野之息這個神作,還記得騎上你心愛的小摩托在海拉魯大陸上馳騁的日子么?那么你想知道曠野之息中大師劍這些武器的攻擊力和耐久度都是怎么實現(xiàn)的么?

    4月8日的開課吧《HelloWorld公開課》,曉沐老師為我們帶來了,如何用C++來實現(xiàn)曠野之息中的武器攻擊力和耐久度,話不多說,讓我們跟著曉沐老師去看看吧。

    常見數(shù)據(jù)結(jié)構(gòu)

    在實現(xiàn)林克大魔王的武器前,曉沐老師先帶我們復(fù)習了數(shù)組,隊列、棧等幾個常見的數(shù)據(jù)結(jié)構(gòu),這里我們挑兩個重要的在復(fù)習下。

    這是哈希表的數(shù)據(jù)結(jié)構(gòu)圖,它的時間復(fù)雜度為O(1),每個keys通過哈希函數(shù)轉(zhuǎn)換映射到每一個buckets,當有兩個keys映射同一個buckets時,通過串聯(lián)在buckets中的鏈表來查詢相關(guān)的數(shù)據(jù)。

c

    下面這個數(shù)據(jù)結(jié)構(gòu)乍一看可能像是樹,但其實它是堆,紅色箭頭代表交換,我們都知道,堆分為大頂堆和小頂堆,大頂堆可以快速篩選出最大的數(shù)據(jù)元素,小頂堆則是可以篩選出最小的數(shù)據(jù)元素。

web

    常見模板庫與迭代器

    工欲善其事必先利其器,C++中的STL已經(jīng)幫我們封裝好了許多常用的模板庫與迭代器,這些也是后面我們實現(xiàn)曠野之息中武器必不可少的工具。

    標準模板庫

    vector數(shù)列

    stack棧

    queue隊列

    list鏈表

    set集合(紅黑樹)

    map映射(紅黑樹)

    unordered_set無序集合(哈希表)

    unorderer_map無序映射(哈希表)

    priority_queue優(yōu)先隊列/堆(vector/deque)

    STL迭代器

    容器類名::iterator

    容器類名::const_iterator

    容器類名::reverse_iterator

    容器類名::const_reverse_iterator

    實戰(zhàn)演練

    我們先來分析一下林克大魔王的角色屬性和裝備,林克游戲背包中,劍的最大容量為n,每把劍有如下五個屬性:分別是物品id,物品名稱,物品圖標,攻擊力,耐久度。

    游戲背包中,盾的最大容量為n,每個盾牌有如下五個屬性:物品id,物品名稱,物品圖標,防御力,耐久度。

    我們的主角林克(Link)在海拉魯大地上與怪物殊死搏斗:他的初始背包里沒有任何裝備,他可以將地上的裝備撿起放入背包每把劍在揮砍后,耐久度會降低,耐久度為0時武器消失,他在打怪時每次只使用攻擊力最強的劍。

    以上是項目背景與功能需求,下面開始實現(xiàn),我們先寫一個基類Weapon,然后定義武器的名字、屬性和耐久度,從下面的代碼我們可以單出來,durability代表武器的耐久度,這是一個耐久度為5的武器。然后再寫一個broken函數(shù)來判斷武器耐久度。

    當武器耐久度小于等于0代表武器損壞,broken函數(shù)返回true,每個武器有use使用的屬性,每使用一次耐久度減一,在代碼中我們可以看到durability--

c++

    接下來定義武器的數(shù)據(jù)庫,從下面代碼可以看到,這是一個劍的數(shù)據(jù)庫,map里存了這個劍的所有屬性的參數(shù)值。同理我們也可以寫一個盾牌的數(shù)據(jù)庫。

c++

    一切準備就緒,現(xiàn)在我們把上面的代碼運行一下,看會返回什么結(jié)果,從下面打印輸出的信息可以看到,我們的主角林克大魔王撿了一把耐久度為5,攻擊力25的卓拉之劍,然后他攻擊了一下,卓拉之劍耐久度減一變成了4。

Java

    看到這可能有同學會問,這也就實現(xiàn)了武器的耐久功能,背包功能,每次使用最強武器這些功能要怎么實現(xiàn)呢?

    不要著急,如果有同學想了解完整的項目實現(xiàn)過程以及代碼分析,可以點擊實戰(zhàn)詳解C++中的數(shù)據(jù)結(jié)構(gòu)觀看公開課的回放視頻!在課上,曉沐老師會帶領(lǐng)大家一步一步實現(xiàn)上面所有的功能。

    同時,如果有同學想要曉沐老師本次塞爾達曠野之息項目源代碼的,記得點擊下方圖片c++

    講師介紹

    曉沐老師,BAT某廠人工智能研究院CV算法工程師,北京航空航天大學智能信息處理方向碩士,主要研究方向是物體檢測、語義分割、三維重建等,具有豐富的移動端C++算法落地經(jīng)驗;同時具備多年授課經(jīng)歷,有豐富的技術(shù)研討和教學經(jīng)驗。

    《Hello,World公開課》是由開課吧推出的面向廣大開發(fā)工程師的免費加餐課,集結(jié)業(yè)內(nèi)名師大咖,聚焦熱門技術(shù)和實戰(zhàn)解決方案,以專業(yè)知識分享交流為橋梁,鏈接正在創(chuàng)造世界的一群科技主力們,向初心致敬,為技術(shù)發(fā)燒。無論你是初入職場的應(yīng)屆生,還是準備升職加薪的職場精英,相信這里都有你需要的養(yǎng)料。

    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    午夜福利激情性生活免费视频| 麻豆蜜桃星空传媒在线观看 | 欧美午夜国产在线观看| 国产情侣激情在线对白| 午夜久久久精品国产精品| 日韩专区欧美中文字幕| 欧美极品欧美精品欧美| 91欧美日韩中在线视频| 国产精品一区二区视频| 婷婷伊人综合中文字幕| 免费黄色一区二区三区| 欧美国产精品区一区二区三区| 国产午夜精品亚洲精品国产| 国产欧美精品对白性色| 精品日韩国产高清毛片| 亚洲综合色婷婷七月丁香| 日本黄色高清视频久久| 日本人妻免费一区二区三区| 欧美区一区二在线播放| 熟女一区二区三区国产| 久草视频这里只是精品| 国产欧美日产久久婷婷| 91偷拍裸体一区二区三区| 日韩丝袜诱惑一区二区| 日韩人妻av中文字幕| 国产欧美日韩精品自拍| 黄片三级免费在线观看| 中文字幕佐山爱一区二区免费| 欧美一级特黄特色大色大片| 久久亚洲午夜精品毛片| 日韩三级黄色大片免费观看| 九九热这里只有免费精品| 欧美日韩综合综合久久久| 欧美性猛交内射老熟妇| 欧美日韩在线第一页日韩| 精品一区二区三区乱码中文| 国产精品视频久久一区| 日韩日韩日韩日韩在线| 欧美在线视频一区观看| 大胆裸体写真一区二区| 日韩熟妇人妻一区二区三区|