簡體   English   中英

如何以有效的方式編寫Javascript代碼

[英]How to write Javascript code in an efficient way

我有一個游戲,每當用戶的分數為5,10或15時,它就會增加一個新的敵人。 我隨機選擇的數字,並打算稍后改變。

每當玩家達到其中一個分數時,我就能弄清楚如何添加新的敵人,但我必須為每個新分數制作一個新的布爾變量。 如何在沒有很多布爾值的情況下以更智能的方式編寫相同的代碼?

Sketch.js

var addEnemyAt5= true; //boolean I have to create over and over
var addEnemyAt10 = true;
var addEnemyAt15 = true;
var score = 0;

if (score == 5 && enemyScore5) {
  console.log("new enemy at 5");
  addEnemyAt5 = false;

} else if (score == 10 && enemyScore10) {
  console.log("new enemy at 10");
  addEnemyAt10 = false;

} else if (score == 15 && enemyScore15) {
  console.log("new enemy at 15");
  addEnemyAt15 = false;
}

HUD.js

this.scoreUpdate = function() {
  score += 5;
}

您可以創建一個lastScore變量來跟蹤何時考慮了對score更改:

Sketch.js:

var lastScore = 0
var score = 0

if (score > lastScore) {
  if (score === 5) {
    console.log("new enemy at 5")
  } else if (score === 10) {
    console.log("new enemy at 10")
  } else if (score === 15) {
    console.log("new enemy at 15")
  }
  lastScore = score
}

HUD.js:

this.scoreUpdate = function() {
  score += 5
}


演示片段:

 var lastScore = 0 var score = 0 setInterval(function SketchDotJS() { if (score > lastScore) { if (score === 5) { console.log("new enemy at 5") } else if (score === 10) { console.log("new enemy at 10") } else if (score === 15) { console.log("new enemy at 15") } lastScore = score } }, 10) ;(function HUDDotJS() { this.scoreUpdate = function() { score += 5 } })() 
 <!-- Boilerplate code to get the demo to work --> <button onclick="scoreUpdate()">Increase <var>score</var> by 5</button> <pre><var>score</var> = <span id="score">0</span></pre> <script>setInterval(function(e){score===+e.textContent||(e.textContent=score)},10,document.getElementById('score'))</script> 

或許嘗試:

createEnemyAtScore = {
    5: true,
    10: true,
    15: true
};
var score = 10;

if (createEnemyAtScore[score]) {
    // create your enemy... or whatever..
}

但我建議將此問題移至CodeReview

您可以將主題組織到對象中

var milestoneMet = {
    5: false,
    10: false,
    15: false
};

// for each milestone, check and set milestoneMet

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM