2048 sound
This commit is contained in:
parent
48d2bdc1f3
commit
c14ba859b8
39
2048.js
39
2048.js
@ -1,4 +1,3 @@
|
||||
|
||||
/* ------------------------
|
||||
State & Variables
|
||||
------------------------ */
|
||||
@ -7,19 +6,19 @@ let currentScore = 0;
|
||||
let bestScore = parseInt(localStorage.getItem('bestScore2048')) || 0;
|
||||
let lastMoveDir = null;
|
||||
let isMoving = false;
|
||||
let mergesInCurrentMove = 0; // NEW: Track combo
|
||||
let mergesInCurrentMove = 0;
|
||||
|
||||
/* ------------------------
|
||||
Audio Setup
|
||||
------------------------ */
|
||||
const audio = {
|
||||
bg: new Audio("bgmusic.mp3"),
|
||||
pop: new Audio("pop.mp3"),
|
||||
merge: new Audio("merge.wav")
|
||||
bg: new Audio("Bgmusic.mp3"),
|
||||
pop: new Audio("Pop.mp3"),
|
||||
merge: new Audio("Merge.mp3")
|
||||
};
|
||||
audio.bg.volume = 0.25;
|
||||
audio.pop.volume = 0.9;
|
||||
audio.merge.volume = 0.9;
|
||||
audio.merge.volume = 1.0;
|
||||
audio.bg.loop = true;
|
||||
|
||||
function tryPlayBg() {
|
||||
@ -192,7 +191,7 @@ function resetScore() {
|
||||
}
|
||||
|
||||
/* ------------------------
|
||||
Add New Tile
|
||||
Add New Tile - FIXED: Only play pop sound here
|
||||
------------------------ */
|
||||
function addNewTile() {
|
||||
const empty = [];
|
||||
@ -210,6 +209,7 @@ function addNewTile() {
|
||||
const tile = document.getElementById(`${spot.r}-${spot.c}`);
|
||||
if (tile) {
|
||||
tile.classList.add("new");
|
||||
// ✅ POP SOUND: Hanya main di sini (tile baru muncul)
|
||||
playSound(audio.pop);
|
||||
setTimeout(() => tile.classList.remove("new"), 300);
|
||||
}
|
||||
@ -226,7 +226,7 @@ function playSound(soundObj) {
|
||||
}
|
||||
|
||||
/* ------------------------
|
||||
Movement Logic - UPDATED WITH COMBO
|
||||
Movement Logic - FIXED: Merge sound plays consistently
|
||||
------------------------ */
|
||||
function filterZero(row) {
|
||||
return row.filter(n => n !== 0);
|
||||
@ -236,25 +236,30 @@ function slide(row) {
|
||||
row = filterZero(row);
|
||||
let mergedThisMove = false;
|
||||
let mergedPositions = [];
|
||||
let mergeCount = 0; // NEW: count merges
|
||||
let mergeCount = 0;
|
||||
|
||||
for (let i = 0; i < row.length - 1; i++) {
|
||||
if (row[i] === row[i + 1]) {
|
||||
row[i] = row[i] * 2;
|
||||
|
||||
// ✅ MERGE SOUND & VIBRATION: Selalu main saat merge
|
||||
playSound(audio.merge);
|
||||
if (navigator.vibrate) navigator.vibrate(28);
|
||||
|
||||
if (navigator.vibrate) {
|
||||
navigator.vibrate([80, 20, 80]);
|
||||
}
|
||||
|
||||
currentScore += row[i];
|
||||
row[i + 1] = 0;
|
||||
mergedThisMove = true;
|
||||
mergedPositions.push(i);
|
||||
mergeCount++; // NEW: increment count
|
||||
mergeCount++;
|
||||
}
|
||||
}
|
||||
|
||||
row = filterZero(row);
|
||||
while (row.length < 4) row.push(0);
|
||||
return { row, merged: mergedThisMove, mergedPositions, mergeCount }; // NEW: return count
|
||||
return { row, merged: mergedThisMove, mergedPositions, mergeCount };
|
||||
}
|
||||
|
||||
function arraysEqual(a, b) {
|
||||
@ -265,7 +270,7 @@ function arraysEqual(a, b) {
|
||||
function moveLeft() {
|
||||
let moved = false;
|
||||
let mergedCells = [];
|
||||
mergesInCurrentMove = 0; // Reset counter
|
||||
mergesInCurrentMove = 0;
|
||||
|
||||
for (let r = 0; r < 4; r++) {
|
||||
const { row: newRow, mergedPositions, mergeCount } = slide(board[r]);
|
||||
@ -568,7 +573,7 @@ function hideGameOver() {
|
||||
}
|
||||
|
||||
/* =============================================
|
||||
COMBO EFFECT HANDLER - NEW!
|
||||
COMBO EFFECT HANDLER
|
||||
============================================= */
|
||||
function triggerComboEffect(mergedCells, comboCount) {
|
||||
if (mergedCells.length === 0) return;
|
||||
@ -603,7 +608,7 @@ function triggerComboEffect(mergedCells, comboCount) {
|
||||
}
|
||||
|
||||
/* =============================================
|
||||
COMBO POPUP - NEW!
|
||||
COMBO POPUP
|
||||
============================================= */
|
||||
function showComboPopup(comboCount) {
|
||||
const board = document.getElementById('board');
|
||||
@ -767,7 +772,3 @@ function getTileColor(value) {
|
||||
};
|
||||
return colors[value] || '#00eaff';
|
||||
}
|
||||
|
||||
/* ------------------------
|
||||
End of File
|
||||
------------------------ */
|
||||
BIN
Bgmusic.mp3
Normal file
BIN
Bgmusic.mp3
Normal file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user