Импорт/экспорт моего уровня не работает должным образом при использовании горячих клавиш.Javascript

Форум по Javascript
Ответить
Anonymous
 Импорт/экспорт моего уровня не работает должным образом при использовании горячих клавиш.

Сообщение Anonymous »

Я использую base64 как способ шифрования строк уровней, потому что в моей веб-игре «slidtrix» основная функция должна экспортировать ваш уровень, чтобы другие люди могли в него играть, но мой код (ниже) никогда не работает должным образом. кто-нибудь может помочь?
let levelTitle = '';
let levelAuthor = '';

function exportLevel() {
const title = prompt('Enter level title:', levelTitle);
if (title === null) return;
levelTitle = title;

const author = prompt('Enter author name:', levelAuthor);
if (author === null) return;
levelAuthor = author;

const data = {
title: levelTitle,
author: levelAuthor,
grid: grid.map(row => row.map(cell => cell.type))
};

const code = btoa(JSON.stringify(data));
prompt('Copy this save code:', code);
}

function loadFromCode(code) {
try {
const data = JSON.parse(atob(code));
levelTitle = data.title || 'Untitled Level';
levelAuthor = data.author || 'Unknown';

for (let y = 0; y < gridSize; y++) {
for (let x = 0; x < gridSize; x++) {
grid[y][x].type = data.grid[y][x];
}
}

player = null; // reset runtime
gameStarted = false;
renderGrid();
updateLevelMeta();
alert(`Level loaded!\n${levelTitle} By: ${levelAuthor}`);
} catch {
alert('Invalid save code!');
}
}

function updateLevelMeta() {
const metaEl = document.getElementById('level-meta');
if (metaEl) metaEl.textContent = `${levelTitle} By: ${levelAuthor}`;
}

// Attach hotkeys **after** functions exist
document.addEventListener('keydown', (e) => {
if (e.key === 'o' || e.key === 'O') {
exportLevel();
} else if (e.key === 'p' || e.key === 'P') {
const code = prompt('Paste your save code:');
if (code) loadFromCode(code);
}
});


Подробнее здесь: https://stackoverflow.com/questions/798 ... ng-hotkeys
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»