Я использую 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