一段简单的JS代码,我却一次次收到同样的结果,我想,我可能是做了一个逻辑错误。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一段简单的JS代码,我却一次次收到同样的结果,我想,我可能是做了一个逻辑错误。相关的知识,希望对你有一定的参考价值。

我正在自学JS,想自己解决一个挑战,但我觉得我的代码逻辑是错误的,因为我一直得到同样的结果return,一遍又一遍,就是'There's a tie!'。

关于这个任务。

可能的结果是:

熊攻击人类,人类解除枪械,枪射杀熊,如果平局,那么游戏以平局结束。

挑战:我们的代码将把游戏分为四个部分,分别是:熊击倒人.人解除枪.枪射杀熊.如果出现平局,则游戏以平局结束。我们的代码将把游戏分为四个部分:

获取用户的选择.获取电脑的选择.比较两个选择并确定一个赢家.启动程序并显示结果.

//Getting the user's choice.

let options = ['bear','human','gun'];

function getUsersChoice (){
    return usersChoice = options[Math.floor(Math.random()*3)];
}
getUsersChoice();

// Getting computer's choice.
function getComputersChoice (){
    return computersChoice = options[Math.floor(Math.random()*3)];
}
getComputersChoice();

//Compare the two choices and determine a winner.
function determineWinner (usersChoice , computersChoice){
        if(usersChoice ===  computersChoice){
        return 'There\'s a tie!';
        }
        if( usersChoice === 'bear'){
            if(computersChoice === human){
            return 'bear mauls human.';
            }else {
            return 'gun shoots bear.';
            }
        }
        if (usersChoice === 'human'){
            if(computersChoice === 'gun'){
            return 'human disarms gun.';
            }else {
            return ' bear mauls human.';
            }
        }
        if (usersChoice === 'gun'){
            if(computersChoice === 'bear'){
            return 'gun shoots bear.';
            }else {
            return 'human disarms gun.';
            }


        }




}
determineWinner();
答案

你需要交出选择。

function getUsersChoice() {
    return options[Math.floor(Math.random() * 3)];
}

function getComputersChoice() {
    return options[Math.floor(Math.random() * 3)];
}

function determineWinner(usersChoice, computersChoice) {
    if (usersChoice === computersChoice) return 'There\'s a tie!';
    if (usersChoice === 'bear') {
        if (computersChoice === 'human') return 'bear mauls human.';
        return 'gun shoots bear.';
    }
    if (usersChoice === 'human') {
        if (computersChoice === 'gun') return 'human disarms gun.';
        return 'bear mauls human.';
    }
    if (usersChoice === 'gun') {
        if (computersChoice === 'bear') return 'gun shoots bear.';
        return 'human disarms gun.';
    }
}

let options = ['bear', 'human', 'gun'];
console.log(determineWinner(getUsersChoice(), getComputersChoice()));
另一答案

试试这个

    let options = ['bear','human','gun'];

function getUsersChoice (){
    return options[Math.floor(Math.random()*3)];
}
var userChoice = getUsersChoice();

// Getting computer's choice.
function getComputersChoice (){
    return options[Math.floor(Math.random()*3)];
}
var computerChoice = getComputersChoice();

//Compare the two choices and determine a winner.
function determineWinner (usersChoice , computersChoice){
        if(usersChoice ===  computersChoice){
        return 'There\'s a tie!';
        }
        if( usersChoice === 'bear'){
            if(computersChoice === human){
            return 'bear mauls human.';
            }else {
            return 'gun shoots bear.';
            }
        }
        if (usersChoice === 'human'){
            if(computersChoice === 'gun'){
            return 'human disarms gun.';
            }else {
            return ' bear mauls human.';
            }
        }
        if (usersChoice === 'gun'){
            if(computersChoice === 'bear'){
            return 'gun shoots bear.';
            }else {
            return 'human disarms gun.';
            }


        }




}
determineWinner();

以上是关于一段简单的JS代码,我却一次次收到同样的结果,我想,我可能是做了一个逻辑错误。的主要内容,如果未能解决你的问题,请参考以下文章

求一段24小时执行一次的JS代码

面试,我却输在了简单的冒泡排序....

一段js代码怎么只运行一次

面试字节跳动,收到offer后我却拒绝了 ,给面试人的一些忠告!

面试字节跳动,收到offer后我却拒绝了 ,给面试人的一些忠告!

队列的性能?期望有大量的 RAM 使用,但我却得到大量的 CPU 使用