http://www.elegio.it/javascript/scacchi-attacchi-minacce.html
http://www.elegio.it/javascript/scacchi-finali-semplici1.html
http://www.elegio.it/javascript/scacchi-babbuini.html
http://www.elegio.it/javascript/scacchi-somari.html
Il browser di riferimento è Firefox piuttosto che Chrome...
Con gli altri browser, Safari, Opera, IE9, noto difettucci vari, tipo mancanza di qualche fonte...
Oppure fonti brutte... I soliti problemi...
Questa versione ha scopo didattico nel senso che spiega un po' prolissamente il perché delle scelte in modo da suggerirle anche a chi volesse programmare in un linguaggio diverso da quello usato qui.

Innanzi tutto spiego il perché ho usato i codici che ho usato per individuare i pezzi: per sfruttare l'operatore % che fornisce il resto della divisione diviso per un altro intero. Se scrivo 17%5 il risultato che ottegno è 2 perché 17 diviso 5 dà 3 con resto 2. Dunque il tipo del codice lo riconosco con l'operazione codicepezzo%5 dove il resto 0 individua la donna, il resto 1 individua la torre, il resto 2 individua l'alfiere, il resto 3 individua il cavallo e il resto 4 individua il pedone.

Questa regola generale ha perņ qualche importante eccezione ossia 0 rappresenta la cella vuota per cui il resto 0 della operazione 0%5 non è una donna ma appunto indica il vuoto.

Il codice 50 rappresenta uno spettatore ossia una cella vuota ma inaccessibile. Questo tipo di codice mi serve perché uso non una scacchiera di 8 righe ed 8 colonne.... ma una operativa di 16 righe e 16 colonne in cui ho annegato la scacchiera vera. In questo modo non debbo controllare gli sconfinamenti ossia se un cavallo si trova in una cella di bordo potrebbe saltare fuori della scacchiera vera ma saltando in un punto della scacchiera operativa trova un pezzo di codice 50 che non è né carne né pesce e dunque... il cavallo non esce dalla scacchiera vera.

Tutti i pezzi bianchi che rappresento col colore blu hanno codici inferiori a 50 mentre tutti i pezzi neri che rappresento col colore rosso hanno codici superiori a 50 ed ovviamente inferiori a 100 perché voglio usare codici di non più di due cifre decimali ( per ragioni grafiche se faccio stampe grezze senza usare i caratteri Unicode )

Altra importantissima eccezione sono i codici 4 e 54 che non rappresentano un pedone pur avendo resto 4 ma rappresentano il 4 il re blu e il 54 il re rosso.

Notare che ai pedoni ho dato questo tipo di codice perché quando arrivano al traguardo ( riga 1 per i blu ed 8 per i rossi... numero le righe dall'alto in basso e non come si fa tradizionalmente ) debbono essere promossi e diventano donne se il loro codice è incrementato di 1, torri se incrementato di 2, alfieri se incrementato di 3 e cavalli se incrementato di 4. Con questo trucco garantisco il fatto che tutti i pezzi in gioco hanno sempre codici diversi e dunque è facile e inequivoco fare la storia dei loro spostamenti sulla scacchiera, mossa dopo mossa.

Altra importantissima eccezione sono i codici 49 e 99 che non potrebbero essere considerati pedoni perché incrementati di 1, 2 3 o 4 quando promossi cambierebbero colore se 49 o darebbero sconfinamento se 99. Questi due codici li uso per riconoscere i pezzi che non sono mai stati mossi dall'inizio della partita perché la regola degli scacchi consente l'arrocco se e solo se il re e la torre con cui arrocca non sono mai stati mossi dall'inizio della partita. All'inizio della partita il re rosso deve stare nella cella 15 ossia prima riga e quinta colonna contando le righe dal'alto verso il basso per semplificare la stampa della scacchiera, mentre il re blu sta nella cella 85 ossia nell'ottava riga e quinta colonna e le torri rosse stanno in 11 e 18 mentre le torri blu stanno in 81 ed 88. Se dunque sulla scacchiera segno il codice 49 nella cella 85 vuol dire che lì sta il re blu mai mosso mentre se segno 49 ma sono nella cella 81 vuol dire che lì sta la torre blu mai mossa mentre se sono nella cella 88 trovo l'altra torre mai mossa. Appena perņ muovo un pezzo gli assegno il suo vero codice e non il codice dedotto dalla sua posizione ad inizio partita.

ma che palle 'sti scacchi ! ( versione del 6 dicembre 2012 )

Giocando ottusamente senza visione del futuro...
ma rispettando le regole

Ora dovrebbe saper fare anche le mosse insolite: l'arrocco, la cattura al passo e la promozione dei pedoni arrivati al traguardo.
Il file con la specifica dell'esempio esterno personalizzabile deve chiamarsi scacchi-esempio.txt e deve stare nella stessa cartella dove è stata messa questa pagina ( in rete o ricopiata sul proprio PC )

Per iniziare...

 

 

bisogna scegliere la partita

Otto opzioni disponibili

Promemoria: come funziona questa pagina e come fare le catture al volo e gli arrocchi.

Una mossa è un vettore fatto da terne di info in questo modo: Ora ho realizzato le due funzioni che servono a creare le mosse derivanti dalla cattura al passo e dell'arrocco ed una funzione che suppongo piuttosto utile per fare esperimenti con questa pagina HTML: mostra come scrivere la function javascript che consente di effettuare studi di particolari disposizioni di pezzi.

Dunque ora entriamo nel vivo dell'attività ossia nello studio di come migliorare la qualità del gioco suggerito dal programma. Come obbiettivo già raggiunto c'è il fatto che questa pagina serve, almeno ad aiutare un giocatore principiante che potrebbe fare involontariamente mosse illegali.

Oltre a questo, l'intero documento potrebbe servire come suggerimento a programmatori esperti ossia come punto di partenza per realizzare programmi che giocano a scacchi auspicabilmente in modo molto migliore di come sa giocare questa pagina di scacchi somari..

scacchi-esempio.txt deve contenere la funzione esempio9() usata come funzione esterna per studiare casi diversi da quelli del menù di base

Un esempio di come va scritta la funzione esempio9() è il seguente:

function esempio9(){ mettoblu(scacchiera,xre,32); mettoblu(scacchiera,xalfiere,57); mettoblu(scacchiera,xalfiere,43); mettorosso(scacchiera,xre,11); vedo(101,centerhtm(h2htm("Caso 9"))); }

La libreria del gioco degli scacchi è riportata dopo l'immagine qui a lato...

Giampaolo Bottoni
gpbottoni@gmail.com
http://www.alumni.polimi.it/it/Wall#10232043-giampaolo-bottoni-59627
( ing. nucleare 1972 )