猜数字困难版(1-10000)

小游戏,通过提示每次猜高或猜低以及每次猜中的位数,10次内猜中1-10000的一个数。

javascript 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>猜数字游戏困难版</title>
    <style>
        body {
            text-align: center;
            padding-top: 20px;
        }
    </style>
</head>
<body>
<h1>猜数字游戏困难版</h1>
<p>我已经想了一个1到10000之间的数字。你有10次机会猜它是什么。</p>
<label for="guessInput">输入你的猜测:</label>
<input type="number" id="guessInput" required min="1" max="10000">
<button onclick="checkGuess()">猜!</button>
<button onclick="location.reload()">再来一局!</button>
<p id="output"></p>
<ol id="history"></ol>
<script>
    const secretNumber = Math.floor(Math.random() * 10000) + 1;
    let attempts = 10;
    const history = document.getElementById('history');
    const guessInput = document.getElementById('guessInput');
    const output = document.getElementById('output');
    function checkGuess() {
        const userGuess = parseInt(guessInput.value, 10);
        if (isNaN(userGuess)) {
            output.textContent = '请输入有效的数字!';
            return;
        }
        if (attempts > 0) {
		    attempts--;
            const rightNum = countSameDigits(userGuess, secretNumber)
            const guessItem = document.createElement('li');
            if (userGuess === secretNumber) {
                output.textContent = '恭喜你!你猜对了!游戏胜利!';
                attempts = -1;
            } else if (userGuess < secretNumber) {
                output.textContent = '猜低了。再试一次。';
            } else if (userGuess > secretNumber) {
                output.textContent = '猜高了。再试一次。';
            }
            guessItem.textContent = `猜测: ${userGuess};${output.textContent};猜对了${rightNum}位数`;
            history.appendChild(guessItem);            
            if (attempts > 0) {
                output.textContent += ` 剩余次数: ${attempts}`;
            } else if (attempts == 0) {
                output.textContent = ' 游戏失败。正确答案是: ' + secretNumber;
            }
        }
    }
    function countSameDigits(a, b) {
        // 将数字转换为字符串
        const strA = a.toString();
        const strB = b.toString();
        // 确保两个字符串长度相同,较短的字符串前面补0
        const maxLength = Math.max(strA.length, strB.length);
        strA.padStart(maxLength, '0');
        strB.padStart(maxLength, '0');
        let count = 0; // 用于计数相同位上的相同数
        for (let i = 0; i < maxLength; i++) {
            if (strA[i] === strB[i]) {
                count++;
            }
        }
        return count;
    }
</script>
</body>
</html>
相关推荐
光影少年5 小时前
浏览器渲染原理?
前端·javascript·前端框架
小白探索世界欧耶!~6 小时前
Vue2项目引入sortablejs实现表格行拖曳排序
前端·javascript·vue.js·经验分享·elementui·html·echarts
叫我一声阿雷吧7 小时前
JS实现响应式导航栏(移动端汉堡菜单)|适配多端+无缝交互【附完整源码】
开发语言·javascript·交互
程序员林北北9 小时前
【前端进阶之旅】节流与防抖:前端性能优化的“安全带”与“稳定器”
前端·javascript·vue.js·react.js·typescript
寻星探路9 小时前
【前端基础】HTML + CSS + JavaScript 快速入门(三):JS 与 jQuery 实战
java·前端·javascript·css·c++·ai·html
SuperEugene13 小时前
对象数组的排序与分组:sort / localeCompare / 自定义 compare
前端·javascript·面试
扶苏100214 小时前
“解构”与“响应”的博弈——深入剖析 Vue 3 的 toRef 与 toRefs
前端·javascript·vue.js
Channing Lewis15 小时前
zoho crm的子表添加行时,有一个勾选字段,如何让它在details页面新建子表行(点击add row)时默认是勾选的
开发语言·前端·javascript
董员外15 小时前
LangChain.js 快速上手指南:模型接入、流式输出打造基础
前端·javascript·后端
千寻girling16 小时前
面试官 : “ 请问你实际开发中用过 函数柯理化 吗? 能讲一下吗 ?”
前端·javascript·面试