// alert("hello world"); const tileSize = 16; // Sprites let baba_img; let tile_img, wall_img, rock_img, water_img, lava_img, flag_img; let win_img, you_img, move_img, stopText_img; let is_img; // Map let tileMap = [ ' ', 'wtwwwwwwwwwwwwww', 'wt ttwtttt ttttw', 'wttt rtt llt ttw', 'wtt ttt ll ttfw', 'w tttaa ttwt ttw', 'wttt aatt wttttw', 'wwwwwwwwwwwwwwww', ]; let rules = [ ["rock", "is", "push"], ["wall", "is", "stop"], ["water", "is", "sink"], ["lava", "is", "hot"] ] // CaracterMove let babaX = 0; let babaY = 0; // Sounds let bgm, winSound; let isPlaying = false; // Game State let isGameOver = false; let isWin = false; function preload(){ // BGM bgm = loadSound("/assets/Baba Is You OST - Baba Is You Theme.mp3"); // Spritesd baba_img = loadImage("/assets/Baba.webp"); tile_img = loadImage("/assets/Tile.webp"); wall_img = loadImage("/assets/Wall.webp"); rock_img = loadImage("/assets/Rock.webp"); water_img = loadImage("/assets/Water.webp"); lava_img = loadImage("/assets/Lava.webp"); flag_img = loadImage("/assets/Flag.webp"); is_img = loadImage("/assets/Text_IS_0.webp"); win_img = loadImage("/assets/Win.webp"); you_img = loadImage("/assets/You.webp"); move_img = loadImage("/assets/Move.webp"); stopText_img = loadImage("/assets/Stop.webp"); } function setup(){ createCanvas(800, 400); new World(); background(51); textAlign(CENTER); // Floor - Tile let tile = new Group(); tile.img = tile_img; tile.collider = 'none'; tile.tile = "t"; tile.scale = tileSize/tile_img.width; // Flag let flag = new Group(); flag.img = flag_img; flag.collider = 'none'; flag.tile = "f"; flag.scale = tileSize/flag_img.width; // WALL let wall = new Group(); wall.img = wall_img; wall.collider = 'static'; wall.tile = "w"; wall.scale = tileSize/wall_img.width; // ROCK let rock = new Group(); rock.img = rock_img; rock.collider = 'dynamic'; rock.tile = "r"; rock.scale = tileSize/rock_img.width; // Water let water = new Group(); water.img = water_img; water.collider = 'none'; water.tile = 'a'; water.scale = tileSize/water_img.width; // Lava let lava = new Group(); lava.img = lava_img; lava.collider = 'none'; lava.tile = 'l'; lava.scale = tileSize/lava_img.width; new Tiles(tileMap, tileSize/2, tileSize/2, tileSize, tileSize); //BABA baba = new Sprite(tileSize/2, tileSize/2, tileSize, tileSize); baba.img = baba_img; baba.scale = tileSize / baba_img.width; baba.label = 'you'; } function draw(){ background(51); drawSprites(); if (isGameOver) { fill(255); textSize(32); text("Game Over! Press R to Restart", width / 4, height / 4); } if(isWin){ fill(255); textSize(32); text("Congratulations! Press R to Restart", width / 4, height / 4); } } // Background Music & Soundeffects function backgroundMusic(){ } function mousePressed(){ if (isPlaying) { bgm.pause(); isPlaying = false; } else { bgm.loop(); isPlaying = true; } } // Move ASDW function keyPressed(){ console.log(`key ${key} is pressed.`) if(isGameOver || isWin){ if(key=='r'||key=='R'){ resetGame(); } return; } const maxX = width - tileSize; const maxY = height - tileSize; if((key=='a'||key=='A') && isOpen(baba.x - tileSize, baba.y)) { if (baba.x - tileSize >= 0) { baba.x -= tileSize; console.log('Left'); } } if((key=='s'||key=='S') && isOpen(baba.x, baba.y + tileSize)) { if (baba.y + tileSize <= maxY) { baba.y += tileSize; console.log('Down'); } } if((key=='d'||key=='D') && isOpen(baba.x + tileSize, baba.y)) { if (baba.x + tileSize <= maxX) { baba.x += tileSize; console.log('Right'); } } if((key=='w'||key=='W') && isOpen(baba.x, baba.y - tileSize)) { if(baba.y - tileSize >= 0){ baba.y -= tileSize; console.log('Up'); } } } // move only to the opened place function isOpen(x,y){ let i = floor(x / tileSize); let j = floor(y / tileSize); if (j < 0 || j >= tileMap.length || i < 0 || i >= tileMap[0].length) { return false; } let tile = tileMap[j][i]; if (tile == ' ' || tile == 't'){ return true; } else if (tile == 'a'|| tile=='l'){ gameOver(); return true; } else if (tile == 'f'){ win(); return true; } else { console.log('blocked'); return false; } } function win(){ isWin = true; baba.remove(); } function gameOver(){ isGameOver = true; baba.remove(); } function resetGame(){ isGameOver = false; isWin = false; baba = new Sprite(tileSize/2, tileSize/2, tileSize, tileSize); baba.img = baba_img; baba.scale = tileSize / baba_img.width; baba.label = 'you'; }