Проблема с выдачей результата в игре в Крэпс - PullRequest
0 голосов
/ 08 марта 2019

Я работаю над несколько простой игрой в кости, но не могу отобразить всплывающее окно с предупреждением, когда нажимаю кнопку.

Я также пытаюсь выяснить самый простой способ проверить, есть ли домашний или myscore = maxscore, а затем предупредить "поздравляю, ты выиграл" или "извини, ты проиграл"

Вот мой код:

var myscore = 0;
var maxScore = 100;
var housescore = 0;

function rollDice() {
  var x = Math.floor(Math.random() * 6) + 1;
  var y = Math.floor(Math.random() * 6) + 1;

  if (x + y == 7 || 11) {
    housescore = (housescore + 10);
    alert("CRAPS" + " Your Score is " + "Player: " + myscore + "House: " + housescore);
  } else if (x == y && x + y == isEven(n)) {
    myscore = (myscore + 10);
    alert("Even Up" + " Your Score is " + "Player: " + myscore + "House: " + housescore);
  }
  if (x == y && x + y == isOdd(n)) {
    housescore = (housescore + 10);
    alert("Odd Ball" + " Your Score is " + "Player: " + myscore + "House: " + housescore);
  } else {
    alert("You rolled a " + x + " and a " + y + " Your Score is " + "Player: " + myscore + "House: " + housescore);
  }
}

function isEven(n) {
  return n % 2 == 0;
}

function isOdd(n) {
  return Math.abs(n % 2) == 1;
}
<input type="button" value="Roll The Dice" onClick="rollDice()" />

Ответы [ 3 ]

1 голос
/ 08 марта 2019

Это то, что я думаю, что вы после.Я разбил ваши if для обработки обоих случаев, когда x == y в одной ветви, и использовал простую операцию мода, чтобы определить, был ли бросок кубика четным, а другой - для обработки нечетных бросков кубика.

var myscore = 0;
var maxScore = 100;
var housescore = 0;

function rollDice() {
  var x = Math.floor(Math.random() * 6) + 1;
  var y = Math.floor(Math.random() * 6) + 1;
  
  var total = x + y;
  msg = "You rolled " + x + "," + y + " = " + total + "\n";

  if (total == 7 || total == 11) {
    housescore += 10;
    msg += "CRAPS";
  } else if (x == y) { // this condition contains two possible outcomes, handle both within this else if
    if (x % 2 == 0) {
      myscore += 10;
      msg += "Even Up";
    } else {
      housescore += 10;
      msg += "Odd Ball";
    }
  }
  msg += " Your Score is " + "Player: " + myscore + ", House: " + housescore;
  alert(msg);
}
<!DOCTYPE html>
<html>

<body>
  <input type="button" value="Roll The Dice" onClick="rollDice()" />
</body>

</html>
1 голос
/ 08 марта 2019

Код, как это неправильно:

if (x == y && x + y == isEven(n))

Вы не объявили переменную n. И нет смысла сравнивать сложение двух чисел со значением true или false, которое возвращают isEven() и isOdd(). Я думаю, что вы имели в виду:

if (x == y && isEven(x + y))

Но когда два числа равны, их сложение всегда будет четным, поэтому я не уверен, в чем смысл этого теста. Может быть, вы имеете в виду:

if (x == y && isEven(x))

Я не знаком с правилом в Крэпс, когда дом или игрок выигрывают в зависимости от того, четные или нечетные равные кости.

Это тоже неправильно:

if (x == 7 && y == 11)

x и y - это числа от 1 до 6, поэтому они не могут быть 7 или 11. В кости вы добавляете две кости, поэтому это должно быть:

if (x + y == 7 || x + y == 11)

Нет необходимости в функциях isEven() и isOdd() - число нечетное, если оно не четное.

0 голосов
/ 08 марта 2019

<!DOCTYPE html>
<html>
<body>

<input type="button" value="Roll The Dice" onClick="rollDice()" />
<br />

<script type="text/javascript">
var score = 0;
var maxScore = 50;
var rolls = 0;
var maxRolls = 20;


function rollDice()
{
    var x = Math.floor( Math.random() * 6 ) + 1;
    var y = Math.floor( Math.random() * 6 ) + 1;

    if( x == y )
    {
        score = getScore( x );
        alert("You threw a Double " + x + " Your Score is "+ score);
    }
    else
    {
        alert("You threw a " + x + " and a " + y + " Your Score is " + score);
    }

    rolls++;

    if (rolls == maxRolls && score < maxScore)
    {
        alert("Sorry You Lose!");
        score = 0;
        rolls = 0;
        return;
    }
    else if (score >= maxScore)
    {
        alert("Congratulations You Win!");
        score = 0;
        rolls = 0;
        return;
    }
}

function getScore(x)
{
    switch( x )
    {
        case 1:
            score += 5;
            break;
        case 2:
            score += 5;
            break;
        case 3:
            score = 0;
            break;
        case 4:
            score += 5;
            break;
        case 5:
            score += 5;
            break;
        case 6:
            score += 25;
            break;
    }

    return score;
}
</script>
</body>
</html>
</html>
...