国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁(yè) web前端 js教程 Hacktoberfest 對(duì) ZTM-Quest 的貢獻(xiàn)

Hacktoberfest 對(duì) ZTM-Quest 的貢獻(xiàn)

Oct 23, 2024 pm 12:59 PM

Hacktoberfest contribution to ZTM-Quest

介紹

對(duì)於我對(duì)Hacktoberfest 的第三次貢獻(xiàn),我發(fā)現(xiàn)了一個(gè)我從未想過(guò)會(huì)是我會(huì)貢獻(xiàn)的存儲(chǔ)庫(kù),這個(gè)存儲(chǔ)庫(kù)特別以JavaScript 中的2D 遊戲開(kāi)發(fā)為中心,因?yàn)槲乙呀?jīng)掌握了JavaScript 的工作知識(shí),潛水和探索程式碼庫(kù)不會(huì)成為問(wèn)題,因此我選擇了此儲(chǔ)存庫(kù)中的問(wèn)題之一來(lái)做出貢獻(xiàn)。

ZTM-探索

該儲(chǔ)存庫(kù)被命名為 ZTM-Quest

問(wèn)題

我要解決的問(wèn)題與向遊戲添加片尾字幕場(chǎng)景有關(guān),該場(chǎng)景會(huì)從Github API 動(dòng)態(tài)獲取貢獻(xiàn)者的姓名,還會(huì)獲取資源片尾字幕並將其顯示在滾動(dòng)方式,類(lèi)似於現(xiàn)在普通2D 遊戲的方式。

要包含的其他功能有

  • 加入觸發(fā)片尾場(chǎng)景和退出場(chǎng)景的按鈕
  • 透過(guò)鍵盤(pán)提供退出/觸發(fā)製作人員名單的選項(xiàng)

卡普拉

整個(gè)程式使用了KAPLAY框架,這是一個(gè)可以在Javascript中使用來(lái)製作2D遊戲的框架

這背後的整個(gè)抽象思想是擁有可以相互互動(dòng)以觸發(fā)互動(dòng)的各種組件或角色。開(kāi)發(fā)人員可以在程式中提供的背景圖像在這裡被稱為精靈,它甚至可以是可以放置角色或組件並可以導(dǎo)致不同互動(dòng)的地圖

我發(fā)現(xiàn)大多數(shù) 2D 遊戲開(kāi)發(fā)都涉及在 2D 平面中對(duì)物件進(jìn)行幾何操作,並添加互動(dòng)和動(dòng)態(tài)調(diào)整大小的功能

所做的核心改變

我在這裡所做的核心更改如下

直覺(jué)

接下來(lái)的直覺(jué)是程式將有 3 個(gè)元件,一個(gè)背景,一個(gè)文字容器或文字本身,以及一個(gè)退出按鈕

我的第一次迭代更改涉及進(jìn)行這些更改,但後來(lái)我意識(shí)到在後臺(tái)也有一個(gè)精靈會(huì)更好,所以我做了以下更改

    const background = k.add([
        k.sprite("backgroundImage", { width: k.width(), height: k.height() }),
        k.pos(0, 0),
        k.opacity(0.2),
        k.scale(1),
        k.z(60),
        k.fixed()
    ]);


    const overlay = k.add([
        k.rect(k.width(), k.height()),
        k.pos(0, 0),
        k.color(0, 0, 0),  // 40% transparent black
        k.z(50),  
        k.fixed()
    ]);

    // Add the credit text
    const center = k.vec2((k.canvas.width / 2), k.canvas.height / 2);
    const text = k.add([
        k.text(creditText, {
            size: 15 / camScale,
            width: k.width() * 0.9 / camScale,
            lineSpacing: 15 / camScale,
            align: "center"
        }),
        k.pos(k.width() / 2, k.height()),
        k.anchor("top"),
        k.color(255, 255, 255),
        k.z(101),
        k.scale(camScale)
    ]);

    const crossButton = k.add([
        k.rect(65, 35),
        k.color(255, 0, 0),
        k.anchor('topright'),
        k.z(101),
        k.area(),
        k.scale(1),
    ]);

    const exitText = k.add([
        k.text("Exit", { size: 26 / camScale }),
        k.color(255, 255, 255),
        k.anchor("topright"),
        k.z(102),
        k.scale(camScale)
    ]);

