用javascript脚本语言写推箱子游戏
时间: 2024-02-18 15:05:11 浏览: 65
好的,以下是一个简单的JavaScript脚本语言推箱子游戏的示例代码,您可以参考一下:
HTML文件:
```
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Push Box Game</title>
<style>
#game {
display: inline-block;
border: 1px solid black;
margin: 10px;
padding: 5px;
font-size: 24px;
}
#game > div {
line-height: 0;
}
#game .box {
background-color: yellow;
}
#game .goal {
background-color: green;
}
#game .player {
background-color: blue;
}
</style>
</head>
<body>
<div id="game"></div>
<script src="pushbox.js"></script>
</body>
</html>
```
JavaScript文件:
```
// 地图的行数和列数
var n = 9, m = 9;
// 存储地图的二维数组
var map = [
['#', '#', '#', '#', '#', '#', '#', '#', '#'],
['#', '.', '.', '.', '.', '.', '.', '.', '#'],
['#', '.', '.', '.', '.', '.', '.', '.', '#'],
['#', '.', '.', '.', '#', '#', '.', '.', '#'],
['#', '.', '.', '.', '#', 'B', '.', '.', '#'],
['#', '.', '.', '.', '#', '.', '.', 'G', '#'],
['#', '.', '.', '.', '.', '.', '.', '.', '#'],
['#', '.', '.', '.', '.', '.', '.', '.', '#'],
['#', '#', '#', '#', '#', '#', '#', '#', '#']
];
// 玩家和箱子的初始位置
var px = 4, py = 5, bx = 4, by = 4;
// 更新游戏界面
function updateGame() {
var gameDiv = document.getElementById('game');
gameDiv.innerHTML = '';
for (var i = 0; i < n; i++) {
for (var j = 0; j < m; j++) {
var div = document.createElement('div');
if (i == px && j == py) { // 玩家的位置
div.className = 'player';
} else if (i == bx && j == by) { // 箱子的位置
div.className = 'box';
} else if (map[i][j] == 'G') { // 目标位置
div.className = 'goal';
} else if (map[i][j] == '#') { // 墙壁
div.style.backgroundColor = 'black';
}
gameDiv.appendChild(div);
}
gameDiv.appendChild(document.createElement('br'));
}
}
// 根据移动方向更新玩家和箱子的位置
function move(dx, dy) {
var nx = px + dx, ny = py + dy; // 玩家的目标位置
if (map[nx][ny] == '.') { // 玩家可以移动到目标位置
px = nx;
py = ny;
} else if (map[nx][ny] == 'B') { // 玩家推动箱子
var nbx = bx + dx, nby = by + dy; // 箱子的目标位置
if (map[nbx][nby] == '.') { // 箱子可以移动到目标位置
bx = nbx;
by = nby;
px = nx;
py = ny;
} else if (map[nbx][nby] == 'G') { // 箱子推到目标位置
bx = nbx;
by = nby;
px = nx;
py = ny;
map[bx][by] = 'X';
}
}
}
// 处理键盘按下事件
function onKeyDown(event) {
switch (event.keyCode) {
case 37: // 左箭头
move(0, -1);
break;
case 38: // 上箭头
move(-1, 0);
break;
case 39: // 右箭头
move(0, 1);
break;
case 40: // 下箭头
move(1, 0);
break;
}
updateGame();
}
// 初始化游戏界面
updateGame();
// 监听键盘按下事件
document.addEventListener('keydown', onKeyDown);
```
在上述代码中,我们使用一个二维字符数组`map`来存储地图信息,其中`.`表示空地,`#`表示墙壁,`B`表示箱子,`G`表示箱子需要推到的目标位置,`X`表示箱子已经推到了目标位置。在游戏过程中,我们根据玩家输入的移动方向更新箱子和玩家的位置,并更新游戏界面。
阅读全文