🎯 Checkers

Dama Italiana e Internazionale con intelligenza artificiale

← Torna a Virtual Desktop Site


Descrizione

Checkers è un’implementazione completa del gioco della dama che supporta due varianti ufficiali: la Dama Italiana (8×8) e la Dama Internazionale (10×10). Sviluppato interamente in vanilla JavaScript con Canvas API, include un’AI avversaria basata su Minimax con Alpha-Beta pruning.

Varianti Supportate

🇮🇹 Dama Italiana (8×8)

La variante giocata in Italia con regole specifiche:

Caratteristica Regola
Scacchiera 8×8 (32 caselle giocabili)
Pedine per giocatore 12
Movimento pedina Solo avanti in diagonale
Cattura pedina Solo avanti in diagonale
Pedina vs Dama La pedina NON può catturare la dama
Movimento dama Una casella in tutte le direzioni
Cattura obbligatoria
Priorità catture Dama > Pedina, poi max pezzi

🌍 Dama Internazionale (10×10)

La variante giocata nei tornei internazionali:

Caratteristica Regola
Scacchiera 10×10 (50 caselle giocabili)
Pedine per giocatore 20
Movimento pedina Solo avanti in diagonale
Cattura pedina Avanti E indietro
Flying King La dama si muove su tutta la diagonale
Promozione Solo se il pezzo TERMINA sull’ultima riga
Cattura obbligatoria
Priorità catture Massimo numero di pezzi

Caratteristiche

Gameplay

Intelligenza Artificiale

L’AI utilizza Minimax con Alpha-Beta pruning e una funzione di valutazione avanzata:

Livelli di Difficoltà

| Livello | Profondità | Descrizione | |———|————|————-| | Facile | 3 ply | Errori occasionali, ideale per principianti | | Medio | 5 ply | Gioco solido e bilanciato | | Difficile | 7 ply | AI competitiva e strategica |

Valutazione Posizione

Web Worker

Il calcolo AI viene eseguito in un thread separato per mantenere l’interfaccia reattiva:

// checkers-worker.js
self.onmessage = function(e) {
  const ai = new CheckersAI(variant, difficulty);
  const bestMove = ai.getBestMove(board, player);
  self.postMessage({ move: bestMove });
};

Implementazione Tecnica

Struttura Dati

// Board: array 2D
// 0 = vuoto, 1 = pedina bianca, 2 = dama bianca
// 3 = pedina nera, 4 = dama nera

const PIECE = {
  EMPTY: 0,
  WHITE_MAN: 1,
  WHITE_KING: 2,
  BLACK_MAN: 3,
  BLACK_KING: 4
};

Algoritmo Catture Multiple

handleCaptureSequence(move) {
  // 1. Esegui cattura
  this.executeMove(move);

  // 2. Cerca altre catture dalla nuova posizione
  const nextCaptures = this.getCapturesFromPosition(move.to);

  if (nextCaptures.length > 0) {
    // 3. Cattura multipla obbligatoria
    this.mustContinueCapture = true;
    this.validMoves = nextCaptures;
    return false; // Turno non finito
  }

  // 4. Promozione e cambio turno
  this.checkPromotion(move.to);
  this.switchTurn();
  return true;
}

File Principali

Rendering Canvas

Il rendering usa Canvas 2D con:

Storia della Dama

Origini

Complessità

Controlli

Desktop

Mobile


Gioca a Checkers sul desktop virtuale aprendo l’icona 🎯 Checkers dal gruppo Mini Apps.