利用JavaScript实现猜数字
一,使用while循环实现
以下代码为固定数字非随机数,答案通过弹窗来设置,结果太唯一。
let number;
while (true) {
number = prompt('我正在想一个1-10的数字,你猜猜看?');
switch (number) {
case "1":
alert("小了");
// prompt('我正在想一个1-10的数字,你猜猜看?')
break;
case "2":
alert("小了");
// prompt('我正在想一个1-10的数字,你猜猜看?')
break;
case "3":
alert("小了");
// prompt('我正在想一个1-10的数字,你猜猜看?')
break;
case "4":
alert("接近了");
// prompt('我正在想一个1-10的数字,你猜猜看?')
break;
case "5":
alert("接近了");
// prompt('我正在想一个1-10的数字,你猜猜看?')
break;
case "6":
alert("答对了!!!!!!!!!!!!!!!!!!!!!")
break;
case "7":
alert("大了")
// prompt('我正在想一个1-10的数字,你猜猜看?')
break;
case "8":
alert("大了")
// prompt('我正在想一个1-10的数字,你猜猜看?')
break;
case "9":
alert("有点大了")
// prompt('我正在想一个1-10的数字,你猜猜看?')
break;
case "10":
alert("太大了")
// prompt('我正在想一个1-10的数字,你猜猜看?')
break;
default:
alert("请输入1-10的数字")
// prompt('我正在想一个1-10的数字,你猜猜看?')
// break;
}
}
二,使用for循环来实现
以下代码添加了获取一个1-100的随机数(Math.random)并向上取整(Math.floor),并且添加了猜测的次数为10次,满十次就结束抽奖。每次答案都不唯一,更有趣味。
// 生成一个1 - 100之间的随机数作为要猜测的数字
let getNumber = Math.floor(Math.random() * 100) + 1;
let guessFois = 0; /* 次数 */
for (let i = 0; i < 10; i++) {
/* 每次循环+1次 */
guessFois++;
//声明一个变量存用户输入的数字
let guess = parseInt(prompt("请输入1 - 100之间的数字"));
if (guess == getNumber) {
alert("猜对了");
break;
} else if (guess < getNumber) {
alert("猜小了");
} else {
alert("猜大了");
}
if (i == 9) {
alert("10次机会用完了,正确数字是 " + getNumber + " ,下次再试试吧。");
}
}
三,使用函数封装
函数封装猜数字的代码,可以在代码的任何地方调用,更方便简洁,大幅度降低了代码量。
/* 不用for/while 用函数封装 */
let times = 0; // 猜测的次数,初始化为0
let getNumber = Math.floor(Math.random() * 100) + 1; // 生成随机数供猜测
function numberIs() {
/* 上判断先判断次数 */
if (times >= 10) {
// 10次机会用完的情况下
alert("10次机会用完了,正确数字是 " + getNumber + " 你真笨哈哈哈");
/* 反值 并结束 */
return;
}
// 给弹窗命名
let guess = prompt("请输入1 - 100之间的数字");
// 判断结果,如果等于
if (guess == getNumber) {
// 弹窗并结束 (相当于结束当前的猜测流程)
alert("猜对了");
return;
/* 否则 */
} else if (guess < getNumber) {
alert("猜小了");
/* 否则 */
} else {
alert("猜大了");
}
times++; // 猜测次数加1
/* 🤩 这是启动整个猜数字游戏流程的初始调用,让游戏开始运行 */
numberIs(); // 调用自身,继续下一轮猜测
}
/* 再次调用函数
🤩 这里调用两次函数 是为了不用for/while来实现循环*/
numberIs();