diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 0984dda..3dc89f1 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -566,6 +566,18 @@ } } + function playSound(san) { + if (typeof Audio === 'undefined') return; + try { + const isCapture = san.includes('x'); + const src = isCapture ? '/sounds/capture.mp3' : '/sounds/move.mp3'; + const audio = new Audio(src); + audio.play().catch(e => console.log('Audio play blocked or failed:', e)); + } catch (e) { + console.error('Audio play error:', e); + } + } + function doMove(fr,fc,tr,tc) { let san = moveToSAN(board, fr, fc, tr, tc); let piece = board[fr][fc]; @@ -584,9 +596,11 @@ turn = turn==='w'?'b':'w'; selected = null; highlights = []; + + playSound(san); } - function playMoveByHistory(san) { + function playMoveByHistory(san, mute = true) { for (let r=0;r<8;r++) for(let c=0;c<8;c++) { let p = board[r][c]; if (!p || p[0]!==turn) continue; @@ -606,6 +620,10 @@ board = board; // trigger Svelte 5 reactivity lastMove=[r,c,tr,tc]; turn=turn==='w'?'b':'w'; + + if (!mute) { + playSound(san); + } return; } } @@ -1763,21 +1781,27 @@