📅  最后修改于: 2023-12-03 15:36:29.925000             🧑  作者: Mango
Pig 游戏是一种由两个或更多玩家轮流掷骰子的数学游戏。游戏的目标是到达指定的得分上限(通常为 100 分)。在每个玩家的回合他们掷骰子,骰子点数会被累加到玩家的得分中。然而,如果该玩家掷骰子的点数为 1,则他们的得分将归零并结束该回合。此外,玩家还可以选择停止自己的回合并把得分保留下来。第一个达到上限得分的玩家获胜。
在这篇文章中,我们将会使用 JavaScript 来设计一个简单的 Pig 游戏程序。
我们将设计一个基于浏览器的 Pig 游戏。我们将使用 HTML 文件作为主要的 UI(用户界面)和 JavaScript 文件作为游戏逻辑的主体部分。
首先,我们需要添加我们的 HTML 文件:
<!DOCTYPE html>
<html>
<head>
<title>Pig Game</title>
</head>
<body>
<div class="wrapper clearfix">
<div class="player-0-panel active">
<div class="player-name" id="name-0">Player 1</div>
<div class="player-score" id="score-0">0</div>
<button class="btn-new" id="new-game">New Game</button>
<button class="btn-roll" id="roll">Roll Dice</button>
<button class="btn-hold" id="hold">Hold</button>
</div>
<div class="player-1-panel">
<div class="player-name" id="name-1">Player 2</div>
<div class="player-score" id="score-1">0</div>
<button class="btn-roll" id="roll">Roll Dice</button>
<button class="btn-hold" id="hold">Hold</button>
</div>
</div>
<script type="text/javascript" src="app.js"></script>
</body>
</html>
下面我们需要编写我们的 JavaScript 文件 app.js:
// 定义全局的变量和函数
var scores, roundScore, activePlayer, gamePlaying;
init();
document.querySelector('.btn-roll').addEventListener('click', function() {
if(gamePlaying) {
// 生成一个随机的骰子点数
var dice = Math.floor(Math.random() * 6) + 1;
// 显示骰子的点数
var diceDOM = document.querySelector('.dice');
diceDOM.style.display = 'block';
diceDOM.src = 'dice-' + dice + '.png';
// 更新玩家的分数,如果掷到的是一则回合结束,否则累加分数
if (dice !== 1) {
// 累加分数
roundScore += dice;
document.querySelector('#current-' + activePlayer).textContent = roundScore;
} else {
// 下一个玩家的回合
nextPlayer();
}
}
});
document.querySelector('.btn-hold').addEventListener('click', function() {
if(gamePlaying) {
// 更新玩家的分数
scores[activePlayer] += roundScore;
document.querySelector('#score-' + activePlayer).textContent = scores[activePlayer];
// 检查是否获胜
if (scores[activePlayer] >= 100) {
document.querySelector('#name-' + activePlayer).textContent = 'Winner!';
document.querySelector('.dice').style.display = 'none';
document.querySelector('.player-' + activePlayer + '-panel').classList.add('winner');
document.querySelector('.player-' + activePlayer + '-panel').classList.remove('active');
gamePlaying = false;
} else {
// 下一个玩家的回合
nextPlayer();
}
}
});
function nextPlayer() {
// 下一个玩家的回合
activePlayer === 0 ? activePlayer = 1 : activePlayer = 0;
roundScore = 0;
document.getElementById('current-0').textContent = '0';
document.getElementById('current-1').textContent = '0';
document.querySelector('.player-0-panel').classList.toggle('active');
document.querySelector('.player-1-panel').classList.toggle('active');
document.querySelector('.dice').style.display = 'none';
}
document.querySelector('.btn-new').addEventListener('click', init);
function init() {
scores = [0, 0];
roundScore = 0;
activePlayer = 0;
gamePlaying = true;
document.querySelector('.dice').style.display = 'none';
document.getElementById('score-0').textContent = '0';
document.getElementById('score-1').textContent = '0';
document.getElementById('current-0').textContent = '0';
document.getElementById('current-1').textContent = '0';
document.getElementById('name-0').textContent = 'Player 1';
document.getElementById('name-1').textContent = 'Player 2';
document.querySelector('.player-0-panel').classList.remove('winner');
document.querySelector('.player-1-panel').classList.remove('winner');
document.querySelector('.player-0-panel').classList.remove('active');
document.querySelector('.player-1-panel').classList.remove('active');
document.querySelector('.player-0-panel').classList.add('active');
}
这就是我们的代码。让我们来看一下它是如何工作的:
这是一个非常简单的 Pig 游戏程序,但它以一种非常优雅的方式演示了如何使用 JavaScript 设计并实现一个游戏。我们希望这篇文章对你有所帮助,让你更好地理解 JavaScript 的工作原理,并且通过实现小型项目来提高你的编程技巧。