[英]For every 1 added to var1, add 1 to var2
我目前正在開發一款增量游戲Gold Rush ,並試圖創建一個總的金幣賺取值,該值存儲用戶在整個游戲中獲得的所有金幣,包括花費的金幣。 到目前為止,我已經說過,每次玩家通過點擊或增量器賺取金幣時,它都會增加價值。 隨着游戲變得越來越復雜,我發現這變得越來越難,我正在嘗試制作一個 function,每次它向黃金變量添加 1 時,它都會向 totalGold 變量添加 1。 到目前為止,我已經嘗試過:
if (gameData.gold + 1) {
gameData.totalGold + 1;
}
增量利潤是這樣收集的
function goldPerSecond() {
return gameData.pickaxeGold + gameData.dwarfGold + gameData.gooseGold + gameData.mineGold + gameData.dragonGold + gameData.stoneGold + gameData.stationGold + gameData.leprechaunGold + gameData.sheepGold + gameData.rayGold + gameData.mergerGold;
}
而點點滴滴的利潤就這樣聚集起來
function collectGold() {
gameData.gold += gameData.clickinGold
gameData.clicks += 1
gameData.totalGold += gameData.clickinGold
}
我對 JavaScript 還很陌生,不知道有什么其他方法可以做到。 如果我不必使用 JQuery 會更好。 謝謝你。
我認為你應該在每個金塊上都有一個點擊事件,當點擊時,它應該調用一個 function 加 1,它應該看起來像這樣:
function addGold() { gameData.totalGold++; // Stands for: gameData.totalGold = gameData.totalGold + 1; (New Value = old value + 1) } // A click event for each gold piece, upon clicking, we call the `addGold` to increase the total elem.addEventListener('click', function() { addGold(); });
不確定這是否是您要查找的內容,或者我誤解了您。 在 Codepen 或 JSBin 或任何替代品上進行現場演示將是最好的幫助您!
解決此問題的一種方法是向gold
屬性注冊一個偵聽器,這樣每次遞增時, totalGold
屬性也會隨之增加。 這是一個如何使用 vanilla JS 工作的示例:
gameData = { goldInternal: 0, goldListener: function(val) {}, totalGold: 0, set gold(val) { this.aInternal = val; this.goldListener(); }, get gold() { return this.goldInteral; }, registerGoldListener: function(listener) { this.goldListener = listener; } } gameData.registerGoldListener(() => { gameData.totalGold += 1; }); gameData.gold += 1; console.log(gameData.totalGold); gameData.gold += 1; console.log(gameData.totalGold);
請注意,我引用了這個較早的 SO 帖子。
通常我會把它放在評論中,但我還不能評論,所以這就是我認為你應該做的。
正如你所說,添加到總金幣是乏味的,所以取而代之的是,創建一個添加金幣的 function,像這樣
function addGold(gold) {
gameData.gold = gameData.gold + gold;
gameData.totalGold = gameData.totalGold + gold
}
因此,每當您必須添加黃金時,您只需說addGold(1)
或將1
替換為您想要添加的任何黃金數量,並且黃金將被添加到當前黃金和總黃金中
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.