文字猜测游戏是前端入门阶段非常实用的练手项目,核心是通过JavaScript处理用户交互、状态管理和逻辑判断,最终实现一个可交互的猜词应用。整个应用包含随机选词、输入处理、结果反馈、游戏重置等核心功能,不需要引入额外框架就能完成开发。

基础页面结构搭建
首先需要搭建游戏的基础HTML结构,包含显示目标词长度、输入区域、反馈区域、操作按钮等元素,结构如下:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>猜词游戏</title>
<style>
.container {
max-width: 600px;
margin: 20px auto;
padding: 20px;
font-family: Arial, sans-serif;
}
.word-display {
font-size: 24px;
letter-spacing: 8px;
margin: 20px 0;
min-height: 30px;
}
.input-area {
margin: 20px 0;
}
input {
padding: 8px;
width: 200px;
margin-right: 10px;
}
button {
padding: 8px 16px;
cursor: pointer;
}
.feedback {
margin: 20px 0;
color: #333;
min-height: 24px;
}
.history {
margin-top: 20px;
color: #666;
}
</style>
</head>
<body>
<div class="container">
<h1>文字猜测游戏</h1>
<p>请猜测一个单词,每次输入一个字母,猜对字母会显示在对应位置</p>
<div class="word-display" id="wordDisplay"></div>
<div class="input-area">
<input type="text" id="guessInput" maxlength="1" placeholder="输入单个字母">
<button id="submitBtn">提交猜测</button>
<button id="resetBtn">重置游戏</button>
</div>
<div class="feedback" id="feedback"></div>
<div class="history">
<p>已猜字母:<span id="guessedLetters"></span></p>
<p>剩余机会:<span id="remainingChances">6</span></p>
</div>
</div>
<script src="game.js"></script>
</body>
</html>
核心游戏逻辑实现
接下来编写JavaScript核心逻辑,主要分为几个部分:初始化游戏数据、处理用户猜测、更新游戏状态、判断游戏胜负。
初始化游戏数据
首先需要准备词库,随机选择一个目标词,同时初始化已猜字母、剩余机会等状态变量:
// 词库,可自定义扩展
const wordList = ['apple', 'banana', 'cherry', 'grape', 'orange', 'peach', 'lemon'];
// 游戏状态变量
let targetWord = ''; // 目标词
let guessedLetters = []; // 已猜字母数组
let remainingChances = 6; // 剩余猜测机会
let gameOver = false; // 游戏是否结束
// 初始化游戏
function initGame() {
// 随机选词
targetWord = wordList[Math.floor(Math.random() * wordList.length)];
guessedLetters = [];
remainingChances = 6;
gameOver = false;
// 更新页面显示
updateWordDisplay();
updateFeedback('游戏开始,请输入单个字母进行猜测');
updateGuessedLetters();
document.getElementById('remainingChances').textContent = remainingChances;
document.getElementById('guessInput').value = '';
document.getElementById('guessInput').disabled = false;
document.getElementById('submitBtn').disabled = false;
}
// 初始化时启动游戏
initGame();
更新目标词显示
目标词需要隐藏未猜对的字母,用下划线代替,猜对的字母显示对应位置:
// 更新目标词显示
function updateWordDisplay() {
const wordDisplay = document.getElementById('wordDisplay');
let displayText = '';
for (let i = 0; i < targetWord.length; i++) {
const letter = targetWord[i];
if (guessedLetters.includes(letter)) {
displayText += letter + ' ';
} else {
displayText += '_ ';
}
}
wordDisplay.textContent = displayText.trim();
}
处理用户猜测逻辑
用户提交猜测后,需要校验输入合法性,判断字母是否在目标词中,更新对应状态:
// 处理猜测提交
document.getElementById('submitBtn').addEventListener('click', handleGuess);
// 支持回车提交
document.getElementById('guessInput').addEventListener('keypress', function(e) {
if (e.key === 'Enter') {
handleGuess();
}
});
function handleGuess() {
if (gameOver) {
updateFeedback('游戏已结束,请点击重置按钮开始新游戏');
return;
}
const input = document.getElementById('guessInput');
const guess = input.value.toLowerCase().trim();
// 输入校验
if (!guess) {
updateFeedback('请输入一个字母');
return;
}
if (guess.length !== 1) {
updateFeedback('请只输入单个字母');
return;
}
if (!/[a-z]/.test(guess)) {
updateFeedback('请输入有效的英文字母');
return;
}
if (guessedLetters.includes(guess)) {
updateFeedback('该字母已经猜测过了,请换一个');
input.value = '';
return;
}
// 记录已猜字母
guessedLetters.push(guess);
updateGuessedLetters();
// 判断猜测结果
if (targetWord.includes(guess)) {
updateFeedback('猜对了!该字母在目标词中');
updateWordDisplay();
// 检查是否猜出完整单词
const isWin = targetWord.split('').every(letter => guessedLetters.includes(letter));
if (isWin) {
gameOver = true;
updateFeedback('恭喜你,猜对了!目标词是:' + targetWord);
disableInput();
}
} else {
remainingChances--;
document.getElementById('remainingChances').textContent = remainingChances;
updateFeedback('猜错了,该字母不在目标词中,剩余机会:' + remainingChances);
if (remainingChances <= 0) {
gameOver = true;
updateFeedback('很遗憾,机会用完了,目标词是:' + targetWord);
disableInput();
}
}
input.value = '';
}
// 更新反馈信息
function updateFeedback(text) {
document.getElementById('feedback').textContent = text;
}
// 更新已猜字母显示
function updateGuessedLetters() {
document.getElementById('guessedLetters').textContent = guessedLetters.join(', ');
}
// 游戏结束后禁用输入
function disableInput() {
document.getElementById('guessInput').disabled = true;
document.getElementById('submitBtn').disabled = true;
}
重置游戏功能
添加重置按钮逻辑,点击后重新初始化游戏状态:
// 重置游戏
document.getElementById('resetBtn').addEventListener('click', function() {
initGame();
});
功能扩展建议
完成基础版本后,还可以根据需求扩展功能:
- 增加难度选择,不同难度对应不同长度的单词和剩余机会
- 添加猜测历史记录,显示每次猜测的结果
- 支持中文词语猜测,调整输入校验和显示逻辑
- 添加音效和动画效果,提升交互体验
- 增加词库管理功能,允许用户自定义添加单词
整个猜词应用的核心逻辑并不复杂,主要考察JavaScript的基础语法、DOM操作和状态管理能力,适合新手用来巩固基础知识,也可以作为小型实战项目的参考模板。
JavaScript猜词游戏文字游戏前端开发修改时间:2026-07-05 23:39:34