2048 mobile saving + progress saviing locally

This commit is contained in:
2024-08-29 13:36:48 +02:00
parent 0bfe2d76a8
commit 73cd3b7ffe
2 changed files with 54 additions and 27 deletions

1
.gitignore vendored
View File

@@ -0,0 +1 @@
.vscode

View File

@@ -11,36 +11,43 @@ const columns = 4;
let startX, startY, endX, endY; let startX, startY, endX, endY;
window.onload = function(){ window.onload = function(){
setGame(); if(loadBoard()){
setGame();
}else{
reset();
}
}
function loadBoard(){
const boardString = localStorage.getItem('PetPet-2048-board'); // Retrieve the JSON string from local storage
return boardString ? JSON.parse(boardString) : null; // Parse the JSON string back into an array
} }
function setGame(){ function setGame(){
const loadedBoard = loadBoard();
board = [ if(loadedBoard){
[0,0,0,0], board = loadedBoard;
[0,0,0,0], }else{
[0,0,0,0], board = [
[0,0,0,0], [0, 0, 0, 0],
]; [0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0],
];
setTwo();
setTwo();
}
/*board = [ for(let r = 0; r < rows; r++){
[2,2,2,2], for(let c = 0; c < columns; c++){
[2,2,2,2],
[4,4,8,8],
[4,4,8,8],
];*/
for(let r=0;r<rows;r++){
for(let c=0;c<columns;c++){
let tile = document.createElement("div"); let tile = document.createElement("div");
tile.id = r.toString() + "-" + c.toString(); tile.id = r.toString() + "-" + c.toString();
let num = board[r][c]; let num = board[r][c];
updateTile(tile,num); updateTile(tile, num);
document.getElementById("board").append(tile); document.getElementById("board").append(tile);
} }
} }
setTwo();
setTwo();
} }
function updateTile(tile, num){ function updateTile(tile, num){
@@ -81,10 +88,10 @@ function slide(row){
document.addEventListener('keyup', (e) => { document.addEventListener('keyup', (e) => {
switch(e.code){ switch(e.code){
case "ArrowLeft": slideLeft(); setTwo(); break; case "ArrowLeft": slideLeft(); setTwo(); saveBoard(); break;
case "ArrowRight": slideRight(); setTwo(); break; case "ArrowRight": slideRight(); setTwo(); saveBoard(); break;
case "ArrowUp": slideUp(); setTwo(); break; case "ArrowUp": slideUp(); setTwo(); saveBoard(); break;
case "ArrowDown": slideDown(); setTwo(); break; case "ArrowDown": slideDown(); setTwo(); saveBoard(); break;
} }
document.getElementById("score").innerText = score; document.getElementById("score").innerText = score;
}); });
@@ -195,6 +202,10 @@ document.addEventListener('touchend', function(e){
handleSwipe(); handleSwipe();
}, {passive: true}); }, {passive: true});
function saveBoard(){
localStorage.setItem('PetPet-2048-board', JSON.stringify(board));
}
function handleSwipe(){ function handleSwipe(){
let diffX = endX - startX; let diffX = endX - startX;
let diffY = endY - startY; let diffY = endY - startY;
@@ -205,30 +216,45 @@ function handleSwipe(){
if(diffX > 0){ //? Right if(diffX > 0){ //? Right
slideRight(); slideRight();
setTwo(); setTwo();
saveBoard();
document.getElementById("score").innerText = score; document.getElementById("score").innerText = score;
}else{ //? Left }else{ //? Left
slideLeft(); slideLeft();
setTwo(); setTwo();
saveBoard();
document.getElementById("score").innerText = score; document.getElementById("score").innerText = score;
} }
}else{ //- Vertical swipe }else{ //- Vertical swipe
if(diffY > 0){ //? Down if(diffY > 0){ //? Down
slideDown(); slideDown();
setTwo(); setTwo();
saveBoard();
document.getElementById("score").innerText = score; document.getElementById("score").innerText = score;
}else{ //? Up }else{ //? Up
slideUp(); slideUp();
setTwo(); setTwo();
saveBoard();
document.getElementById("score").innerText = score; document.getElementById("score").innerText = score;
} }
} }
} }
async function reset(){ async function reset(){
document.getElementById("board").innerHTML = ''; document.getElementById("board").innerHTML = '';
setGame();
score = 0; score = 0;
document.querySelector('#score').innerText = '0'; document.querySelector('#score').innerText = '0';
/*board = newBoard;
// Reset the board to newBoard and save it to localStorage
board = newBoard.map(row => [...row]); // Create a fresh copy of newBoard
localStorage.setItem('PetPet-2048-board', JSON.stringify(board)); // Save the fresh copy to localStorage
// Call setGame() to reinitialize the board in the DOM
setGame();
// Generate two initial "2" tiles after the board is rendered
setTwo(); setTwo();
setTwo();*/ setTwo();
// Save updated board with "2" tiles
saveBoard();
} }