如何使用函数更改变量的值?

时间:2019-06-19 03:25:38

标签: javascript

我正在为“数字猜猜游戏”构建代码。每次播放后如何更改比分?

这是我第一次在线课程的无偿分配。我对使用什么方法来实现某些结果没有基本的了解,因此我为菜鸟问题预先道歉。

我陷入了任务5:

创建一个updateScore()函数。此功能将用于在每个回合之后正确增加获胜者的分数。

此功能:

具有单个参数。此参数将是代表获胜者的字符串值。 根据传递给updateScore的获胜者,将分数变量(humanScore或computerScore)增加1。传入的字符串将是“ human”或“ computer”。 不需要返回任何值。

首先:为什么我需要首先创建一个功能来更改记分板?在“ compareGuesses”功能中设置获胜者之后,我是否可以编写代码来更改它?

这是我到目前为止所拥有的:

//在下面编写您的代码:

let humanScore = 0;
let computerScore = 0;
let currentRoundNumber = 1;


const generateTarget = Math.floor(Math.random() * 9)

const compareGuesses = (humanGuess, computerGuess,targetGuess) => {
  if (Math.abs (humanGuess-targetGuess() )<Math.abs( computerGuess-targetGuess() )){ return true;                                                                        
} else if  (Math.abs (humanGuess-targetGuess() )> Math.abs( computerGuess-targetGuess() )){
  return false; 
}

}


const updateScore = (winner) => {
  if (compareGuesses= true) {
}

3 个答案:

答案 0 :(得分:3)

  

首先:为什么我需要创建一个函数来更改   计分板放在首位?我不能只是编写代码来更改它   在“ compareGuesses”功能中设置赢家之后?

是的,您可以这样做,但是为了帮助提高代码的可维护性(以及许多其他事情),将较大的应用程序/问题的独立块或模块拆分为较小的功能通常是个好主意。这个想法被称为decomposition。因此,通过创建诸如updateScorecompareGuesses之类的单独函数,可以将更大的问题分解为更小的,更易于维护的问题。


现在使用您的updateScore函数。您的描述说它将接受"human""computer"的字符串。您需要检查获胜者是"human"还是"computer",并更新相关的得分变量。这是一个有关如何实现此目的的示例:

const updateScore = (winner) => {
  if(winner === 'human') {
    humanScore += 1; // humanScore++; will also work here
  } else if(winner === 'computer') {
    computerScore += 1; // computerScore++; will also work here
  }
}

答案 1 :(得分:0)

因此,如果您想提高球员的得分(如果他猜对了数字)而希望提高计算机的得分(如果猜对不正确的话),则该功能可能如下所示:

function score(humanScore, computerScore)  {
    if (humanGuess - computerGuess === 0) {
        humanScore += 1
  } 
    else {
        computerScore += 1
   } 
alert(humanScore) 
alert(computerScore) 
}

当然,您需要调用如下函数:

score(humanScore, computerScore)

答案 2 :(得分:0)

尝试这样的事情:


class Game {
  humanScore = 0;
  computerScore = 0;
  currentRoundNumber = 1;

  target = 0;

  generateTarget() {
    this.target = Math.floor(Math.random() * 9)
  }

  nextRound(humanGuess, computerGuess) {
    this.currentRoundNumber++;

    if (Math.abs(humanGuess-this.target) < Math.abs(computerGuess-this.target))
      this.humanScore++;                                                  
    else if (Math.abs(humanGuess-this.target) > Math.abs(computerGuess-this.target))
      this.computerScore++;
  }
}

const game = new Game();
game.generateTarget();
game.nextRound(333, 42);

PS:StackOverflow不在这里做作业。 :)