用JavaScript和canvas制作的象棋游戏判断死局的代码
时间: 2024-02-20 19:00:14 浏览: 71
以下是一个简单的 JavaScript 和 canvas 制作的象棋游戏判断死局的代码示例:
```javascript
// 检查是否死局
function checkDead() {
// 检查每个棋子是否可以移动
for (var i = 0; i < chessArr.length; i++) {
var chess = chessArr[i];
if (chess.isRed == isRedTurn) { // 只检查当前轮到哪方走的棋子
for (var j = 0; j < 9; j++) {
for (var k = 0; k < 10; k++) {
if (canMove(chess, j, k, getChess(j, k))) {
return false; // 只要有一个棋子可以移动,就不是死局
}
}
}
}
}
return true; // 所有棋子都无法移动,是死局
}
// 检查是否五步无吃子或将军
function checkFiveStep() {
if (steps.length < 10) {
return false; // 步数不足10步,不用检查
}
for (var i = 0; i < 5; i++) {
var step = steps[steps.length - 1 - i]; // 从最后一步开始向前检查
if (step.isEat || step.isCheck) {
return false; // 只要有一步吃子或将军,就不是五步无吃子或将军
}
}
return true; // 连续五步无吃子或将军,是死局
}
// 判断是否死局
function isDead() {
if (checkDead()) {
alert("死局,平局!");
return true;
}
if (checkFiveStep()) {
alert("五步无吃子或将军,平局!");
return true;
}
return false;
}
```
在以上代码中,`chessArr` 是一个存储棋子的数组,`isRedTurn` 表示当前轮到哪方走棋,`steps` 是一个存储所有步骤的数组,`canMove` 函数用于判断棋子是否可以移动,`getChess` 函数用于获取某个位置的棋子。`checkDead` 函数用于检查是否有棋子可以移动,`checkFiveStep` 函数用于检查是否连续五步无吃子或将军,`isDead` 函数用于判断是否死局。如果是死局,则弹出提示框,游戏结束。
阅读全文