可以看出,我還放置了一個(gè)覆蓋層,以使圖像比文字本身更不清晰

至於要顯示的文本,我創(chuàng)建了兩個(gè)函數(shù)來(lái)為我獲取數(shù)據(jù),然後我可以將其放入 CreditText 字段

export async function getAssets(){
    const fileSHA = await fetch("https://api.github.com/repos/zero-to-mastery/ZTM-Quest/contents/asset_credits.md")
    const data = await fileSHA.json()
    const fileContents = atob(data.content)
    return fileContents.split("\n").filter(content=>content.trim()!=='').join("\n")
}

export async function getContributors(){
    const contributors = await fetch("https://api.github.com/repos/zero-to-mastery/ZTM-Quest/contributors")
    const data = await contributors.json()
    return data.map((person)=>{
        return person.login
    }).join("\n")

}

我相信,每當(dāng)請(qǐng)求 API 獲取數(shù)據(jù)時(shí),90% 的任務(wù)是轉(zhuǎn)換數(shù)據(jù),以便開(kāi)發(fā)人員可以最佳地利用它,這就是我在這裡所做的。

我的回購(gòu)經(jīng)驗(yàn)

說(shuō)實(shí)話,這是我在不知道如何在JavaScript 中使用2D-GameDev 框架之前研究過(guò)的最有趣的問(wèn)題之一,這給了我急需的經(jīng)驗(yàn),我很高興為此做出貢獻(xiàn)

事實(shí)上,我在為此做出貢獻(xiàn)時(shí)學(xué)到的其他事情之一是正確使用 git rebase 和 git checkout -B

這些指令確實(shí)為我節(jié)省了時(shí)間,

我經(jīng)常使用 git rebase 來(lái)使我的問(wèn)題分支與合併到上游主分支的更改同步,並避免衝突

當(dāng)我曾經(jīng)搞亂分支上的程式碼並想回到最新的工作提交時(shí),我使用了 git checkout -B

我通常會(huì)做以下事情

    const background = k.add([
        k.sprite("backgroundImage", { width: k.width(), height: k.height() }),
        k.pos(0, 0),
        k.opacity(0.2),
        k.scale(1),
        k.z(60),
        k.fixed()
    ]);


    const overlay = k.add([
        k.rect(k.width(), k.height()),
        k.pos(0, 0),
        k.color(0, 0, 0),  // 40% transparent black
        k.z(50),  
        k.fixed()
    ]);

    // Add the credit text
    const center = k.vec2((k.canvas.width / 2), k.canvas.height / 2);
    const text = k.add([
        k.text(creditText, {
            size: 15 / camScale,
            width: k.width() * 0.9 / camScale,
            lineSpacing: 15 / camScale,
            align: "center"
        }),
        k.pos(k.width() / 2, k.height()),
        k.anchor("top"),
        k.color(255, 255, 255),
        k.z(101),
        k.scale(camScale)
    ]);

    const crossButton = k.add([
        k.rect(65, 35),
        k.color(255, 0, 0),
        k.anchor('topright'),
        k.z(101),
        k.area(),
        k.scale(1),
    ]);

    const exitText = k.add([
        k.text("Exit", { size: 26 / camScale }),
        k.color(255, 255, 255),
        k.anchor("topright"),
        k.z(102),
        k.scale(camScale)
    ]);

結(jié)論

這是我的第三次 Hacktoberfest 貢獻(xiàn),我喜歡為開(kāi)源做出貢獻(xiàn),這次我獲得的實(shí)踐經(jīng)驗(yàn)是無(wú)與倫比的

以上是Hacktoberfest 對(duì) ZTM-Quest 的貢獻(xiàn)的詳細(xì)內(nèi)容。更多資訊請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開(kāi)發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)程式碼編輯軟體(SublimeText3)

熱門(mén)話題

