四位数的猜数游戏

猜数游戏:

三个获取随机数的方法:随机数
规则:随机出四个数字且四位数字不相等且里面不能包含0,要求只能猜数10次,定义一个几a几b来提示自己数字对了几个,当猜数和你输入的数字:值相等且位置相等时a加1(a加了这个数字后b就不能加这个数字了),当里面有值相等且位置不同时b加1;知道输出的提示为4a0b时,则输出猜数正确,猜数为XXXX.

方法一

const re = require('readline-sync');
// 1.随机出一个四位数的字符串,然后把他弄成一个数组
let max = 9,min = 1;
let temp = [] ;//随机数

// 1.随机生成四个不相同的数字
let first,last;  //查重,first为前往后查找,last为从后往前找
for(let i=0;i<10;i++){
    // temp[i] = parseInt(Math.random()*(max-min+1)+min);  
    let str = parseInt(Math.random()*(max-min+1)+min); //装随机数的字符串
    temp.push(str);   //temp为存放的四位随机数
    for(let i=0;i<temp.length;){
        // console.log(arr[i]);
        first = temp.indexOf(temp[i]);
        // console.log(temp);
        last = temp.lastIndexOf(temp[i]);
        // console.log(index);
        if(first != last){
            temp.splice(last,1); 
        }
        else{
            i++;
        }
        
    }
    str = '';
    if(temp.length==4){ //判断数组长度为四则跳出
        break;   
    }
    
}
// console.log(temp);
//2.设置只有一共只有十次机会
let a=0,b=0;  //a控制数字和位置是否相等,b控制其中一个是否相等
for(let count=10;count>0;){
    console.log('请输入四位你猜的数字,数字请用空格隔开');
    let num = re.question();
    // console.log(num);
    let sum = num.split(' ');  //sum为你输入的数组,把输入的字符串转换成数组    
    if(sum.length==4){
        // console.log(sum);
        // console.log(temp);
        for(let k=0;k<temp.length;k++){//k是它的下标
            for(let f=0;f<temp.length;f++){//f是数组的值
                if(temp[k]==sum[f]){ //判断值和下标是否相等,相等的话a+1
                    if(k==f){  //判断值和下标有一个相等就b+1
                        a++;
                    }else{
                        b++;                       
                    }
                }
               
            }
        }
        if(a==4&&b==0){//当有4A0B的时候,就猜数成功
            console.log(`${a}A${b}B,猜数成功,数为${sum}`);
            break;
        }else{
            count--;  
            if(count==0){
                console.log('你输了,拜拜');
            }     
            else{
                console.log(`${a}A${b}B,你还有${count}次机会`);
            }                 
            a=0,b=0;
        }
    }else{
        count--;
        if(count==0){
            console.log('多次输入错误,拜拜');
        }
        else{
            console.log(`你输的格式不对,你还有${count}次机会`);
        }
        
    }
    
    
}

方法二

const rs = require('readline-sync');
//1、电脑生成一个4位数
//存储电脑生成的数据
let pcNum = [];
//存储随机数
let ranNum = "";
while (pcNum.length < 4) {
    ranNum = parseInt(Math.random() * 9) + 1;
    pcNum.includes(ranNum) ? "" : pcNum.push(ranNum);
}
console.log(pcNum);

//主程序
let count = 3;
//2、获取用户的数据
while (count) {
    let A = 0;
    let B = 0;
    console.log(`欢迎进入猜数字游戏,请输入不重复的4位数(不包含0)`);
    let inputNum = rs.question().split("");
    // console.log(inputNum);
    //3、判断用户输入的内容是否匹配电脑的数据(10次机会)
    for (let index = 0; index < pcNum.length; index++) {
        //3.1 如果位置和值都相同,则A自增
        // console.log(pcNum[index], inputNum[index], pcNum[index] == inputNum[index]);
        if (pcNum[index] == inputNum[index]) {
            A++;
        } else if (pcNum.includes(inputNum[index] - 0)) {
            //3.2 如果值都相同,但位置不同,则B自增
            B++;
        }
    }
    //判断是否成功
    if (A == 4) {
        console.log(`恭喜成功!`);
    } else {
        if (count > 1) {
            console.log(`${A}A${B}B,您还有${count}次机会`);
        } else {
            console.log(`10次机会已经用完,电脑数字为${pcNum}`);
        }
        --count;
    }
}
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值