下面一个完整实现的五子棋游戏代码,包含了 HTML、CSS 和 JavaScript 部分,并加入了一些优化和注释:
HTML
<!DOCTYPE html>
<html>
<head>
<title>五子棋游戏</title>
<style>
/* CSS样式 */
#gobang {
border-collapse: collapse;
margin: 0 auto;
}
td {
width: 30px;
height: 30px;
border: 1px solid black;
text-align: center;
cursor: pointer;
}
.black {
background-color: black;
}
.white {
background-color: white;
}
</style>
</head>
<body>
<table id="gobang"></table>
<script>
// JavaScript代码
const gobang = document.getElementById('gobang');
const size = 15;
let chessboard = [];
let currentPlayer = 'black';
// 初始化棋盘
function initChessboard() {
for (let i = 0; i < size; i++) {
chessboard[i] = new Array(size).fill(0);
let row = gobang.insertRow();
for (let j = 0; j < size; j++) {
let cell = row.insertCell();
cell.addEventListener('click', () => {
if (chessboard[i][j] === 0) {
chessboard[i][j] = currentPlayer === 'black' ? 1 : 2;
cell.classList.add(currentPlayer);
if (checkWin(i, j)) {
alert(currentPlayer + '获胜!');
}
currentPlayer = currentPlayer === 'black' ? 'white' : 'black';
}
});
}
}
}
// 判断胜负
function checkWin(x, y) {
const directions = [[1, 0], [0, 1], [1, 1], [1, -1]]; // 检查方向
for (const [dx, dy] of directions) {
let count = 1;
// 检查当前方向上连续的棋子数量
for (let i = 1; i < 5; i++) {
if (x + i * dx < size && y + i * dy < size &&
chessboard[x + i * dx][y + i * dy] === chessboard[x][y]) {
count++;
} else {
break;
}
}
for (let i = 1; i < 5; i++) {
if (x - i * dx >= 0 && y - i * dy >= 0 &&
chessboard[x - i * dx][y - i * dy] === chessboard[x][y]) {
count++;
} else {
break;
}
}
if (count >= 5) {
return true;
}
}
return false;
}
initChessboard();
</script>
</body>
</html>
代码解释如下:
- HTML 结构: 创建了一个表格作为棋盘,每个单元格代表一个落子位置。
- CSS 样式: 设置棋盘和棋子的样式,包括边框、大小、颜色等。
- JavaScript 逻辑:
- 初始化棋盘: 创建一个二维数组表示棋盘状态,并为每个单元格添加点击事件。
- 落子: 点击空格子时,在对应位置放置棋子,并判断是否获胜。
- 胜负判断: 检查当前落子位置的横向、纵向、两个对角线方向上是否有连续五个相同棋子。
- 轮流下棋: 每次落子后切换玩家。
上述代码可以进一步改进:
- AI对弈: 可以引入 Minimax 算法或蒙特卡洛树搜索等算法实现 AI 对弈。
- 悔棋功能: 记录下棋步骤,实现悔棋功能。
- 禁手规则: 实现五子棋的禁手规则。
- 游戏界面优化: 可以添加背景音乐、音效、更美观的棋子样式等。
- 多人对战: 可以通过 WebSocket 或其他技术实现多人在线对战。
使用方式:
- 将代码保存为 HTML 文件(例如 index.html)。
- 在浏览器中打开该文件。
注意事项:
- 浏览器兼容性: 确保你的浏览器支持 HTML5 和 JavaScript。
- 代码调整: 你可以根据自己的需求对代码进行调整,例如修改棋盘大小、棋子样式等。
如果想了游戏开发的知识,可以参考以下资源:
- MDN Web Docs: https://developer.mozilla.org/zh-CN/
- W3School: w3school 在线教程