Java vs. JavaScript:清除混亂 Java vs. JavaScript:清除混亂 Jun 20, 2025 am 12:27 AM

Java和JavaScript是不同的編程語(yǔ)言,各自適用於不同的應(yīng)用場(chǎng)景。 Java用於大型企業(yè)和移動(dòng)應(yīng)用開(kāi)發(fā),而JavaScript主要用於網(wǎng)頁(yè)開(kāi)發(fā)。

JavaScript評(píng)論:簡(jiǎn)短說(shuō)明 JavaScript評(píng)論:簡(jiǎn)短說(shuō)明 Jun 19, 2025 am 12:40 AM

JavascriptconcommentsenceenceEncorenceEnterential gransimenting,reading and guidingCodeeXecution.1)單inecommentsareusedforquickexplanations.2)多l(xiāng)inecommentsexplaincomplexlogicorprovideDocumentation.3)

如何在JS中與日期和時(shí)間合作? 如何在JS中與日期和時(shí)間合作? Jul 01, 2025 am 01:27 AM

JavaScript中的日期和時(shí)間處理需注意以下幾點(diǎn):1.創(chuàng)建Date對(duì)像有多種方式,推薦使用ISO格式字符串以保證兼容性;2.獲取和設(shè)置時(shí)間信息可用get和set方法,注意月份從0開(kāi)始;3.手動(dòng)格式化日期需拼接字符串,也可使用第三方庫(kù);4.處理時(shí)區(qū)問(wèn)題建議使用支持時(shí)區(qū)的庫(kù),如Luxon。掌握這些要點(diǎn)能有效避免常見(jiàn)錯(cuò)誤。

為什麼要將標(biāo)籤放在的底部? 為什麼要將標(biāo)籤放在的底部? Jul 02, 2025 am 01:22 AM

PlacingtagsatthebottomofablogpostorwebpageservespracticalpurposesforSEO,userexperience,anddesign.1.IthelpswithSEObyallowingsearchenginestoaccesskeyword-relevanttagswithoutclutteringthemaincontent.2.Itimprovesuserexperiencebykeepingthefocusonthearticl

JavaScript與Java:開(kāi)發(fā)人員的全面比較 JavaScript與Java:開(kāi)發(fā)人員的全面比較 Jun 20, 2025 am 12:21 AM

JavaScriptIspreferredforredforwebdevelverment,而Javaisbetterforlarge-ScalebackendsystystemsandSandAndRoidApps.1)JavascriptexcelcelsincreatingInteractiveWebexperienceswebexperienceswithitswithitsdynamicnnamicnnamicnnamicnnamicnemicnemicnemicnemicnemicnemicnemicnemicnddommanipulation.2)

JavaScript:探索用於高效編碼的數(shù)據(jù)類(lèi)型 JavaScript:探索用於高效編碼的數(shù)據(jù)類(lèi)型 Jun 20, 2025 am 12:46 AM

javascripthassevenfundaMentalDatatypes:數(shù)字,弦,布爾值,未定義,null,object和symbol.1)numberSeadUble-eaduble-ecisionFormat,forwidevaluerangesbutbecautious.2)

什麼是在DOM中冒泡和捕獲的事件? 什麼是在DOM中冒泡和捕獲的事件? Jul 02, 2025 am 01:19 AM

事件捕獲和冒泡是DOM中事件傳播的兩個(gè)階段,捕獲是從頂層向下到目標(biāo)元素,冒泡是從目標(biāo)元素向上傳播到頂層。 1.事件捕獲通過(guò)addEventListener的useCapture參數(shù)設(shè)為true實(shí)現(xiàn);2.事件冒泡是默認(rèn)行為,useCapture設(shè)為false或省略;3.可使用event.stopPropagation()阻止事件傳播;4.冒泡支持事件委託,提高動(dòng)態(tài)內(nèi)容處理效率;5.捕獲可用於提前攔截事件,如日誌記錄或錯(cuò)誤處理。了解這兩個(gè)階段有助於精確控制JavaScript響應(yīng)用戶操作的時(shí)機(jī)和方式。

See all articles