Однако , я не знаю, как добавить эту функцию в существующий код и как изменить функцию рисования, чтобы предотвратить захват суши. Кроме того, мне нужно реализовать функцию для отображения сообщения о победе в случае победы в игре.
HTML-код:
Код: Выделить всё
.row {
line-height: 0;
}
.wall {
background-color: blue;
height: 40px;
width: 40px;
display: inline-block;
}
.sushi {
background-color: black;
height: 40px;
width: 40px;
display: inline-block;
background-image: url('sushi.png');
background-size: contain;
}
.onigiri {
background-color: black;
height: 40px;
width: 40px;
display: inline-block;
background-image: url('onigiri.png');
background-size: contain;
}
.blank {
background-color: black;
height: 40px;
width: 40px;
display: inline-block;
}
#ninjaman {
background-color: black;
height: 40px;
width: 40px;
display: inline-block;
background-image: url('ninja.gif');
background-size: contain;
position: absolute;
left: 40px;
top: 40px;
}
#score {
position: absolute;
top: 10px;
left: 10px;
color: white;
font-size: 20px;
}
Score: 0
var world;
var worldDict = {
0: 'blank',
1: 'wall',
2: 'sushi',
3: 'onigiri'
};
var ninjaman = {
x: 1,
y: 1
};
var score = 0;
function updateScore() {
document.getElementById('score').innerHTML = 'Score: ' + score;
}
function generateRandomWorld(rows, cols) {
var randomWorld = [];
for (var i = 0; i < rows; i++) {
var row = [];
for (var j = 0; j < cols; j++) {
row.push(Math.floor(Math.random() * 4));
}
randomWorld.push(row);
}
return randomWorld;
}
function drawWorld() {
var output = "";
for (var row = 0; row < world.length; row++) {
output += "";
for (var x = 0; x < world[row].length; x++) {
output += "";
}
output += "";
}
document.getElementById('world').innerHTML = output;
}
function drawNinjaman() {
document.getElementById('ninjaman').style.top = ninjaman.y * 40 + 'px';
document.getElementById('ninjaman').style.left = ninjaman.x * 40 + 'px';
}
function checkCollision() {
if (world[ninjaman.y][ninjaman.x] == 2) {
world[ninjaman.y][ninjaman.x] = 0;
score++;
updateScore();
} else if (world[ninjaman.y][ninjaman.x] == 3) {
world[ninjaman.y][ninjaman.x] = 0;
score += 2; // Puedes ajustar la puntuación por comer onigiri
updateScore();
} else if (world[ninjaman.y][ninjaman.x] == 1) {
ninjaman.x = 1;
ninjaman.y = 1;
}
}
function updateGame(e) {
if (e.keyCode == 37 && ninjaman.x > 0 && world[ninjaman.y][ninjaman.x - 1] != 1) {
ninjaman.x--;
}
if (e.keyCode == 39 && ninjaman.x < world[0].length - 1 && world[ninjaman.y][ninjaman.x + 1] != 1) {
ninjaman.x++;
}
if (e.keyCode == 38 && ninjaman.y > 0 && world[ninjaman.y - 1][ninjaman.x] != 1) {
ninjaman.y--;
}
if (e.keyCode == 40 && ninjaman.y < world.length - 1 && world[ninjaman.y + 1][ninjaman.x] != 1) {
ninjaman.y++;
}
checkCollision();
drawNinjaman();
drawWorld();
}
// Llamada a la función para generar el mundo aleatorio
world = generateRandomWorld(10, 10);
drawWorld();
drawNinjaman();
updateScore();
document.onkeydown = updateGame;
Генерация случайной карты: генерирует сетку, в которой ячейками могут быть стены, суши или бонусы на основе случайных шансов.
Потребление суши: отслеживает количество съеденных суши. По достижении определенного числа стена разрушается.
Проверка победы: предупреждает игрока, когда все суши собраны.
Чтобы избежать ловушки суши, вы можете реализовать более сложный алгоритм генерации карты, который гарантирует суши не изолированы стенами или улучшите логику, чтобы сломать стены, блокирующие доступ к суши.
Хотите ли вы помочь с изменением логики создания карты, внедрением сообщения о победе или добавлением силы функциональная возможность?
Подробнее здесь: https://stackoverflow.com/questions/786 ... assistance