猜数字小游戏

// 猜数字游戏 游戏规则:4个0-9之间的随机数由系统随机生成,每一位各不相同 // 数字和位置都正确返回A 只有数字正确位置不正确返回B let readline = require('readline-sync'); // 判断数字是否重复函数 接收一个参数 这个参数是数组 let isRepeat = function(arr){ let length = arr.length; for(let i=0;i<length;i++){ for(let j=i+1;j<length;j++){ if(arr[i] === arr[j]){ return 1; // 代表有重复 } } } return 0; // 代表没有重复 } // 电脑生成4位不相同数字的函数 let randomNum = function(){ let num; // 用于生成0-9之间的随机数 let comNum = []; // 最终要返回的生成的数,用数组来装 while(true){ comNum.length = 0; for(let i=0;i<4;i++){ num = Math.floor(Math.random()*10); comNum.push(num); } if(!isRepeat(comNum)){ return comNum; } } } // 程序的主函数 let main = function(){ let guessNum; // 用于接收用户输入的数字 let a = 0,b = 0,chance = 10; // a代表A的个数 b代表B的个数 chance代表猜测机会 let saySth = ['加油','还差一点了','就快猜中了','小伙子怎么回事儿','整理下思路']; // 鼓励语句 let comNum = randomNum(); // 调用randomNum函数来生成随机数 while(chance){ // 退出这个死循环有两种情况 一种是玩家猜对了,chance还有剩余,还有一种就是chance用完了,变为了0 console.log('请输入你要猜测的数字'); guessNum = readline.question(''); if(guessNum.length!=4){ console.log('你输入的数字的位数不正确'); }else if(isNaN(Number(guessNum))){ console.log('你输入的数字有问题!'); }else{ guessNum = guessNum.split(''); // 将字符串转为数组 let repeat = isRepeat(guessNum); if(repeat === 0){ // 说明用户输入的数字不重复,接下来就要开始进行比较了 for(let i=0;i<guessNum.length;i++){ for(let j=0;j<comNum.length;j++){ // 判断数字是否相等 if(guessNum[i] == comNum[j]){ // 判断下标是否相等 if(i === j){ a++; }else{ b++; } } } } // 对a进行判断 如果为4 说明猜中了 if(a === 4){ console.log('恭喜你,猜对了'); break; // 跳出while循环 }else{ chance--; // 机会自减 console.log(`${a}A${b}B`); if(chance != 0){ let index = Math.floor(Math.random()*saySth.length); console.log(`你还剩下${chance}次机会,${saySth[index]}`); } // 一定要将a和b重置 a = 0; b = 0; } } else{ console.log('您输入的数字重复了'); } } } if(chance === 0){ console.log('很遗憾,你已经没有机会了!'); console.log('电脑生成的数字为:',comNum); }else{ console.log('小哥哥真厉害,猜对了'); console.log('游戏结束!Thank you for playing'); } } main();

猜你喜欢

转载自www.cnblogs.com/yj19930530/p/8977791.html