使用Java语言的简单猜数字游戏

时间:2019-10-03 18:46:04

标签: javascript

我正在尝试使用JS进行数字猜想游戏,以进行网络开发。问题在于它总是打印keyInYNStrict而没有给用户另一个机会。忽略字符串和变量不是英语的事实。基本上,我希望keyInYNStrict仅在arvaus == arvattava为真并且游戏结束之后才出现。

const minLuku = 1; 
const maxLuku = 30;
const readlineSync = require('readline-sync');
let arvaus, arvattava, arvaustenLkm
do {
    arvaus = readlineSync.question('Ajattelen numeroa 1 ja 30 välillä. Arvaapa vaan');
    arvaustenLkm = 1;
    arvattava = Math.floor(Math.random() * (maxLuku + 1 - minLuku)) + minLuku 
    kelvollinen = !isNaN(arvaus) && arvaus > 0 && arvaus < 31;
    if (!kelvollinen) {
        console.log('Elä viitsi! Laita nyt jokin oikea numero.');
    }
    else if (arvaus < arvattava){
        arvaustenLkm++;
        console.log('Kokeile suurempaa lukua.');
    } else if (arvaus > arvattava){
        arvaustenLkm++;
        console.log('Kokeile pienempää lukua.');
    } else if (arvaus == arvattava){
        console.log('Hienoa. arvasit oikein ' + arvaustenLkm + ' arvauksella.')
    } 

} while (readlineSync.keyInYNStrict('Haluatko arvata uudestaan?'))

1 个答案:

答案 0 :(得分:0)

您将需要嵌套两个while循环。第一种是重复猜测直到找到数字,第二种是询问用户是否希望再次玩。如果将一个游戏分解为一个功能,然后换行“再次播放?”,这一点将变得更加清晰。围绕该功能。

以下内容未经测试。请注意,我还提取了“无效猜测”检查,以将其与游戏逻辑分开。我认为这还可以提高可读性,并允许用户在希望提前结束时选择检查其他退出条件。

编辑:在考虑时,还有另一个问题:您是否要在每次猜测时重置隐藏数字?这可能与预期不一致。我已经修改了代码以反映出来。

const minLuku = 1; // Lower bound
const maxLuku = 30; // Upper bound
const readlineSync = require('readline-sync');
let arvaus, arvattava, arvaustenLkm
do {
        // Number of guesses
        arvaustenLkm = 1; 

        //Target number
        arvattava = Math.floor(Math.random() * (maxLuku + 1 - minLuku)) + minLuku 
    do {
        // User's guess
        arvaus = readlineSync.question('Ajattelen numeroa 1 ja 30 välillä. Arvaapa vaan');

        // Bad guess test
        if (isNaN(arvaus) || arvaus < minLuku || arvaus > maxLuku) {
            console.log('Elä viitsi! Laita nyt jokin oikea numero.');
            continue;
        }

        if (arvaus < arvattava){
            arvaustenLkm++;
            console.log('Kokeile suurempaa lukua.');
        } else if (arvaus > arvattava){
            arvaustenLkm++;
            console.log('Kokeile pienempää lukua.');
        } else if (arvaus == arvattava){
            console.log('Hienoa. arvasit oikein ' + arvaustenLkm + ' arvauksella.')
        }
    } while (arvaus != arvattava)

} while (readlineSync.keyInYNStrict('Play again?'))