一,使用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; // 猜测的次数,初始化为0let 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();