perubahan logika permainan

This commit is contained in:
basilius leta 2025-12-15 20:34:44 +07:00
parent 60de57f1c5
commit 31c073b09c

View File

@ -2,7 +2,6 @@ const canvas = document.getElementById("board");
if (!canvas) alert("Canvas tidak ditemukan! ID harus 'board'");
const ctx = canvas.getContext("2d");
// ensure canvas actual pixel size used for tileSize calculation
const CANVAS_W = canvas.width;
const CANVAS_H = canvas.height;
@ -20,7 +19,8 @@ let aiPlays = 2;
let aiThinkingDelay = 300;
let hintsEnabled = (typeof ENABLE_HINTS !== "undefined") ? !!ENABLE_HINTS : true;
/********** SOUND EFFECT **********/
// SOUND EFFECTS
const SFX = {
move: new Audio("assets/sound/move.mp3"),
capture: new Audio("assets/sound/capture.mp3")
@ -67,16 +67,15 @@ function resetBoard(){
startTimer();
draw();
// small defer so UI painted before AI moves
// TRIGGER AI JIKA PERMAINAN DIMULAI OLEH AI
if(aiEnabled && currentTurn === aiPlays){
setTimeout(()=> triggerAI(), 120);
}
}
/********** DRAW **********/
// MENGGAMBAR PAPAN PADA CANVAS
function draw(){
// safety: re-compute tileSize if canvas resized via CSS (keep consistent)
// (we keep original tileSize computed from initial canvas.width)
// MENGGAMBAR PAPAN
ctx.clearRect(0,0,CANVAS_W,CANVAS_H);
for(let r=0;r<size;r++){
@ -114,7 +113,7 @@ function drawPiece(cx,cy,v){
}
}
/********** HINTS DRAW **********/
// MENGGAMBAR HINTS MOVE
function drawMoveHints(moves){
if(!moves || moves.length===0) return;
for(const m of moves){
@ -127,7 +126,7 @@ function drawMoveHints(moves){
ctx.fillStyle = m.capture ? "#dc2626" : "#22c55e";
ctx.fill(); ctx.closePath();
// line
// GARIS HINT DARI MEMILIH PION KE TUJUAN
const sx = selected.c*tileSize + tileSize/2;
const sy = selected.r*tileSize + tileSize/2;
const tx = x+tileSize/2, ty = y+tileSize/2;
@ -149,7 +148,7 @@ function tryMove(r1,c1,r2,c2){
const isKing = (v===3||v===4);
const dir = (v===1||v===3) ? -1 : 1;
// move
// GERAKAN BIASA
if(Math.abs(dr)===1 && Math.abs(dc)===1){
if(isKing || dr === dir){
saveHistory();