猜数游戏:
三个获取随机数的方法
:随机数
规则:随机出四个数字且四位数字不相等且里面不能包含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;
}
}