Как исправить мой камень, бумага, ножницы, код Арнольда?

Я проверил это и исследовал это весь день. Проблема в том, что по какой-то причине я не могу получить никакого результата, кроме stringзначения для var result: 'the result is a tie!'.

Может ли кто-нибудь посмотреть на это и сказать мне, как исправить это так, чтобы другие строковые значения для результата var, когда это уместно?

var Terminator = function(choice1, choice2, result) 
{
    var userChoice = prompt("Do you choose rock, paper or scissors?");
    var computerChoice = Math.random();
    if (computerChoice <= 0.25) {
        computerChoice = "rock";
    } else if(computerChoice <= 0.50) {
        computerChoice = "paper";
    } else if(computerChoice <= 0.75) {
        computerChoice = "scissors";
    } else if(computerChoice <= 0.99) {
        computerChoice = "Arnold Schwarzenegger";
    } 

    {
        if(choice1 === choice2) {
             var result = "The result is a tie!";
        }

        else if (choice1 === "rock") {
            if (choice2 === "scissors") {
                 var result = "rock Wins";
            }
            else if (choice2 === "paper") {
                 var result = "paper Wins";
            }
            else if (choice2 = "Arnold Schwarzenegger") {
                 var result = "You have been TERMINATED";
            }
        }

        else if (choice1 === "scissors") {
            if (choice2 === "rock") {
                 var result = "rock Wins";
            }
            else if (choice2 === "paper") {
                 var result = "scissors Wins";
            }
            else if (choice2 = "Arnold Schwarzenegger") {
                 var result = "You have been TERMINATED";
            }
        }

        else if (choice1 === "paper") {
            if (choice2 === "scissors") {
                 var result = "scissors Wins";
            }
            else if (choice2 === "rock") {
                 var result = "paper Wins";
            }
            else if (choice2 = "Arnold Schwarzenegger") {
                 var result = "You have been TERMINATED";
            }
        } 

        else if (choice1 === "Arnold Schwarzenegger") {
            if (choice2 === "scissors") {
                 var result = "Get to the Chopper!";
            }
            else if (choice2 === "rock") {
                 var result = "Hasta la vista, baby!";
            }
            else if (choice2 = "paper") {
                 var result = "I'll be back";
            }
        } 
    }
  };
    compare(userChoice,computerChoice,Wins);

2 ответа

  1. choice1 и choice2кажется неопределенным из этого кода здесь,

    если это правда, вы в основном звоните

    if(undefined === undefined) doThings;
    

    Простым решением было бы изменение

    choice1 к userChoice

    и

    choice2 к computerChoice

    кроме того, не уверен, что это актуально, но, вы определяете computerChoiceкак число, а затем устанавливаете его в строку.

  2. В коде используются различные переменные: userChoice и computerChoice против choice1 и choice2.
    Если вы сделаете это совместимым, это будет работать nearlyfine. Единственный thinng, который я делаю с вашим кодом:

    • Удалите первую строку с Терминатором и последнюю с compare, потому что я не знаю, для чего они.
    • Установите choice1 и choice2 правильно.
    • Добавьте предупреждение с результатом.
    • Удалить остальное если с

    .

    var userChoice = prompt("Do you choose rock, paper or scissors?");
    var computerChoice = Math.random();
    if (computerChoice <= 0.25) {
        computerChoice = "rock";
    } else if (computerChoice <= 0.50) {
        computerChoice = "paper";
    } else if (computerChoice <= 0.75) {
        computerChoice = "scissors";
    } else {
        computerChoice = "Arnold Schwarzenegger";
    } 
    
    choice1=userChoice;
    choice2=computerChoice;
    
    if (choice1 === choice2) {
        var result = "The result is a tie!";
    }
    else if (choice1 === "rock") {
        if (choice2 === "scissors") {
            var result = "rock Wins";
        }
        else if (choice2 === "paper") {
            var result = "paper Wins";
        }
        else if (choice2 = "Arnold Schwarzenegger") {
            var result = "You have been TERMINATED";
        }
    }
    
    else if (choice1 === "scissors") {
        if (choice2 === "rock") {
            var result = "rock Wins";
        }
        else if (choice2 === "paper") {
            var result = "scissors Wins";
        }
        else if (choice2 = "Arnold Schwarzenegger") {
            var result = "You have been TERMINATED";
        }
    }
    
    else if (choice1 === "paper") {
        if (choice2 === "scissors") {
            var result = "scissors Wins";
        }
        else if (choice2 === "rock") {
            var result = "paper Wins";
        }
        else if (choice2 = "Arnold Schwarzenegger") {
            var result = "You have been TERMINATED";
        }
    } 
    
    else if (choice1 === "Arnold Schwarzenegger") {
        if (choice2 === "scissors") {
            var result = "Get to the Chopper!";
        }
        else if (choice2 === "rock") {
            var result = "Hasta la vista, baby!";
        }
        else if (choice2 = "paper") {
            var result = "I'll be back";
        }
    } 
    alert(result);
    

    Вы сразу получили ответ «результат-ничья!»потому что обе переменные choice1 и choice 2 (с вашим кодом) не инстанцированы и имеют значение null, так что они равны.