83
Scacchi Autore : Moretto Alessio Anno Scolastico 2009/2010 Classe 5°C Istituto Vito Volterra, San Donà di Piave, via Milano, 9

Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

  • Upload
    buitram

  • View
    293

  • Download
    5

Embed Size (px)

Citation preview

Page 1: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

Scacchi

Autore : Moretto AlessioAnno Scolastico 2009/2010

Classe 5°CIstituto Vito Volterra, San Donà di Piave, via Milano, 9

Page 2: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?
Page 3: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

Scacchi

8 luglio 2010

Page 4: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

2

Autore : Alessio Moretto

Page 5: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

Indice

1 Introduzione 9

2 Scacchi, matematica, e calcolo 11

2.1 Scacchi, matematica, calcolo ed economia . . . . . . . . . . . . 122.2 Matematica e scacchi, la leggenda . . . . . . . . . . . . . . . . 14

2.2.1 Dimostrazione serie geometrica . . . . . . . . . . . . . 162.3 Matematica e scacchi, il cavallo . . . . . . . . . . . . . . . . . 172.4 Matematica e scacchi, il quadrato magico . . . . . . . . . . . . 202.5 Calcolo e scacchi, le mosse possibili . . . . . . . . . . . . . . . 232.6 Calcolo e la generazione di numeri casuali . . . . . . . . . . . 28

3 Storia, scacchi e la guerra fredda 31

3.1 La conferenza di Jalta . . . . . . . . . . . . . . . . . . . . . . 323.2 La Germania dopo la guerra . . . . . . . . . . . . . . . . . . . 323.3 Il piano Marshall . . . . . . . . . . . . . . . . . . . . . . . . . 323.4 La guerra fredda . . . . . . . . . . . . . . . . . . . . . . . . . 323.5 URSS contro America . . . . . . . . . . . . . . . . . . . . . . 33

4 Informatica, intelligenza arti�ciale 35

4.1 Metodi di intelligenza arti�ciale . . . . . . . . . . . . . . . . . 374.1.1 Metodo MinMax . . . . . . . . . . . . . . . . . . . . . 374.1.2 Metodo Database . . . . . . . . . . . . . . . . . . . . . 384.1.3 Come pensa un computer . . . . . . . . . . . . . . . . 384.1.4 Implementazione dell'intelligenza arti�ciale . . . . . . . 39

5 Sistemi, socket 41

6 Programmare un gioco di scacchi da 0 43

6.1 Feature implementate . . . . . . . . . . . . . . . . . . . . . . . 45

Page 6: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

4 INDICE

6.2 Come iniziare . . . . . . . . . . . . . . . . . . . . . . . . . . . 466.3 Spostamenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

6.3.1 Mossa del cavallo . . . . . . . . . . . . . . . . . . . . . 486.3.2 Mossa della torre . . . . . . . . . . . . . . . . . . . . . 496.3.3 Mossa dell'al�ere . . . . . . . . . . . . . . . . . . . . . 506.3.4 Mossa della regina . . . . . . . . . . . . . . . . . . . . 516.3.5 Mossa del re . . . . . . . . . . . . . . . . . . . . . . . . 526.3.6 Mossa del pedone . . . . . . . . . . . . . . . . . . . . . 536.3.7 Arrocco . . . . . . . . . . . . . . . . . . . . . . . . . . 54

6.4 Scacco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556.4.1 Sotto scacco . . . . . . . . . . . . . . . . . . . . . . . . 566.4.2 Scacco matto . . . . . . . . . . . . . . . . . . . . . . . 58

6.5 Patta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596.5.1 Patta per mosse . . . . . . . . . . . . . . . . . . . . . . 606.5.2 Patta per posizione morta . . . . . . . . . . . . . . . . 606.5.3 Patta per la regola delle 50 mosse . . . . . . . . . . . . 60

6.6 Salvataggio e caricamento di una partita . . . . . . . . . . . . 616.6.1 Salvataggio . . . . . . . . . . . . . . . . . . . . . . . . 616.6.2 Caricamento . . . . . . . . . . . . . . . . . . . . . . . . 61

6.7 Gioco online . . . . . . . . . . . . . . . . . . . . . . . . . . . . 626.7.1 Socket, spiegazione . . . . . . . . . . . . . . . . . . . . 626.7.2 Funzionamento del socket nel programma . . . . . . . . 636.7.3 Connessione del server socket . . . . . . . . . . . . . . 636.7.4 Connessione del client socket . . . . . . . . . . . . . . . 636.7.5 Funzionamento . . . . . . . . . . . . . . . . . . . . . . 636.7.6 Implementazione . . . . . . . . . . . . . . . . . . . . . 646.7.7 Scelta automatica dell'avversario . . . . . . . . . . . . 64

6.8 Installazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . 686.9 Realizzazzione della scacchiera . . . . . . . . . . . . . . . . . . 696.10 Suoni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 706.11 Statistiche con Database . . . . . . . . . . . . . . . . . . . . . 71

6.11.1 Salvataggio dei dati . . . . . . . . . . . . . . . . . . . . 716.11.2 Recupero dei dati . . . . . . . . . . . . . . . . . . . . . 726.11.3 Statistiche . . . . . . . . . . . . . . . . . . . . . . . . . 72

7 Conclusione 73

Page 7: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

INDICE 5

A Appendice 75

A.1 Comandi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75A.2 Allegati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77A.3 Approfondimenti odierni: la guerra fredda . . . . . . . . . . . 78A.4 Licenza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

Page 8: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

6 INDICE

Page 9: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

Elenco delle �gure

2.1 mossa del cavallo . . . . . . . . . . . . . . . . . . . . . . . . . 172.2 scacchiera 3*3 . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.3 Paolo Guerini scacchiera 3*3 . . . . . . . . . . . . . . . . . . . 182.4 Paolo Guerini scacchiera 3*3 soluzione . . . . . . . . . . . . . 182.5 percorso chiuso del cavallo . . . . . . . . . . . . . . . . . . . . 192.6 quadrato magico 3*3 . . . . . . . . . . . . . . . . . . . . . . . 202.7 quadrato magico 3*3 mossa del cavallo . . . . . . . . . . . . . 202.8 quadrato magico 3*3 collegamento fra i numeri . . . . . . . . . 212.9 quadrato magico 3*3 collegamento �nale . . . . . . . . . . . . 212.10 quadrato magico 3*3 percorso simmetrico . . . . . . . . . . . . 222.11 possibile posizione delle regine senza che si attacchino . . . . . 252.12 possibile posizione della regina per coprire tutte le caselle . . . 262.13 posizione cavallo senza che si attacchino a vicenda . . . . . . . 262.14 posizione cavallo per coprire tutta la scacchiera . . . . . . . . 27

4.1 come pensa un computer . . . . . . . . . . . . . . . . . . . . . 38

6.1 mossa del cavallo . . . . . . . . . . . . . . . . . . . . . . . . . 486.2 mossa della torre . . . . . . . . . . . . . . . . . . . . . . . . . 496.3 mossa dell'al�ere . . . . . . . . . . . . . . . . . . . . . . . . . 506.4 mossa della regina . . . . . . . . . . . . . . . . . . . . . . . . . 516.5 mossa del re . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526.6 mossa del pedone . . . . . . . . . . . . . . . . . . . . . . . . . 536.7 arrocco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

Page 10: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

8 ELENCO DELLE FIGURE

Page 11: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

Capitolo 1

Introduzione

In questa tesina parleró del gioco degli scacchi, suddividendo il tutto indue argomenti principali:

• Nella prima parte a�ronteró una relazione teorica del gioco degli scac-chi, vista da diversi punti di vista, quello matematico, probabilistico,quello storico (inteso come il rapporto degli scacchi con la storia dell'u-manitá e non degli scacchi) e quello dell'intelligenza arti�ciale, quindiinformatico.

• Nella seconda parte descriveró il programma creato per giocare a scac-chi, che permette un gioco a 2 giocatori, contro il computer e online.Nel gioco c'entrano svariate materie, quali informatica (per tutta laprogrammazione) e sistemi, per la connessione fra 2 giocatori, quindilo scambio in internet.

Ho scelto questo argomento perché é sempre stato un mio sogno riuscire aprogrammare questo gioco e perché si legava bene con molte materie scola-stiche, quali storia, matematica, calcolo, ovviamente informatica e sistemi.Lo scopo é analizzare il gioco degli scacchi nelle sue forme piú tecniche edimplementarlo in un linguaggio di programmazione.

Page 12: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

10 Introduzione

Page 13: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

Capitolo 2

Scacchi, matematica, e calcolo

Introduzione

Gli scacchi sono da sempre stati molto legati alla matematica. In questocapitolo andremo a vedere alcune delle tante relazioni che li rendono a�ni;ad esempio, parleremo del cavallo e delle sue proprietá matematiche, dellepossibili mosse nel gioco e delle possibili partite.

Page 14: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

12 Scacchi, matematica, e calcolo

2.1 Scacchi, matematica, calcolo ed economia

Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro? Ap-parentemente niente, ma in realtá le relazioni sono molte. E non lo dicoio, bensí Robert Alexander Mundell. Ma vediamo chi é Robert AlexanderMundell: Robert Alexander Mundell C.C. (Kingston, 24 ottobre 1932) é uneconomista canadese, vincitore del premio Nobel per l'economia nel 1999.Io e i miei compagni l'abbiamo incontrato il 19/03/2009 durante la gita aRoma e abbiamo avuto l'opportunitá di ascoltare un suo intervent con il ti-tolo Lectio Magistralis: Matematica, economia e scacchi. Il suo discorso éiniziato con una presentazione degli scacchi e con una breve desrcizione degliincontri che ha avuto con vari giocatori di fama mondiale. Dopo ha comin-ciato a spiegare le relazioni fra Matematica, economia e scacchi. Vediamo dianalizzarle assieme.

Queste discipline sono scienza? Ma cos'é la scienza? Secondo una de�ni-zione antica é un corpo sistematico di conoscenza. Secondo questa de�nizioneallora la risposta é si, infatti la matematica é la scienza piú antica.

Ma passiamo ad un altro argomento. Cerchiamo di trovare un collegamen-to tra economia e scacchi. Cominciamo con dare la de�nizione di economiasecondo le idee iniziali.

Economia: branca della �loso�a morale. Quindi non é una scienza. Ve-diamo come viene de�nita in un periodo storicamente successivo. Economia:scienze sociali. E adesso é de�nita come matematica, dal 1968. Data nellaquale la banca della scienza l'ha de�nita tale. Ora passiamo all'analisi dellamatematica. La prima domanda da porsi é abbastanza ovvia. Perché nonesiste un premio Nobel per la matematica? Ricordiamo che i premi Nobelvengono dati a tutte le migliori scoperte scienti�che. La risposta é abbastan-za strana, pare che la moglie di Nobel avesse come amante un matematicofamoso, e Nobel non volesse che il premio fosse dato a lui (é solo una storia,senza fonti u�ciali). Ma ci sono altri premi per i matematici. Sia l'economiache la matematica sono scienze.

Ora che abbiamo scoperto che sono scienze pensiamo ai legami. Ritor-niamo all'economia, a pensarci bene é come un gioco di cooperazione. Unaguerra nel guadagnare di piú, delle scelte strategiche per vincere, e dare scac-co matto. Finalmente abbiamo scoperto il legame tra economia e scacchi.Ma manca ancora la matematica. Molti sono i matematici che hanno stu-diato il gioco degli scacchi, ma del legame tra scacchi e matematica potremo

Page 15: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

2.1 Scacchi, matematica, calcolo ed economia 13

occuparci molto piú dettagliatamente in un capitolo successivo.Nel gioco degli scacchi si puo' prevedere chi vince una partita solo analiz-

zando le prime mosse. Infatti ci sono certe aperture considerate sfavorevoli epossiamo dire con molta probabilitá chi vincerá la partita. Quindi gli scacchisono scienza. Ed é proprio da questo ragionamento che concludiamo con laTeoria dei giochi, molto conosciuta in calcolo. Quindi se gli scacchi sonoscienza allora gli altri giochi sono scienza, ed indovinate chi sono stati i primiche hanno scritto un libro e pensato a questa teoria! Un matematico ed uneconomista.

Page 16: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

14 Scacchi, matematica, e calcolo

2.2 Matematica e scacchi, la leggenda

La matematica e gli scacchi hanno molti collegamenti, il piú conosciuto équello che si basa sul cavallo, date le sue innumerevoli proprietá. Cominciamoparlando di un problema matematico, dato anche pochi anni fa come esamedi stato.

Questo problema é stato tratto dalla leggenda degli scacchi, ma é tuttointuibile dal testo.

Testo:

Si narra che l'inventore del gioco degli scacchi chiedesse diessere compensato con chicchi di grano; un chicco sulla primacasella, due sulla seconda, quattro sulla terza e cosí via, sempreraddoppiando il numero dei chicchi, �no alla sessantaquattresimacasella. Assumendo che mille chicchi di grano pesino circa tren-totto grammi, calcola il peso in tonnellate della quantitá di granopretesa dall'inventore.

Il re che aveva ricevuto questa strana richiesta credeva che si trattasse diuna quantitá esigua e si era quasi sbalordito. Il giorno dopo i suoi matematicigli portarono il risultato dicendo che neppure tutto il grano del mondo pro-dotto in un anno sarebbe bastato. Infatti il risultato é 18.446.744.073.709.551.615chicchi di grano.

Diamo la dimostrazione matematica del risultato ottenuto. I chicchi sullan-sima casella sono dati dai termini della progressione geometrica:

an+1

an= q

oppure

an+1 = qan con q = 2

con q quantitá costante diversa da 1, detta ragione o quoziente. La somma é

Sn = a1 + a2 + ....... + an

dei primi n termini consecutivi di una progressione geometrica di ragioneq e primo termine a1 vale: Sn = a1

qn−1q−1 per q 6= 1

Dimostrazione:

Sn = a1 + a2 + · · ·+ an

Page 17: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

2.2 Matematica e scacchi, la leggenda 15

qSn = qa1 + qa2 + · · ·+ qan = a2 + a3 + · · ·+ an+1

sottraendo membro a membro

(q − 1)Sn = an+1 − a1

Sn =an+1 − a1q − 1

=qna1 − a1q − 1

= a1qn − 1

q − 1

essendo an+1 = qan = qqan−1 = · · · = qna1

Sn = a1qn−1q−1 per q 6= 1

oppure Sn = a11−qn1−q

Nel caso in esame la richiesta dell'ambasciatore costituisce la progressionegeometrica

1, 2, 22, ..., 263

la cui somma vale

S64 = 1 ∗ 264 − 1

2− 1= 264 − 1

Se voglio quindi risolvere il problema dato all'inizio, calcolo le tonnellatecorrispondenti, facendo il risultato appena venutomi per il peso di ogni sin-golo chicco di grano, ottenendo proprio il numero 18.446.744.073.709.551.615riportato sopra.

Page 18: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

16 Scacchi, matematica, e calcolo

2.2.1 Dimostrazione serie geometrica

Si dice serie geometrica di ragione q la seguente:

+∞∑n=0

qn = 1 + q + q2 + q3 + · · ·+ qn + · · ·

Volendo studiarne il carattere, scriviamo:

Sn = 1 + q + q2 + q3 + · · ·+ qn = 1−qn+1

1−q per q 6= 1

dalla formula precedentemente dimostrata, osservando che Sn é la somma deiprimi n + 1 termini calcoliamo:

limn→+∞

Sn = limn→+∞

1− qn+1

1− q=

∞ se |q|>1 +∞ se|q|>1 cioé la serie diverge positivamente∞ se|q|<-1 cioé la serie diverge oscillando

11−q se |q|<1 cioé la serie converge a 1

1−qnon esiste se q=-1 cioé la serie é indeterminata

Inoltre Sn = n + 1 se q=1 da cui limn→+∞ Sn = +∞ per q=1

Riassumendo, la serie converge a a 11−q se e solo se |q|<1

Page 19: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

2.3 Matematica e scacchi, il cavallo 17

2.3 Matematica e scacchi, il cavallo

Il cavallo é forse il pezzo piú interessante del gioco ed é anche il pezzopiú signi�cativo dal punto di vista della matematica. Ma vediamo come simuove: prendiamo come punto di partenza il cavallo posizionato al centro,tutte le altre ra�gurazioni sono le possibli mosse orizzontali e verticvali. Inpoche parole il cavallo si muove a L, cioé di 2 caselle in una direzione e di1 nell' altra(Figura 2.1), oppure possiamo dire che il suo spostamento é inmodulo di 3, escludendo peró i casi in cui uno o l'altro valore di coordinatesiano 0.

Figura 2.1: mossa del cavallo

Adesso analizziamo le proprietá del cavallo, prendiamo una scacchiera3*3, cioé composta da 9 quadrati. Questa scacchiera, ridotta rispetto al-la 8*8, che si usa solitamente per giocare a scacchi, ha molte proprietáinteressanti(Figura 2.2).

Figura 2.2: scacchiera 3*3

Page 20: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

18 Scacchi, matematica, e calcolo

Vediamo di elencarne alcune. Di sicuro, quando si parla di questa scac-chiera, dobbiamo citare Paolo Guarini del 1512, che presentó il seguenteproblema:

Dato una scacchiera di dimensione 3*3 e 4 cavalli, 2 neri e 2bianchi, disposti negl'angoli, invertirne la posizione

Paolo Guarini

Ora risolviamo il problema, abbastanza intuitivamente(Figura 2.3, Figura2.4).

Figura 2.3: Paolo Guerini scacchiera 3*3

Figura 2.4: Paolo Guerini scacchiera 3*3 soluzione

Page 21: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

2.3 Matematica e scacchi, il cavallo 19

Sempre riguardo al cavallo possiamo valutare le sue mosse in una normalescacchiera a 64 caselle. Esistono due tipi di percorsi che puó compiere uncavallo, passando una sola volta in tutte le caselle:

• chiuso

• aperto

Uno dei casi piú interessanti é quello di fargli compiere un percorso chiuso,vediamo come (�gura 2.5).

Figura 2.5: percorso chiuso del cavallo

Per compiere un percorso chiuso una delle tecniche migliori consiste neltenersi il piú possibile vicino ai bordi, ma non é ancora stato creato unalgoritmo per risolverlo.

Page 22: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

20 Scacchi, matematica, e calcolo

2.4 Matematica e scacchi, il quadrato magico

Ma ancora piú sorprendente é il quadrato magico 3*3, giá conosciuto daicinesi. Ha come proprietá che la somma delle diagonali, delle colonne e dellerighe faccia sempre una costante, cioé 15(Figura 2.6).

Figura 2.6: quadrato magico 3*3

Provando a collegare fra di loro i primi tre numeri possiamo notare checorrispondono esattamente alla mossa del cavallo, in e�etti lo spostamentoavviene di due caselle in un senso e una nell'altro.

Lo stesso risultato si ottiene collegando fra di loro gli ultimi 3 numeri.E�ettivamente la mossa del cavallo é considerata distintiva per il gioco

degli scacchi, dato che puó saltare gli altri pezzi(Figura 2.7).

Figura 2.7: quadrato magico 3*3 mossa del cavallo

Page 23: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

2.4 Matematica e scacchi, il quadrato magico 21

Ma la cosa ancora piú interessante avviene quando proviamo a collegarefra di loro i primi 3 numeri e gli ultimi 3, come fatto in precedenza, partendodal centro e usando entrambe le strade possibili(Figura 2.8, Figura 2.9).

Figura 2.8: quadrato magico 3*3 collegamento fra i numeri

Figura 2.9: quadrato magico 3*3 collegamento �nale

Possiamo notare che viene a formarsi una scacchiera del tipo 2*2, rac-chiusa dentro la principale.

Page 24: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

22 Scacchi, matematica, e calcolo

Il quadrato magico ha molte altre proprietá, proviamo a collegare succes-sivamente i numeri(Figura 2.10).

Figura 2.10: quadrato magico 3*3 percorso simmetrico

Come é evidente dalla �gura possiamo notare una perfetta simmetria,infatti ruotandolo di 180o la �gura rimane identica.

Page 25: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

2.5 Calcolo e scacchi, le mosse possibili 23

2.5 Calcolo e scacchi, le mosse possibili

La quantitá di mosse possibili negli scacchi é assai elevata, una piccoladimostrazione c'é l'ha data la storia, ma vediamo nel dettaglio perché questogioco é cosí complesso.

Analizziamo le possibili mosse e soprattutto perché esse non sono in�nite:

• Per ottenere il numero massimo di mosse, quando tutti i pezzi sonoancora sulla scacchiera, devo sommare il numero massimo di mosse perogni singolo pezzo (cioé 8 per il re, 27 per la regina, 14 per la torre, 13per l'al�ere, 8 per il cavallo, e 2 per il pedone) per il numero di pezzi:8 + 27 + (14 ∗ 2) + (13 ∗ 2) + (8 ∗ 2) + (2 ∗ 8) = 111.

• In maniera analoga per ottenere il numero medio di mosse, quando tut-ti i pezzi sono ancora sulla scacchiera, devo sommare il numero mediodi mosse di ciascun pezzo (cioé 6,5 per il re, 22,5 per la regina, 14 per latorre, 8,5 per l'al�ere, 5 per il cavallo, e 1 per il pedone) per il numerodi pezzi: 6.5 + 22, 5 + (14 ∗ 2) + (8, 5 ∗ 2) + (5 ∗ 2) + (1 ∗ 8) = 92, 5. Inpratica il numero sará peró inferiore, a causa della mancanza di alcunipezzi o della illegalitá di alcune mosse di alcuni pezzi, una valutazio-ne approssimata del numero medio di mosse disponibili durante unapartita standard é di circa 40.

• Il numero massimo allle possibili disposizioni che si possono otteneresulla scacchiera é dato dal numero di possibili disposizioni dei 32 pezzisulle 64 caselle della scacchiera, cioé 64321057.

• Grazie alla regola detta sopra otteniamo un limite alle partite, perchéquando due disposizioni si ripetono esattamente, ció che é successo nelfrattempo non ha piú importanza. Il numero delle possibili partite édunque limitato da 1111057101058.

• Anche considerando solo partite piú ragionevoli, di 100 mosse e conuna media di 40 mosse possibili ogni volta, si ottiene comunque ancoraun massimo di 10040 = 1080,

• Si calcolano oltre 300 miliardi di modi per giocare le prime quattromosse e 1030 per giocare le prime dieci mosse.

• Si stima che nell'universo ci sono 1080 atomi.

Page 26: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

24 Scacchi, matematica, e calcolo

Da questo possiamo dedurre che é impensabile poter analizzare tutte lemosse degli scacchi.

Ma passiamo ad altro, cerchiamo di risolvere un noto problema: Quan-te Regine si possono porre sulla scacchiera in modo che non si attacchinovicendevolmente?

Prima di dare la risposta, facciamo un po di storia. Questo problema haorigine nel 1848, posto da una rivista tedesca, la Scachzeitung, quesito fattoda �lologo professor Nauck, che lo pose anche a Karl Friedrich Gauss (1777-1855). Questo matematico cominció a ragionarci con Heinrich Schumacher(1780-1850). Dopo solo due anni arrivarono alla risposta, senza riuscire adimostrarla. Solo nel 1874, ben 24 anni dopo, si riuscí a dimostrare, grazieall'inglese Gleisher, docente a Cambridge, e il tedesco Gunther dell'universita'di Lipsia. Riuscirono a dimostrarlo grazie alla teoria dei determinanti.

Finalmente ecco la soluzione: ci sono ben 92 modi diversi per disporrele regine nella scacchiera in modo che nessuna attacchi l'altra. Di cui solo12 uniche, infatti ogni soluzione base ne fornisce altre tre per rotazione dellascacchiera e quattro per ri�essione. Da notare che la soluzione presentatacon il numero 12, che é simmetrica dá origine a sole tre derivate. Ho decisodi dare i classici nomi alle caselle, come mostrato in questa tabella, in cui lacasella a1 é di colore nero (quindi vista dalla parte del bianco).

a8 b8 c8 d8 e8 f8 g8 h8a7 b7 c7 d7 e7 f7 g7 h7a6 b6 c6 d6 e6 f6 g6 h6a5 b5 c5 d5 e5 f5 g5 h5a4 b4 c4 d4 e4 f4 g4 h4a3 b3 c3 d3 e3 f3 g3 h3a2 b2 c2 d2 e2 f2 g2 h2a1 b1 c1 d1 e1 f1 g1 h1

Page 27: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

2.5 Calcolo e scacchi, le mosse possibili 25

1. a4 b1 c5 d8 e2 f7 g3 h6

2. a4 b1 c5 d8 e6 f3 g7 h2

3. a4 b2 c5 d8 e6 f1 g3 h7

4. a4 b2 c7 d3 e6 f8 g1 h5

5. a4 b2 c7 d3 e6 f8 g5 h1

6. a4 b2 c7 d5 e1 f8 g6 h3

7. a4 b2 c8 d5 e7 f1 g3 h6

8. a4 b2 c8 d6 e1 f3 g5 h7

9. a4 b6 c1 d5 e2 f8 g3 h7

10. a4 b7 c5 d2 e6 f1 g3 h8

11. a4 b8 c1 d5 e7 f2 g6 h3

12. a4 b6 c8 d2 e7 f1 g3 h5

Un esempio qui sotto(Figura 2.11).

Figura 2.11: possibile posizione delle regine senza che si attacchino

Invece, bastano solo 5 regine per coprire tutte le caselle di una scacchie-ra(Figura 2.12).

Page 28: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

26 Scacchi, matematica, e calcolo

Figura 2.12: possibile posizione della regina per coprire tutte le caselle

Passando al nostro cavallo, invece, potremmo utlizzarne 32 per disporlinella scacchiera senza che si attacchino a vicenda(�gura 2.13). Anche questadisposizione é interessante, perché si ha il numero massimo di pezzi dispostinella scacchiera

Figura 2.13: posizione cavallo senza che si attacchino a vicenda

Page 29: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

2.5 Calcolo e scacchi, le mosse possibili 27

Mentre ne bastano solo 12 per coprire tutte le caselle di una normalescacchiera(�gura 2.14).

Figura 2.14: posizione cavallo per coprire tutta la scacchiera

Page 30: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

28 Scacchi, matematica, e calcolo

2.6 Calcolo e la generazione di numeri casuali

Nel programma che ho creato ho dovuto generare dei numeri casuali per ladecisione di alcune scelte. Per fortuna in tutti i linguaggi di programmazioneesiste una funzione RANDOM, ma vediamo come potrebbero essere creatialtrimenti. Ovviamente un computer ha oslo un modo per generare numericasuali, cioé basarsi su delle formule matematiche. Per de�nire un numerocasuale dobbiamo valutare che si veri�chino le seguenti caratteristiche:

• i numeri generati devono avere la stessa probabilitá di presentarsi.

• i numeri non devono risultare dipendenti fra di loro, cioé non ci deveessere alcun legame.

• la sequenza generata deve poter essere riprodotta

• il computer deve eseguire la generazione rapidamente

Un computer non sará mai in grado di generare veramente dei numericasuali, in quanto i numeri sono dipendenti fra di loro sato che derivano dauna formula matematica, ma ci arriverá molto vicino, questa numeri cosígenerati prenderanno il nome di nuemri pseudo-casuali.

Uno dei metodi che si puó utilizzare ha il nome di metodo della congruenzalineare.

Dato un valore iniziale x0 é possibile ottenere una sequenza di numeripseudo-casuali applicando la seguente formula:

xi+1 = (a ∗ xi + c)(MODm)

in cui:

• a é un coe�ciente intero detto moltiplicatore, positivo

• c é un coe�ciente intero non negativo detto incremento

• m é un coe�ciente intero detto modulo, positivo

• xi é il numero di sequenza

• MOD indica il resto della divisione

Page 31: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

2.6 Calcolo e la generazione di numeri casuali 29

Provando a cambiare i coe�cienti possiamo notare che assegnandogliparticolari valori possiamo ottenere delle sequenza migliori.

Da degli studi approfonditi é stato detto che

• c e m devono essere coprimi cioé MCD(c,m) = 1

• ogni divisore primo di m deve dividere (a-1)

• se m é multiplo di 4, anche (a-1) lo deve essere.

Con altri approfondimenti si sono ottenuti i seguenti valori:

m = 231, a = int(Π ∗ 108), c = 453806245

m = 231 − 1, a = 75, c = 0

m = 231, a = 513, c = 0

m = 231, a = 216 + 3, c = 0

Page 32: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

30 Scacchi, matematica, e calcolo

Page 33: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

Capitolo 3

Storia, scacchi e la guerra fredda

Introduzione

Anche fra gli scacchi e la guerra fredda esiste uno stretto rapporto, in-fatti la guerra fredda si giocava in ogni fronte, per dimostrare la potenzadi una nazione rispetto ad un altra, ed in un periodo in cui le innovazio-ni tecnologiche contavano molto (basti pensare alla bomba atomica, la piúgrande rivoluzione tecnologica o il radar che ha permesso agli americani divincere la guerra), dimostrare la potenza in un gioco tattico e di intelligenzaarti�ciale era assai importante. Per non parlare degli eventi mediatici cheseguivano ogni partita fra Americani e Unione Sovietica, su cui non ci sof-fermeremo molto. In questo capitolo andremo ad analizzare prima la guerrafredda, raccontandone i principali avvenimenti, successivamente il rapportoche hanno giocato gli scacchi in questa guerra. Vediamo subito in che cosadi�erisce la guerra fredda rispetto a una guerra normale. Prima di�erenzasostanziale é la non presenza di battaglie: infatti non si combattono scontridiretti fra eserciti, anche se avviene una corsa agli armamenti, in cui âvinceâla nazione che ha piú armi per combattere un'eventuale guerra. La guerrafredda é stata combattuta non solo attraverso la corsa agli armamenti, fraStati Uniti e Unione Sovietica, ma anche a livello informatico, come vedremosuccessivamente.

Page 34: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

32 Storia, scacchi e la guerra fredda

3.1 La conferenza di Jalta

Uno dei primi passi verso la guerra fredda é stata la conferenza di Jalta,una piccola cittá sulla costa della Crimea, in cui, nel febbraio del 1945, po-co prima della �ne della seconda guerra mondiale. le grandi nazioni ormaivincitrici si sono messe d'accordo su come spartirsi il mondo. Grecia, Au-stria, Italia rimanevano sotto l'in�uenza degli Anglo-Americani, Romania eBulgaria sotto quella sovietica, mentre l' Ungheria, la Polonia e la Jugoslaviasarebbero state sotto l'in�uenza di entrambe le potenze. La Germania ven-ne divisa in quattro zone, di pertinenza sovietica, statunitense, britannica efrancese.

3.2 La Germania dopo la guerra

Come detto in precedenza, la Germania inizialmente fu suddivisa in quat-tro zone, successivamente in due, una occidentale e una orientale, grazie allafusione delle zone inglesi, francesi e americane. Tra l'aprile 1948 e il maggio1949 le truppe sovietiche chiusero le vie d'accesso alla cittá di Berlino percostringere gli Americani ad abbandonare la parte ad Ovest della cittá. Inquesta occasione la Guerra fredda rischió di trasformarsi in una guerra calda.Gli Americani crearono la NATO, che impegnava i paesi aderenti alla difesareciproca.

3.3 Il piano Marshall

Nel 1947 il presidente Truman decise di osteggiare l'avanzamento del co-munismo fornendo aiuti, dal cibo alla moneta, ai governi che fossero statimessi in di�coltá da movimenti che si ispiravano a quella ideologia. Questoper bloccare l'avanzamento dell'in�uenza Sovietica in un'Europa che dovevaricostruirsi.

3.4 La guerra fredda

La guerra fredda fra America e Unione Sovietica é stata combattuta sudiversi piani. Uno dei tanti é la concorrenza spaziale, che ha visto le due

Page 35: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

3.5 URSS contro America 33

nazioni combattere per la conquista dello spazio. In un primo momento sem-brava vincesse l'Unione Sovietica, successivamente l'America riuscí a ottenereil primato con la conquista della luna. Altro aspetto é stata la concorren-za socio-economica con la lotta per la conquista delle terre del terzo mondo(Africa). Un' altra battaglia, indiretta, é stata la crisi cubana, in cui, tramiteun colpo di stato, andó al potere la dittatura di Fulgencio Batista. Successi-vamente Fidel Castro prese il potere grazie a una rivoluzione popolare. GliAmericani si sentirono minacciati dal fatto che gli altri stati coloniali avreb-bero potuto ribellarsi e cercó perció in tutti i modi di ostacolare Cuba. Perquesto Cuba inizió ad avere rapporti commerciali con l'Urss, che diventó ilprimo acquirente di zucchero prodottao dall'isola. Successivamente stabiliro-no una relazione di alleanza politica. L'America rispose bloccando i rapporticommerciali con Cuba. Questa tensione rischió di trasformarsi in con�ittoaperto durante la âcrisi dei missiliâ tra l'Urss e gli Usa. Altri fatti moltorilevanti furono quelli che riguardarono le due Coree, in cui le due superpo-tenze si collocavano in aiuto delle due parti in lotta, rispettivamente a Nordl'Unione sovietica e al Sud l'America. In�ne la guerra in Vietnam: comein Corea le due potenze si s�darono indirettamente, formando un governocomunista al Nord del Vietnam, mentre un governo piú �lo-occidentale alSud.

3.5 URSS contro America

Abbiamo appena visto la situazione generale del mondo dopo la secondaGuerra Mondiale, parlando della guerra fredda e dei rapporti tra Urss e Ame-rica. Ora vedremo, piú approfonditamente come gli scacchi siano stati unaforma di scontro e di incontro tra le due nazioni, raccontando le tappe sto-riche della s�da scacchistica. Fino al 1972 era l'Unione Sovietica a detenereil titolo del campione del mondo degli scacchi e le partite che si disputavanoerano un'occasione di incontro tra le due nazioni, oltre ad essere una sortadi s�da mondiale. A quel tempo era Spassky il campione del mondo, unRusso, �ncheé Fischer, un americano, lo batté conquistando il titolo. Unapesante scon�tta per i russi e per Spassky che non riuscí mai a tornare adaltissimi livelli. Per i tre anni successivi i russi cercarono un giocatore ingrado do spodestare Fischer. Nel 1978 Fischer fu chiamato a difendere iltitolo contro Karpov, anch'esso un russo, ma ri�utó consegnando al russo iltitolo a tavolino. Un altra s�da fra le due nazione a livello scacchistico fu

Page 36: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

34 Storia, scacchi e la guerra fredda

disputata non dagli essere umani ma dai calcolatori. 1 In entrambe le na-zioni, i militari hanno �nanziato delle ricerche sulla teoria dei giochi e sullosviluppo di giocatori arti�ciali, quindi sull'intelligenza arti�ciale. Il primoprogramma funzionante é del 1956 (fatto da Los Alamos Labs), anche se inuna scacchiera 6 x 6 (mancavano gli al�eri). Al MIT, a CMU e a Stanfordsono sta creati i primi programmi completi (1958-64). Nel 1967, una mac-china sovietica (a Mosca) scon�sse 4-0 una macchina americana (a Stanford)giocando per corrispondenza, cioÃ� attraverso uno scambio di messaggi. Danotare l'anno, 1967, proprio nel periodo âcaldoâ della guerra fredda. Vienefacile la supposizione che non si tratti solo di semplici partite di scacchi frauna nazione e l'altra, solo per dimostrare la bravura degli stessi, ma che sitratti di una vera e propria dimostrazione di forza. Ai giorni d'oggi si parlamolto spesso di missili intelligenti, ma giá allora le ricerche dei militari sisono spostate su questo percorso. Possiamo quindi valutare questa semplicepartita come una vera e propria battaglia. Solo nel 1994, alcuni programmicommerciali (tra cui Fritz3 e Genius) hanno battuto in alcune partite brevi ilCampione del Mondo (Kasparov). Nel 1997, Deep Blue della IBM ha battutodi misura il Campione del Mondo (Kasparov) in un torneo-match regolare.

1fonti:http://www.chessbase.com/newsdetail.asp?newsid=5153,http://en.wikipedia.org/wiki/Kaissa

Page 37: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

Capitolo 4

Informatica, intelligenza arti�ciale

Introduzione

In questa parte parleró dell'intelligenza arti�ciale. Prima di cominciare adiscuterne é meglio de�nirla. Perché ci sono diversi punti di vista.

Con il termine intelligenza arti�ciale (o IA, dalle iniziali delledue parole, in italiano) si intende generalmente l'abilitá di uncomputer di svolgere funzioni e ragionamenti tipici della menteumana.

Wikipedia

Questa é una citazione presa dalla nota enciclopedia online Wikipedia del-l'intelligenza arti�ciale, in cui viene de�nita come l'abilitá di un calcolatorenello svolgere funzioni e ragionamenti tipici della mente umana. Abbiamocapito che parlando della IA ci si riferisce ad un calcolatore, ma quali sono iragionamenti tipici della mente umana?

Un risposta a questa domanda la possiamo trovare grazie ad Alan Turinged ad un suo articolo pubblicato nella rivista Mind nel 1950 (quindi non moltianni fa). 1

Can machines think?

Alan Turing

1fonte: http://www.loebner.net/Prizef/TuringArticle.html

Page 38: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

36 Informatica, intelligenza arti�ciale

Con questa semplice domanda Alan vuole de�nire cos'é l'intelligenza arti-�ciale. Cioé la capacitá di pensiero e di ragionamento delle macchine, quindisolo quando un uomo compiendo una qualsiasi azione con una macchina nonsi accorgerá che essa é una macchina si puó dire che questa é intelligenzaarti�ciale.

Appena pubblicato questo articolo Arthur Samuel presentó il suo pro-gramma per giocare a dama. La cosa eccezzionale di questo programmaera che il computer riusciva ad imparare giocando con altre persone, quindiriusciva a risolvere problemi legati all'intelligenza umana.

Si puó dire che l'intelligenza arti�ciale sia stata inventata? No, perché iltest di Touring, presentato sopra, é stato piú volte sistemato e corretto, e,forse, neppure ai nostri giorni l'intelligenza arti�ciale é stata scoperta.

A questo punto é meglio fare un po di chiarezza, facendo una suddivisionedell'intelligenza arti�ciale:

• intelligenza arti�ciale forte

• intelligenza arti�ciale debole

Cominciamo parlando della piú semplice, l'intelligenza arti�ciale debole.Cioé che un computer non riuscirá mai ad eguagliare la complesitá dellamente umana, ma potrá solo simularla, cosa assai diversa simulare, da essereuguali. Al giorno d'oggi, e credo ancora per molti e molti anni, é questal'intelligenza arti�ciale predominante. Infatti un computer é stato istruitoa comprendere e a risolvere certe cose, ma non é ancora in grado di capirerealmente cosa sta facendo.

L'intelligenza arti�ciale forte, forse é quella de�nita da Alan Touring,dove un computer é realmente in grado di pensare. Cioé le macchine sonorealmente in grado di prendere conoscenza della loro esistenza.

Quindi noi parleremo d'ora in poi dell'intelligenza arti�ciale, intesa comeintelligenza arti�ciale debole.

Ora che abbiamo ben de�nito cosé l'intelligenza arti�ciale, passiamo aivari metodi per crearla.

Page 39: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

4.1 Metodi di intelligenza arti�ciale 37

4.1 Metodi di intelligenza arti�ciale

Introduzione

Per parlare dei vari metodi di intelligenza arti�ciale ci appoggiamo algioco preso in esame in questa relazione: il gioco degli scacchi. Primo passoé vedere se serve intelligenza per giocare a scacchi. Se un giocatore muovea caso possiamo dire di no, dato che basterá seguire quelle semplici regoledi limitazione delle mosse. Ma se cominciamo a mettere il sapersi difendere,l'attaccare o molto altro allora possiamo dire che giocare a scacchi equivalead essere intelligenti. Adesso andiamo ad analizzare alcuni metodi:

• MinMax

• Database

4.1.1 Metodo MinMax

Il metodo MinMax é forse il piú conosciuto ed utilizzato, esso valuta ilguadagno della mossa. Infatti, se facendo quella mossa il computer passain vantaggio o riduce il suo svantaggio vuol dire che quella mossa é buona.Se invece, facendo quella mossa il computer passa in svantaggio o comunqueperde punti, vuol dire che non deve fare quella mossa. Per valutare il vantag-gio o lo svantaggio basta applicare dei punteggi ai vari pezzi e ricalcolarli ognisingola mossa. Con una particolare attenzione: il punteggio del re vale +∞, come dare scacco matto. Oltre a questo dobbiamo espandere l'algoritmo,cioé fare una valutazione ad albero, non solo alla singola mossa, ma al ramo.Infatti se valutiamo la sola prima mossa esso risulterá ine�cace, dobbiamoinvece andare piú in profondita, valutando in modo ricorsivo la mossa del-l'avversario, poi da quella valutare la nostra possibile mossa, cosí facendo,se nel primo controllo avremmo dovuto vedere solo 40 mosse circa, nel se-condo controllo dobbiamo valutare sempre 40 mossa, ma per ogni mossa, ilche equivale a 40*40 che é uguale a 1600 possibili mosse. Un'ottimizzazionedi questo algoritmo potrebbe essere il salvataggio in memoria dei rami chepotrebbero ancora essere utilizzati.

Page 40: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

38 Informatica, intelligenza arti�ciale

4.1.2 Metodo Database

Questo metodo non é proprio un metodo capace di reggersi da solo (almomento), data la quantitá delle possibili partite, ma potrebbe essere utiliz-zato assieme al metodo MinMax. Infatti basterebbe salvare in un databasetutte le partite o alcune situazioni strane, in cui, se il computer si trova inquel caso, sa di dover fare quella mossa. Questa scelta é tornata utile nellastoria2 (come nel match fra Kasparov, il campione mondiale e Deep Bluedell'IBM), infatti, sono stai molti i casi in cui un computer, giustamente, va-lutava migliore una mossa, non vedendo possibilitá di scacco matto, ma unaserie di mosse dell'avversario l'avrebbero portato inevitabilmente in quellasituazione in cui perdeva (da ipotizzare che la mossa non era prevedibile,perché troppo avanti o poco probabile per il computer). per cui, metendoun database che dice che in quel caso deve fare quella mossa, il problema sirisolve.

4.1.3 Come pensa un computer

Fino ad adesso abbiamo analizzato i metodi dell'intelligenza arti�ciale,ma cosa fa un computer e come pensa un computer durante la'pplicazionedi questi metodi? Come fase iniziale voglio mostrarvi la rappresentazionegra�ca della valutazione dell'algoritmo MinMax, lo faró grazie ad un ottimoprogramma, scritto in java, che si trova in internet e che mostra gra�camente,mediante delle linee le mosse che il computer pensa.3

Figura 4.1: come pensa un computer

Ma questo algoritmo risulta completamente ine�cace messo in pratica.Infatti, non é contemplato lo scacco matto e la difesa dallo scacco mat-to. Quindi devo implementare delle semplici modi�che a questo algoritmo.Inserendo prima dei controlli, nel seguente ordine:

2fonte: http://it.wikipedia.org/wiki/IBMDeepBlue3fonte: http://turbulence.org/spotlight/thinking/chess.html

Page 41: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

4.1 Metodi di intelligenza arti�ciale 39

1. se posso dare scacco matto legalmente faccio la mossa.

2. se mi puó dare scacco matto mi devo difendere.

3. se no faccio l'algoritmo MinMax.

Per il primo punto non ho di�coltá particolari in quanto basta comunqueanalizzare tutte le possibili mosse e vedere se una é vincente.

Il secondo punto diventa un po' piú problematico, infatti posso facilmenterilevare la possibilitá di uno scacco matto, valutando tutte le mosse, ma devoanche valutare una mossa che mi possa difendere e�cacemente, quindi adogni mossa per la difesa devo riutilizzare l'algoritmo MinMAx per valutarnel'e�cacia.

Il terzo punto é giá stato spiegato e, anche se é la parte meno importantedel gioco, dato che non si perde e non si vince, é il piú utilizzato e quello dacui dipenderá tutta la partita.

4.1.4 Implementazione dell'intelligenza arti�ciale

L'algoritmo piú e�cace da me utilizzato é stato quello del minmax. Hoassegnato ad ogni pezzo un punteggio, 9 per la regina, 5 per la torre,3 perper cavallo ed al�ere e 1 per i pedoni. Il computer simula ogni singola mossa,se la mossa é consentita valuta se questa mossa gli conviene. Salva, quindi,in una varibile il punteggio, ottenuto dalla somma del valore di tutti i pezziancora presenti, se quella mossa gli porta a guadagnare punti allora la valutacome buona. Se dovesse trovare una mossa migliore di questa compie sem-pre la migliore. Ovviamente se puó dare scacco matto valuta quella mossala migliore, solo se le mosse da fare per farlo sono solamente una. Questoragionamento di valutazione della mossa puó essere idealmente valutato al-l'in�nito, ma per limiti tecnici, non é possibile farlo. Questo algoritmo puótrovare degli inceppi, in quanto non sempre si trova una mossa favorevole,per quanto si possa andare avanti. A questo punto si puó valutare la mossache potrebbe portarci meno perdite, ma nel caso non se ne venga a caposiamo costretti a fare una mossa casuale.

Page 42: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

40 Informatica, intelligenza arti�ciale

Page 43: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

Capitolo 5

Sistemi, socket

Introduzione

Il socket é una tecnica che ho utilizzato per implementare il gioco onlinefra due giocatori. Vediamo cos'e il socket. Il socket é una tecnica di comu-nicazione usata per creare una comunicazione fra due pc. La connessioneviene identi�cata dalla coppia dei socket, uno server e uno client, chiamatacoppia di socket. Dato che in un pc ci possono essere piú socket ho bisognodi identi�care l'applicazioni che ha e�ettuato la richiesta, per questo uso leporte, che sono numeri a 16bit, che hanno valori da 0 a 65.635, di cui i primi1.023 sono giá assegnati. Il protocollo TCP da me utilizzato é connesso ea�dabile, vediamo cosa accade al momento di stabilire una connessione. Idue pc contrattano la dimensione massima dei segmenti, decidendo di utiliz-zare la dimensione minore delle due. Se un dispositivo nel percorso fatto dalsegmento TCP scarta lo stesso allora questo dispositivo avvisa il mittentedell'accaduto che si occuperá di diminuire la dimensione. Il segmento TCPé cosí formato:2 byte Source Port, che contengono il numero di porta del mittente2 byte Destination Port, che contengono il numero di porta del destinatario4 byte Sequence number, che contengono il numero di sequenza del primobyte di dati contenuto nel segmento4 byte Acknowledgement number, che contengono il numero di sequenza delprossimo byte atteso4 bit Header length, che indicano da dove iniziano i veri dati nel segmento6 bit usati come �ag,URG, usato per indicare che il segmento contiene dati urgenti, quindi da

Page 44: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

42 Sistemi, socket

consegnare imemdiatamenteACK, usato per confermare i dati ricevutiPSH, usato per indicare dati da consegnare subito, senza doverli mettere nelbu�erSYN, usato per l'apertura di una connessioneFIN, usato per chiudere una connessione2 byte Window size, usati per gestire il controllo i �usso2 byte Checksum, usati per la parola di controllo, per veri�care la correttezzadel messaggio ricevuto2 byte Urgent pointer, viene usato per indicare fra quanto iniziano i datiurgenti, se il bit URG é settato a 1Vedremo piú avanti come funziona un socket nella sua parte piú software.

Page 45: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

Capitolo 6

Programmare un gioco di scacchi

da 0

Introduzione

Per questo programma ho deciso di utilizzare Gambas, che é un linguag-gio di programmazione per ambienti Unix. La scelta é caduta su questoprogramma perché permetteva una gestione gra�ca per la creazione del gio-co degli scacchi, in modo semplice, con il classico metodo o�erto dal famosoVisual Basic, permette anche di usare la shell linux con un semplice comandoed ha una vastitá di comandi per la programmazione, unico difetto é che é unlinguaggio interpretato, per cui risulta un pochino piú lento del normale. Lascelta é ricaduta su Gambas perché é un linguaggio di programmazione chefunziona su sistemi operativi linux, piú sicuri e stabili. Non ho scelto linguag-gi di programmazione tipo java perhcé esso risultava, olte che molto lento,inadatto per il lavoro che volevo svolgere, infatti la gestione dell'interfacciaera molto piú problematica per non parlare della di�coltá delle operazionidi input/output, inoltre java avrebbe dovuto essere preinstallato sul siste-ma operativo, per far funzionare il programma, mentre questo linguaggio diprogrammazione non necessita di alcun componente aggiuntivo.

Gambas, purché si paragoni molto spesso a Visual Basic non c'entra nulla,infatti vuole prendere la semplicitá del Basic unita alla facilitá dei metodi diutilizzo di Visual Basic.

Gambas é un acronimo ricorsivo che deriva da Gambas Almost MeansBASic che tradotto suona come Gambas piú o meno signi�ca Basic, con

Page 46: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

44 Programmare un gioco di scacchi da 0

Gambas intendono sia il linguaggio che l'interprete.Gambas é capace di creare degli eseguibili contenenti le istruzioni in byte-

code, un codice che dovrá poi essere programmato.L'IDE di Gambas (che é scritto in Gambas) favorisce la creazione in ma-

niera facilissima di GUI per i nostri programmi, é possibile sfruttare GTK+o le Qt, cosí da poter essere eseguite sia in ambienti Gnome che KDE.

Page 47: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

6.1 Feature implementate 45

6.1 Feature implementate

In questa parte descriveró molto brevemente tutte le feature implemen-tate nel gioco.Regolazione delle mosse di tutti i pezzi, secondo le regole internazionali.Controllo scacco, se sei sotto scacco e non ti salvi la partita é �nitaSe metti il tuo re sotto scacco non puoiControllo scacco mattoMostra caselle partenza e arrivoMostra pezzo selezionatoAnnulla mossa se si clicca nella stessa casellaArrocco, se non ho mosso i pezzi interessati e se il re non é sotto scaccoPartita patta se non ha mosse legaliPartita patta se i pezzi non sono su�cienti per concludere la partitaSalvataggio e caricamento partita con un �le di testoGioco online con chat.Salvataggio in un database dei dati relativi alle vittorie e scon�tte di un gio-catore, con relativa visualizzazione tramite un gra�co.Visualizzazione tesina dal programma.Visualizzazione video dal programma.Gioco contro il pc.

Page 48: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

46 Programmare un gioco di scacchi da 0

6.2 Come iniziare

In questa sezione parleró di come procedere per fare un gioco di scacchi,con una guida passo passo.

Come primo passo devo creare l'ambiente di gioco. Ho utilizzato una seriedi caselle colorote diversamente a cui ho assegnato i rispettivi nomi.

Successivamente ho aggiunto alle caselle i vari pezzi.Ho usato una matrice 8*8 per salvare le posizioni dando come valore [1,1]

quello delle coordinate [1,1] cioé A1 cioé torre bianca.Il gioco comincia quando e�ettuo il click sulla cella. In sintesi ecco ció

che avviene.Valuto se devo spostare il pezzo o se lo devo posizionare giú, nel primo

caso, se ho cliccato su un pezzo mio, quindi non dell'avversario, ne una casellavuota, salvo il pezzo, modi�co il colore della cella di sfondo ed in�ne assegnol'immagine vuota alla cella, per non mostrare il pezzo che devo muovere.Nel secondo caso, controllo che non abbia cliccato nella stessa casella, sefosse cosí annullerei la mossa, controllo se quella cella contiene un pezzomio, se fosse cosí do mossa illegale, e riprenderei sempre dalla scelta di doveposizionare il pezzo, controllo se la mossa fatta é consentita, come spiegatoper ogni singolo pezzo successivamente, controllo se il re mio é sotto scacco,se é cosí la mossa é illegale, come spiegato meglio successivamente. Se lamossa é quindi legale, do valore vuoto alla matrice delle coordinate iniziali,nelle coordinate �nali metto il pezzo salvato prima e salvo nella posizione�nale il pezzo nella matrice nel pezzo in movimento metto vuoto, cambiogiocatore. Quindi ottengo la scacchiera con la matrice modi�cata e anchecon i pezzi spostati giusti.

Page 49: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

6.3 Spostamenti 47

6.3 Spostamenti

Introduzione

La prima cosa da implementare sono gli spostamenti, quindi devo con-trollare ogni singola mossa e valutarne la correttezza o meno. Se la mossa écorretta posso farla, se é vietata non do il permesso.

Page 50: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

48 Programmare un gioco di scacchi da 0

6.3.1 Mossa del cavallo

Il cavallo si muove a L cioé 2 celle in un senso e due in un altro, come sivede dal disegno (il cavallo al centro é quello di partenza) Il cavallo é, forse,il pezzo piú semplice, perché puó saltare gli ostacoli, quindi basta controllareche nella cella di destinazione non ci siano oggetti, se ce ne sono devono essereavversari, poi basta controllare che la mossa sia giusta, cioé a L. Analizzandole mosse si puó notare che la di�erenza fra le coordinate del primo asse,in valore assoluto, sommata alla di�erenza delle coordinate dell'altra asse,sempre in valore assoluto, é sempre 3. Questo funziona per tutte le possibilimosse. Ma, peró, se muovo di tre caselle nella stessa direzione, avró sempreil modulo della di�erenza = 3, per cui dovró controllare che la di�erenza, inmodulo, delle coordinate, dello stesso asse, sia diversa da 3.

Figura 6.1: mossa del cavallo

Page 51: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

6.3 Spostamenti 49

6.3.2 Mossa della torre

La torre si muove in verticale o orizzontale, come si vede nel disegno.A di�erenza del cavallo non puó saltare pezzi, quindi dovró tener conto diquesta di�coltá in piú. Per risolvere il problema, controllo prima di tutto lacella di destinazione. Se c'é un pezzo mio la mossa non é valida, se il pez-zo é avversario, posso continuare a controllare. Controllo se lo spostamentoavviene nell'asse x o y. Controllando se la sottrazione delle due coordinate,in valore assoluto é 0. Se é zero per i valori dell'asse x allora si muove inverticale, se no in orizzontale. In entrambi i casi, controllo se nella succes-siva alla direzione scelta c'é un pezzo, se c'é un pezzo mi fermo, se non c'écontinuo, �nché non arrivo alla cella precedente alla destinazione. Perché ladestinazione l'ho giá controllata e so se posso andarci o no. Quindi se nontrovo pezzi lo muovo.

Figura 6.2: mossa della torre

Page 52: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

50 Programmare un gioco di scacchi da 0

6.3.3 Mossa dell'al�ere

L'al�ere si muove in obliquo. Cioé fa tanti passi nell'asse x quanti nellay. Da notare, che se parte nella casella nera, non la cambierá mai (infatti cen'é uno nero e uno bianco). Come potete vedere dall'immagine. Il controlloé simile alla torre, con la sola di�erenza che devo controllare che il valoreassoluto dello spostamento sia uguale sia nell'asse x che nell'asse y, comenella torre devo controllare che non ci siano ostacoli, devo sempre primacontrollare il pezzo �nale .

Figura 6.3: mossa dell'al�ere

Page 53: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

6.3 Spostamenti 51

6.3.4 Mossa della regina

La regina si muove sia in obliquo sia in verticale e in orizzontale. Os-servazioni: é come l'al�ere o come la torre. Essendo al�ere piú torre puócambiare colore. Come si vede dall'immagine. L'implementazione é statad'avvero semplice, é bastato richiamare il controllo della torre, se non anda-va bene, quello dell'al�ere e se non andava bene neppure quest'ultimo allorail movimento é errato.

Figura 6.4: mossa della regina

Page 54: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

52 Programmare un gioco di scacchi da 0

6.3.5 Mossa del re

Il re si puó muovere in tutte le direzioni, ma solo di una casella. Comesi vede nell'immagine Il modo piú semplice per implementarlo, e per fare laricerca piú semplice, quindi occupare meno tempo, non é quello di fare comela regina, cioé controllare le celle limitandosi alla prima, ma, forse, é quelladi fare il controllo manualmente, cioé fare gli otto casi uno alla volta, condegli IF.

Figura 6.5: mossa del re

Page 55: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

6.3 Spostamenti 53

6.3.6 Mossa del pedone

Il pedone si puó muovere solo in avanti, rispetto alla sua posizione e solodi una cella per volta, cioé se parte nella cella A rimana nella cella A per isuoi spostamenti. Se non é mai stato mosso si puó muovere di due, solo laprima volta. Se ha un pezzo davanti non puó mangiarlo, quindi deve starefermo. Puó mangiare solo un pezzo nella sua diagonale destra o sinistra,purché davanti a lui. Come mostra l'immagine. Se la mossa é del biancoallora la coordinata successiva deve essere piú 1, se é in b=2 cioé non é maistato mosso allora la coordinata successiva puó anche essere piú 2, se ha unpezzo avanti non si muove. Se ha un pezzo avversario a destra o a sinistra ein alto di uno allora puó mangiarlo. Inverso per il nero. Se arriva alla �ne(b= 1 o 8) allora si tramuta in regina.

Pedone diventa altro pezzo: quando il pedone arriva nell'ultima riga del-l'avversario si puó tramutare in regina, al�ere, torre o cavallo. Quindi quandoarriva li faccio la scelta con un form.

Figura 6.6: mossa del pedone

Page 56: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

54 Programmare un gioco di scacchi da 0

6.3.7 Arrocco

Avviene se il re non é mai stato mossa e sa la torre con cui vuole farlonon é mai stata mossa. Come si vede nell'immagine. Per implementarloho usato una semplice variabile numerica. Ho messo a 0 l'inizio, a 1 se eramossa una torre a 2 se era mossa l'altra e a 3 se era mosso il re. Quandomuovo il re metto la variabile a 3, se muovo la torre la metto a 1 o 2. Ognivolta che muovo il re controllo. Se lo muovo a destra di due allora controllola variabile, se é diversa da 1 o 2 allora metto vuoto nella cella del re, siagra�ca che matrice, come nella torre, e metto sia gra�ca sia matrice il re e latorre come in �gura. Poi setto la variabile a 3, cosí non rischio.

Figura 6.7: arrocco

Page 57: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

6.4 Scacco 55

6.4 Scacco

Introduzione

Sotto la parola scacco possiamo trovare due casi, il primo quando la scaccoé matto, cioé quando qualsiasi mossa sia faccia il re viene mangiato, in questocaso la partita é �nita, il secondo caso é il normale scacco, quando il re vieneminacciato di essere mangiato ma puó ancora salvarsi. Un' altra cosa daanalizzare é la mossa del re, infatti ad ogni mossa deve vedere se il re éstato messo sotto scacco per colpa sua, se é cosí la mossa non é valida, percontrollare questo basta solo che richiami la funzione che valuta se é scacco.

Page 58: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

56 Programmare un gioco di scacchi da 0

6.4.1 Sotto scacco

Controllo scacco re: Il re si trova sotto scacco quando ha un pezzoavversario che lo puó mangiare.

Quando controllo la validitá della mossa, se é vera, dopo aver salvato ilmovimento , controllo se il re é sotto scacco o se si é messo sotto scacco dasolo. Nel caso sia falso, cioé il re non é sotto scacco lascio cosí. Nel caso siavero allora do mossa falsa e rimetto tutto a posto.

Di�erenzio mossa del re con una di un altro pezzo. Finché non sonoall'ultimo pezzo controllo, se sono alla �ne della scacchiera mi fermo. Se neipezzi della mia direzione ho un pezzo mio o avversario che mi salva allorami fermo e do mossa consentita, se no, invece, controllo se é un pezzo chemi da problemi (vuoto va bene, ma non mi salva), se mi da problemi allorametto il controllo a false e non faccio fare la mossa. Se non variano la mossaé consentita (i 2 controlli), dato che possono solo diventare opposti e nontornare, dato che se ho un pezzo che mi salva o uno che mi mangia, subito,non serve sapere cosa ho dopo. La di�erenza fra la mossa del re e non delre sta nel fatto che nella prima controllo le coordinate �nali, mentre nellaseconda, quelle del re, perché se non faccio cosí non posso avere i controlliche ho, dato che sarei costretto a controllare solo una. Cosí per le 8 posizioni(alto, basso, destra, sinistra, obliquo alto.....)

Casi speciali scacco: Pedone:non posso muovere il re se ho un pedonenemico in posizione re piú uno a destra o sinistra allora é lo stesso sottoscacco. Re: non posso muovere il re se nelle coordinate di movimento ho ilre avversario. Cavallo: non posso muovere il re se ho il cavallo che mi dascacco in quella posizione

Di�coltá re, pedone e cavallo: Devo controllare la posizione del re, percontrollare che non vada fori dalla scacchiera. Quindi se sono in cella A1non devo controllare, ad esempio, per il cavallo, se é a sinistra o in basso,quindi devo fare molti controlli sulle posizioni, perché altrimenti avrei comeerrore Out of bonds, dato che controllerei celle inesistenti. E' un po comeil controllo precedente, solo che li avevo meno possibilitá per il controllo diuscita.

Soluzione cavallo e re: mentre per il pedone ho solo 3 possibilitá (destraoccupata, il resto libero, sinistra occupata, il resto libero, tutto libero) peril re e il cavallo le cose si fanno molto piú complicate. Per questo uso il try.Infatti, quando ricevo l'errore Out of bonds setto il controllo a vero, dato che

Page 59: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

6.4 Scacco 57

un posto fuori dalla scacchiera non da problemi. Questa tecnica mi permettedi risparmiare nel tempo di esecuzione (parzialmente e non sempre) sia nellalunghezza del codice. L'aspetto negativo é che non posso gestire il singoloerrore che mi interessa, ma gestisco tutti gli errori. Per questo, questa partedi codice é stata molto controllata per quanto riguarda gli errori

Page 60: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

58 Programmare un gioco di scacchi da 0

6.4.2 Scacco matto

A di�erenza di quello che si puó pensare la di�coltá non sta nella lunghez-za del codice, ma nel lavoro per ottenerlo. Difatti, logicamente, la soluzioneé semplice e banale, perché non devo fare altro che fare ogni possibile mossae vedere se in almeno un caso mi salvo. Se mi salvo allora non sará scaccomatto. Le prime di�coltá si sono presentate per il re. Infatti il normalecontrollo non va bene, quindi controllo se ho é in quasi scacco matto (cioé sipuó salvare solo muovendosi lui) controllo ogni possibile mossa (alto, basso,destra...). In ognuna di queste vedo se posso muoverlo lí (ho dato i valoriregolari io, ma puó uscire dalla scacchiera e puó esserci un mio pezzo) in�necontrollo se c'é ancora scacco. Altra di�coltá é stato il pedone, solo nellaparte �nale. Infatti ho messo la scelta se si muove nell'ultima casella. Baste-rá quindi copiare il codice rimuovendo quella parte. Peró devo conteggiareche virtualmente i pezzi li muovo, ma usando le stesse procedure é come seli muovessi veramente, quindi, ad esempio, l'arrocco mi si annulla al primoscacco. Quindi, anche in questo caso, devo solamente copiare il movimentoeliminando quella parte. Riassumendo: controllo se il re si salva muovendo-si, se non é cosí allora faccio ogni possibile mossa, copiando la scacchiera emodi�candola e poi la ripristino, se la mossa é legale allora controllo se sonosotto scacco se é illegale non lo faccio. Preferisco fare i controlli perché farei 4 cicli analizzando sempre mossa e scacco occuperebbe un secondo, temponotevole in un gioco uomo contro uomo. Cosí facendo il tempo occupato éminimo, il giocatore non si accorge dell'elaborazione, notando il gioco sempre�uido senza pause.

Page 61: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

6.5 Patta 59

6.5 Patta

Introduzione

Esistono molti tipi di patta nel gioco degli scacchi. La patta per mancanzadi mosse, la patta per posizione morta, la patta per accordo, la patta perripetizione di posizione e la patta per la regola delle 50 mosse. La patta peraccordo in motli tornei non vien piú contata, perché svuotava di bellezza ilgioco, quella per ripetizione di posizione é molto facile da fare, basta salvareogni posizione e controllare ogni volta se é uguale alla precedente, se lo éincremento il contatore di quella posizione se no ne creo una nuova, quandoarrivo a tre é patta, ma ho deciso di non implementarla dato che occupatroppo spazio in memoria (ricordo il 1080 possibili partite) e troppo tempoinutile per il controllo.

Page 62: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

60 Programmare un gioco di scacchi da 0

6.5.1 Patta per mosse

Per il controllo della patta il ragionamento é simile allo scacco matto,controllo ogni possibile mossa per vedere se ne ho di legali, se le ho allorametto a true una variabile che rimmarrá tale.

6.5.2 Patta per posizione morta

La patta per posizione morta é semplice, conto i pezzi, se non ne hoabbastanza allora é patta.

6.5.3 Patta per la regola delle 50 mosse

La patta per la regola delle 50 mosse si compie quando per 50 mosse noné stato mosse un pedone o non é stata fatta alcuna cattura, basterá quindicontrollare le coordinate �nali, se cé un pezzo avversario allora se la mossaé legale riporto a zero il contatore, lo stesso per il pedone, se muovo lui e lamossa é legale riporto a zero il contatore, se no lo incremento, arrivato a 50mosse é patta.

Page 63: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

6.6 Salvataggio e caricamento di una partita 61

6.6 Salvataggio e caricamento di una partita

Introduzione

Il poter riprendere una partita in un secondo momento puó essere motloutile, ecco perché ho implementato la funzione di salvataggio e caricamentodi una partita.

6.6.1 Salvataggio

Per il salvataggio della partita ho utilizzato un �le di testo, ho inserito ivalori dell'arrocco, per sapere se posso farlo oppure no, il turno e la dispo-sizione nella scacchiera, salvando per ogni riga un pezzo con il suo nome evuoto nel caso non ci siano pezzi.

6.6.2 Caricamento

Il caricamento é stato fatto aprendo il �le di testo, e leggendo i valori,infatti il valore dell'arrocco e della mossa sono identi�cati da delle lettereunivoque, allora li prendo e li salvo nella loro variabile. Una volta separatiquesti valori non consoni dal �le sono sicuro che tutto il resto sia della scac-chiera, quindi con un ciclo fatto a mano salvo nella scachciera tutti i pezzi.come é abbastanza intuibile ad ogni nuova riga metto un valore nella scac-chiera incrementando la riga, poi alla �ne delle righe incremento la colonna,�nché non arrivo alla �ne del �le. Dopodiché devo sistemare le immagini deipezzi nella scacchiera, in cui, per ogni singola posizione, controllo che pezzoc'é, e poi, lo visualizzo.

Page 64: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

62 Programmare un gioco di scacchi da 0

6.7 Gioco online

Introduzione

Nell'era del web 2.0, in cui i social network la fanno da padrona é im-possibile non inserire un elemento di comunicazione fra i vari utenti. Eccoperché ho deciso di implementare una tecnologia capace di far interagire gliutenti nel gioco degli scacchi e comunicare con una chat.

Per implementare il gioco online ho deciso di utilizzare la tecnica socket,cioé di usare un clientsocket e un serversocket per ogni giocatore. Questascelta é stata quasi obbligata, in quanto le altre alternative risultavano dif-�cilmente e�caci. Infatti avevo pensato di utilizzare l'ftp, cioé attraversouno scambio di �le e il supporto di hosting esterno i due giocatori potevanoscambiarsi le informazioni del gioco. Purtroppo per caricare un �le solo testo,anche di esigue dimensioni, ci metteva parecchio tempo, circa 30 secondi, sen-za contare che avrei dovuto fare un loop per scaricare il �le che l'avversario mimandava. Ho anche implementato questa soluzione, il tempo per una mossaera di circa 2 minuti, oltre al fatto che potevano generarsi tantissimi errori,del tipo che se stavo caricando il �le e l'altro lo stava scaricando insieme ame, ottenevo un �le non corretto, con una parte mancante. Il secondo me-todo si basava sull'uso dei database, ma nessun hosting permetteva l'accessoai database da esterni. Infatti per poter accedere ad un database bisogna oavere il programma nello spazio che puó accedere al database oppure dareil permesso al programma di accesso. bastava modi�care un paramentro nel�le di con�gurazione, ma nessun hoating lo lascia fare. Pensarlo di fare inlocale é assurdo, data la poca banda a disposizione e il danno che causereialla sicurezza della mia rete. Quindi l'ultimo metodo rimasto era l'utilizzodel socket.

6.7.1 Socket, spiegazione

Prima di spiegarvi come ho implementato a livello logico il socket vogliospiegare cos'é il socket. Il socket é un'applicazione client/server, cioé un'ap-plicazione distribuita, con un'applicazione server che o�re dei servizi e unaclient che gestisce l'interfaccia con l'utente e richiede questi servizi. Il clientdeve conoscere l'indirizzo IP del server per richiedere il suo utilizzo.

Per ovviare a questo inconveniente ho deciso di appoggiarmi a dei �le ditesto e al php.

Page 65: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

6.7 Gioco online 63

6.7.2 Funzionamento del socket nel programma

Per connettere due pc attraverso la tecnica del socket ho deciso di avviarein ogni pc un server e un client. Dato che il client non puó ricevere dati eil server non puó inviarli. Utilizzare un solo server sarebbe stato, quindi,impossibile.

6.7.3 Connessione del server socket

Come detto in precedenza, ogni macchina avvia un proprio serversocket,mediante la scelta del protocollo (TCP), del numero massimo di client edella porta usata. Primo passo del socket é la creazione del server, grazieai paramentri scelti precedentemente e descritti sopra. Una volta creato ilserver si mette in ascolto. Appena sente che un client fa la sua richiestal'accetta (in questo momento viene creata la connessione fra client e server).Quando il client, con cui ha stabilito la connessione, invia dei dati il server lilegge e poi li elabora. Il client puó decidere quando vuole disconenttersi dalserver. Il server puó decidere di chiudere la connessione quando vuole.

6.7.4 Connessione del client socket

Anche nel caso del client, ogni macchina avvia il proprio client, comenel server, bisogna impostare il tipo di connessione (TCP), l'indirizzo IP delserver e la porta utilizzata dal server. Una volta creata questa connessioneil client puó inviare i suoi dati. Puó decidere quando vuole chiudere la con-nessione. Ovviamente, nel caso in cui non esista l'host, dopo 10 secondi diricerca restituisce un errore, come nel caso ci siano errori di invio e altro.

6.7.5 Funzionamento

Ho giá ben spiegato come creare la connessione, ora spiegheró cosa succedefra la connessione e la disconnessione. Una volta avviato il server il client siconnette ad esso, ed invia i suoi dati. Alla connessione i giocatori scelgonose essere il bianco o il nero. Il tutto viene gestito direttamente dal gioco.Infatti l'utente che ha scelto il colore bianco, appena l'avversario si connette(ovviamente lui é giá conensso), puó muovere. Se la mossa é legale allorapasserá all'avversario la mossa, mandando una stringa che é composta comesegue:

Page 66: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

64 Programmare un gioco di scacchi da 0

chiave che identi�ca la mossa coordinate partenza (coppia x e y) coordinatearrivo (coppia x e y) pezzomosso

il server, é sempre in ascolto, legge questa stringa, identi�ca che é una mossae sistema la scacchiera, nello stesso modo in cui avviene il caricamento dellapartita, descritto sopra. Davanti ai dati importanti c'é una chiave identi�-cativa, questo perché ogni giocatore puó anche chattare con l'avversario equindi bisogna di�erenziare le due cose. Inoltre, siccome ogni controllo vienefatto da chi e�ettua la mossa, l'avversario non controllerá mai se ha subitoscacco matto o la partita é in patta, per cui gli viene inviata una stringa, nellemodalitá prima descritte, che annuncia la �ne della partita. Un caso parti-colare é l'arrocco, in quanto i pezzi mossi sono due, quindi al controllo dellastringa, se ho uno dei quattro casi in cui c'é stato arrocco, devo aggiornaregra�camente e anche nella matrice la posizione della torre (dato che quelladel re é giá stata sistemata). Una volta completata la mossa, e quindi inviatii dati, metto una variabile in modo che il giocatore non possa piú cliccare,e quindi cambiare lo stato della scacchiera, �nché al server non arriva unamossa e�ettuata dall'avversario.

6.7.6 Implementazione

Tutti le informazioni, sopra descritte, per connettersi all'avversario sonotante per un utente che non conosce nulla. Ecco perché ho fatto una sempliceinterfaccia gra�ca, che non fa altro che richiamare le funzioni del client e delsocket, con la possibilitá di connettere il server e il client inserendo sempli-cemente la porta e l'ip dell'host. La porta di default é la 32340, solitamentenon serve modi�carla. Quindi all'utente non resta che inserire l'indirizzo del-l'host. Si ricorda che nel caso di un gioco in una rete lan basta l'indirizzodell'host vero e proprio, mentre nel caso si parli di un gioco attraverso inter-net, bisogna aprire la porta del router (se no non lascia passare i pacchetti)e inserire l'indirizzo ip del router.

6.7.7 Scelta automatica dell'avversario

Come detto in precedenza per comunicare i due computer devono co-noscere l'ip dell'avversario. Questa soluzione peró non si presentava comeottimale, in quanto i due giocatori avrebbero dovuto conoscersi in preceden-za o comunque mettersi in contatto. Quindi ho deciso di appoggiarmi al

Page 67: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

6.7 Gioco online 65

php e ad un hosting esterno. Il funzionamento � abbastanza semplice, allarichiesta di connessione l'host accede a una pagina php che alla sua visitaaggiunge l'ip ad un �le di testo. Poi si mette in ascolto sul server. Appenaun altro host si connette accede a questo �le di testo, se � vuoto fa come ilprecedente se no si connette all'avversario inviando il suo ip. A questo puntoentrambi gli host eliminano il proprio ip dal �le di testo.

aggiunta di un ip con il php

(Il codice é in pseudocodi�ca)Ecco il codice utilizzato:

<?phpfp = fopen(�leip.txt, a); //apertura del �le per aggiunta

mioip = getenv(REMOTEADDR); //prendo l'ipfwrite(fp, mioip.n); //lo scrivo nel �le

fclose(fp);//chiuo il �leecho mioip;

?>Ecco cosa fanno tutte le istruzioni:

�le = fopen(�le.txt,a);

Apro il �le dandogli come nome �le e assegnandogli il �le �le.txt la a staper append cioé aggiungi in coda.

Al posto della a potrei mettere:

• r read, cioé leggi

• w write, cioé scrivi (sovrascrive il �le)

• x, riporta all'inizio il puntatore

oltre a questi posso mettere:

• r+, lettura e scrittura

Page 68: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

66 Programmare un gioco di scacchi da 0

• w+, lettura e scrittura (sovrascrive il �le)

• x+, lettura e scrittura

• a+, aggiunge in cosa e lettura

al posto di �le.txt devo mettere il nome del mio �le ed eventualmente unpercorso.

ip = getenv(REMOTEADDR);

con questa istruzione assegno alla variabile ip lâip del navigatore, che loottengo con getenv(REMOTEADDR).

fwrite(�le, ip.n);

con questo comando scrivo nel �le �le, che nel mio caso sará �le.txt ip,che, se vi ricordate é una variabile a cui ho asseganto lâip del visitatore e nche signi�ca a capo. Il . serve per concatenare le due stringhe.

fclose(�le);//chiuo il �le

con questa istruzione chiudo il �le �le, necessaria per far terminare tuttocorrettamente, anche se la maggioranza delle volte omettendola non cambianulla, ma é sempre meglio metterla.

cancellazione di un ip con il php

Per cancellare un ip prendo il �le, salvo tutto il suo contenuto in un arraye scrivo nel �le tutti gli ip diversi dal mio. Ecco il codice:

Page 69: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

6.7 Gioco online 67

<?phparray = array();//creo un array dove salvo gli ip

fp = fopen(�leip.txt, r+);//apro il �le per lettura e scritturawhile (!feof(fp)) //ciclo �nch� non legge tutto il �le

bu�er = fgets(fp, 4096);//legge la rigaarray[] = bu�er;//aggiungo la riga all'array

fclose(fp);//chiudo il �le�le = �leip.txt;

unlink(�le);//cancello il �leif (!�leexists(�le)) //ricreo il �le

�le = fopen(�le, w);fputs(�le, );fclose(�le);

echo �le creato <br>;fp = fopen(�leip.txt, w+);//lo riapro per aggiungerci i dati

conta = count(array);//leggo dimensioni arraymioip = getenv(REMOTEADDR);//prendo l'ipfor(i=0;i<conta;i++) //scorro tutto l'array

if (array[i]==mioip.n) //se e' il mio ip allora non lo scrivoecho (E' stato trovato il tuo ip ed é stato cancellato);

else//se non � il mio ip allora lo posso riscrivere

fputs(fp, array[i]);//lo scrivo nel �lefclose(fp);//chiudo il �le

?>

Page 70: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

68 Programmare un gioco di scacchi da 0

6.8 Installazione

Il programma si presenta facilmente installabile. Basterá infatti fare unsemplice doppio click nel �le, inserire la password dell'amministratore (sem-pre necessaria per le installazioni) e automaticamente verrá installato il pro-gramma. Basterá poi andare in Applicazioni�>Giochi�> scacchi per avviareil programma. Dato ch il programma usa delle immagini in modo dinamico,per la rappresentazione dei pezzi sará necessario copiare una cartella nellapropria home. Nel caso l'utente se lo dimentichi o cancelli quella cartella,una semplice interfaccia gra�ca gli dirá di copiare quella cartella, oppuremediante un semplice click potrá scaricare direttamente da internet i �le, eimemdiatamente si avvierá il gioco.

Sará possibile installare il programma in tutti i sistemi operativi linux-like, mediante il pacchetto sorgenti, e nei piú comuni sistemi operativi gnu/linux,quali: fedora, ubuntu, mandriva, slackware, debian, opensuse, tramite il lo-ro semplice pacchetto d'installazione prede�nito (quindi facendo un semplicedoppio click per l'installazione). Il programma sará disponibile sia per la ver-sione a 32bit sia per quella a 64 bit, cioé ottimizzata per i multiprocessori, inmodo da utilizzare tutti i processori a disposizione del computer. Comunque,la versione a 32bit funziona anche in sistemi operativi a 64bit.

Page 71: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

6.9 Realizzazzione della scacchiera 69

6.9 Realizzazzione della scacchiera

Ho giá descritto il ragionamento logico per implementare tutte le rego-le del gioco, ma devo ancora descrivere come ho realizzato la scacchiera ela visualizzazzione dei pezzi. Per realizzare la scacchiera ho utilizzato dellepicturebox, cioé della caselle di immagini. Ho disposto le 64 caselle a colorialterni, cosí come é fatta una scacchiera e assegnato ad ognuna di esse il loronome. Al caricamento del gioco ad ogni casella viene aggiunta un'immagine,mediante l'evento picture.load (ecco perché é necessario avere le immaginenella propria home, se no non sa da dove prenderle), caricando ogni singolaimmagine in ogni casella, dato unn'immagine vuota alle caselle vuote. Ov-viamente le immagini sono senza sfondo, cioé con lo stesso trasparente. Cos'ifacendo l'utente potrá anche personalizzare le immagini dei pezzi come vorrá.La necessitá di inserire l'immagine vuota é dovuta al fatto che quando spostoun pezzo, nella cella di destinazione vado a sostituire l'immagine con quelladel pezzo spostato, mentre, nella cella di partenza devo levare l'immagine, el'unico modo é sostituirla con una vuota.

Page 72: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

70 Programmare un gioco di scacchi da 0

6.10 Suoni

Per rendere il gioco piú avvincente e realistico ho aggiunto dei suoni,quando un giocatore compie una mossa legale e quando arriva un messaggionella chat. Per implementare questa soluzione ho usato il componente Music.Potete vedere il pseudocodice qui sotto:

Music.load(User.home percorso sound4.mp3)Music.play

Molto semplicemente carico con l'evento load la musica, un semplice suo-no che simula il movimento del pezzo, mentre con l'evnto play riproduco ilsuono.

Page 73: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

6.11 Statistiche con Database 71

6.11 Statistiche con Database

Introduzione

Utilizzare un �le di testo per salvare una grande massa di dati, qualile statistiche risulta controproducente e poco gestibile, per cui ho deciso diutilizzare un database.

6.11.1 Salvataggio dei dati

Per salvare i dati gestisco tutto da codice, vediamo come:

TRY hConn.ClosehConn = NEW Connection

sName = scacchiWITH hConn.Type = mysql

.Host = localhost.Login = textbox6.Text

.Password = textbox7.text.Name = �END WITHhConn.Open

IF NOT hConn.Databases.Exist(sName) THENhConn.Databases.Add(sName)

ENDIFhConn.Close

hConn.Name = sNamehConn.Open

Con questo codice creo il database, se non presente. Ecco come funziona:prima cosa tento di stabilire una connessione con il database, se mi riesceallora esiste giá un database e salto al passaggi osucessivo, se non riesce creoil database e poi vado alla procedura per creare le tabelle, come mostratoqui sotto:

Page 74: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

72 Programmare un gioco di scacchi da 0

hTable = hConn.Tables.Add(dati)hTable.Fields.Add(id, db.Serial) 'identi�cativo univoco, autoincrementato

ogni voltahTable.Fields.Add(colore, db.String)

hTable.Fields.Add(nomeutente, gb.String)hTable.Fields.Add(commenti, gb.String)

hTable.PrimaryKey = [id]hTable.Update

Con il codice sopra mostrato creo la tabella, dichiarandono i campi, solose non giá presente. Per inserire i dati all'interno del database utilizzo lafunzione:

sql = insert into scacchi.dati (colore,nomeutente)values( ' colore ','nomeutente ') MyRS = hConn.Exec(sql)

Cioé dichiaro il codice sql da eseguire, dando un insert into, cioé uncomando di inserimento, successivamente lo vado ad eseguire grazie all'Exec.

6.11.2 Recupero dei dati

Per recuperare i dati utilizzo sempre un'istruzione sql, come segue:sql = select * from scacchi.dati order by id MyRS = hConn.Exec(sql) 'prendo

tutti i dati

Questo codice é un select, cioé estrae dalla tabella dati tutto il contenuto.

6.11.3 Statistiche

Ho deciso di visualizzare questi dati in forma gra�ca, piú facilmente con-sultabile. Per fare questo ho utilizzato la funzione Draw, disegnando, inbase ai dati prima raccolti e selezionati ed elaborati, dei rettangoli che rap-presentano le percentuali di vittoria e scon�tta di quel giocatore con uncolore.

Page 75: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

Capitolo 7

Conclusione

Posso dire che gli obbiettivi (l'analisi tecnica e la realizzazzione del giocodegli scacchi) sono stati raggiunti, con buoni risultati. Il programma, almomento, non riscontra bug conosciuti per quanto riguarda il gioco sullostesso computer, il gioco online e tutte le altre feature. Per quanto riguardail gioco contro il computer il programma presenta ancora alcuni bug, perla maggior parte sono dovuti al sistema che non riesce a gestire la mole dilavoro, si puó notare questo avviando il programma da terminale, e vedendola restituzione di stringhe non generate dallo stesso.

Page 76: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

74 Conclusione

Page 77: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

Appendice A

Appendice

A.1 Comandi

In questa appendice ho inserito alcuni comandi interessanti, per le loroproprietá o per l'uso che ne é stato fatto.

Page 78: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

76 Appendice

Com

andoCosa

fa?Utilizzo

picturebox.picture=picture.load(im

magine)

nellapicturebox

verrámostrata

un'immagine

perrealizzare

lascacchiera

nome�le=

OPENnom

e�le.estensioneFORCREATE

apreil�le

perla

scritturaper

ilsalvataggio

dellapartita

nome�le.save(nom

e�le.estensione,stringa)

salvail�le

perilsalvataggio

dellapartita

nomeconnessione

=NEW

HttpC

lientASnom

econnessionecrea

unanuova

connessionehttp

perilgioco

onlinecontro

unavversario

nomeconnessione.U

RL=

urlsetto

l'urldove

operoper

trovarel'avversario

inmaniera

automatica

nomeconnessione.G

etscarico

idati

dellaconnessione

pertrovare

l'avversarioin

maniera

automatica

IFLof(h)

THENREAD

h,bu�er,

Lof(h)

leggeemette

inun

bu�eridati

pertrovare

l'avversarioin

maniera

automatica

Server.Type

=Net.Internet

settoiltipo

diconnessione

perilgioco

ininternet

Server.Port

=porta

settola

portadi

connessioneper

ilgioco

ininternet

PUBLIC

SUBServerE

rror()in

casodi

erroreper

ilgioco

ininternet

PUBLIC

SUBServerC

onnection(sHost

ASString)

leggela

richiestadi

connessioneserver

socketper

ilgioco

ininternet

Client.A

dd(Server.Accept())

accettala

connessionedel

serverserver

socketper

ilgioco

ininternet

PUBLIC

SUBSocketR

ead()legge

idati

inarrivo

dalclient

serversocket

perilgioco

ininternet,

letturaREAD

LAST

,sB

uf,Lof(L

AST

)legge

idati

inarrivo

mettendoli

insB

ufper

ilgioco

ininternet,

letturaPUBLIC

SUBSocketC

losed()valuta

lachiusura

dellaconnessione

perilgioco

ininternet,

chiusuraClient.R

emove(C

lient.Find(L

AST

))elim

inailclient

dallalista

perilgioco

ininternet,

chiusuraMySock.H

ost=

ipsetta

l'ipdell'host

serverper

connettersinel

giocoin

internetMySock.P

ort=

portasetta

laporta

dell'hostserver

perconnettersi

nelgioco

ininternet

MySock.C

onnect()siconnette

all'hostserver

perconnettersi

nelgioco

ininternet

WRITEMySock,

dati,Len(dati)

inviaidati

settandola

lunghezzaper

inviareidati

nelgioco

ininternet

CLOSE

MySock

chiudela

connessionecon

ilserver

perchiudere

laconnessione

nelgioco

ininternet

PRIVATEhC

onnASConnection

dichiarala

connessioneper

laconnessione

aldatabase

hConn.T

ype=

mysql

dichiarailtipo

diconnessione

aldatabase

perla

connessioneal

databasehC

onn.Host

=localhost

dichiaral'host

diconnessione

aldatabase

perla

connessioneal

databasehC

onn.Login

=nom

eutentedichiara

ilnom

eutente

perconnessione

aldatabase

perla

connessioneal

databasehC

onn.Passw

ord=

pswdichiara

lapassw

ordper

connessioneal

databaseper

laconnessione

aldatabase

hConn.O

penapre

laconnessione

aldatabase

perla

connessioneal

databasehC

onn.Databases.A

dd(nome)

aggiungeun

databaseper

laconnessione

aldatabase

hConn.T

ables.Add(nom

etabella)crea

unanuova

tabellanel

databaseper

laconnessione

aldatabase

hTable.F

ields.Add(id,

db.Serial)crea

unnuovo

campo

nellatabella

perla

connessioneal

databasehT

able.Prim

aryKey

=[nom

echiave]de�nisce

lachiave

primaria

perla

connessioneal

databasehT

able.Update

aggiornaildatabase

conla

tabelladichiarata

perla

connessioneal

databaseMyR

S=

hConn.E

xec(sql)esegue

ilcodice

sqlper

laconnessione

aldatabase

MyR

S!nomecam

povisualizza

ilnom

edel

campo

dellatabella

pervisualizzare

idati

MyR

S.MoveN

extva

allatupla

successivaper

visualizzareidati

draw.Begin(D

rawingA

rea)seleziona

dovedisegnare

perildisegno

dellestatistiche

Draw

.rect(x1,y1,x2,y2)disegna

unrettangolo

coniquattro

verticiper

ildisegno

dellestatistiche

Page 79: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

A.2 Allegati 77

A.2 Allegati

In allegato a questa tesina troverete un dvd. Questo dvd contiene il siste-ma operativo Ubuntu modi�cato, con l'aggiunta di alcuni programmi, qualiGambas, il linguaggio di programmazione che ho usato per programmare ilgioco, TexMaker, l'editor utilizzato per scrivere la tesina in LaTex, alcuniprogrammi per il video editing, utilizzati per creare i video di presentazione,come cinelerra e kdenlive, alcuni programmi per la gra�ca 2d (Gimp) e 3d(Blender), alcuni programmi utili per la gestione di internet e dei social net-work ed, ovviamente, il gioco giá installato, la tesina e la presentazione, oltrea molti �le utili per la spiegazione approfondita della stessa, quali i sorgentiiniziali. Oltre a tutti questi programmi ce ne sono molti altri, oltre a deiplug-in per �refox, per gestirlo al meglio.

Questo dvd é stato realizzato per permettere a tutti di provare il program-ma senza dover installare nulla. Basterá, infatti, inserire il dvd nel propriolettore ed avviare il computer (ovviamente il bios deve essere settato cor-rettamente, quindi deve prevedere la lettura da cd prima di altri dispositivibootabili). All'inizio ci sará il tasto invio da premere per far partire il boot,a questo punto basterá scegliere se provarlo (live) o installarlo (install), sce-gliendo di provarlo si avvierá normalmente, senza modi�care in alcun modo ilvostro computer, i dati per l'accesso sono: nome utente: ealmuno, password:ealmuno. Scegliendo di installarlo potrete poi salvare i vostri �le e modi�carloa vostro piacimento, ovviamente occuperá spazio nel vostro computer.

Page 80: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

78 Appendice

A.3 Approfondimenti odierni: la guerra fredda

Usa, arrestati dieci russi: Sono spie.

L'Fbi: agivano sotto copertura usando nomi e identitá fasulleIn America coperti da Mosca

NEW YORK

Le relazioni tra Stati Uniti e Russia riprecipitano in pienoclima di Guerra Fredda: l'Fbi ha arrestato dieci persone con l'ac-cusa di essere spie russe mentre un'undicesima, identi�cata comeChristopher Metsos, é ancora ricercata. Otto di loro sono sta-te fermate domenica, con l'accusa di aver condotto azioni sottocopertura per conto della Federazione Russa, di aver fornito aMosca informazioni sensibili e di aver riciclato denaro sporco.

Gli altri due sono sospettati di far parte dello stesso program-ma, si legge in un comunicato di�uso dai federali. I presuntiagenti erano stati addestrati dai servizi di intelligence di Moscanell'uso di codici e cifre e in varie lingue straniere prima di es-sere spediti negli Stati Uniti nel corso dell'ultimo decennio. Orarischiano �no a cinque anni di carcere per la loro attivitá di 007-sono accusati di cospirazione per aver agito come agenti illegalidella Federazione Russa all'interno degli Stati Uniti e venti perle operazioni �nanziarie proibite. L'obiettivo della loro missione,spiega il Ministero della Giustizia, era la ricerca e lo sviluppo dicontatti in circoli politici americani.

L'Fbi é ancora sulle tracce di un undicesimo uomo, identi�catocome Christopher Metsos. Le manette sono scattate quasi con-temporaneamente in tutti gli Stati Uniti: da Montclair, in NewJersey, Yonkers, nello stato di New York ad Arlington, in Virgi-nia. Altri due agenti, conosciuti con i nomi di Donald Heath�elde Tracey Lee Ann Foley sono stati arrestati a Boston.

Dei fermati solo uno, Mikhail Semenko, ha un nome russo.Tutti gli altri hanno nomi inglesi, ispanici, italo-americani. Al-cuni nomi, secondo fonti del Dipartimento della Giustizia citatedalla Cnn, appartenevano ad americani morti, ed erano stati as-sunti all'inizio degli Anni Novanta per inserirsi nella societá astelle e strisce. L'operazione é il frutto di un'indagine durataanni, che ha coinvolto una rete di poliziotti disseminata su tut-

Page 81: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

A.3 Approfondimenti odierni: la guerra fredda 79

to il territorio americano, scattata dopo l'intercettazione di unmessaggio partito dal quartier generale dell'intelligence moscovi-ta. Siete stati inviati negli Usa per una missione a lungo termine.La vostra istruzione, i vostri conti bancari, auto e casa, hannoun solo obiettivo: riempire appieno la vostra missione, ossia cer-care e sviluppare legami nei circoli politici americani ed inviarcimessaggi segreti.

Questo é un articolo tratto dal quotidiano presente anche online, lastam-pa, 1 in data 29 giugno 2010 (e richiamato da numerose testate nazionali etelegiornali), la guerra fredda si puó de�nire �nita il 9 novembre 1989 con ilcrollo del suo simbolo, il muro di Berlino, eretto il 13 agosto 1961. Si puóben notare, come a distanza di piú di trent'anni i rapporti siano ancora tesi.

Un'interpretazione alle possibili domande che potremo porci ce le da ilcorriere 2

L'inchiesta ha sollevato non pochi interrogativi. La primariguarda il danno fatto dalla rete: quali informazioni hanno car-pito? Il secondo quesito concerne i tempi del blitz dell'Fbi: seuno degli agenti, il principale, é �nito sotto inchiesta �n dal 2004perché la polizia federale ha deciso di muoversi proprio adesso? Enon potevano beccarne solo un paio visto che le coppie agivano inmodo indipendente e lasciare la briglia sciolta agli altri? Alcuniesperti sostengono che la retata é un chiaro messaggio politicolanciato dagli Stati Uniti ai russi: smettetela con queste opera-zioni. Un segnale che arriva a pochi giorni dal caloroso incontrotra Obama e il presidente Medvedev. Un colloquio seguito da unospuntino a base di hamburger e patatine in un locale di Arling-ton. A pochi chilometri dal ristorante l'Fbi ha arrestato propriodue delle spie.

L'accusa lanciata dagli esperti, che il corriere cita, é quella di voler dareun chiaro e forte messaggio politico alla Russia.

1http://www.lastampa.it/redazione/cmsSezioni/esteri/201006articoli/56266girata.asp2http://www.corriere.it/esteri/10giugno28/usa − spie − russe − arrestate3ccc0902 −

82f6− 11df − 9406− 00144f02aabe.shtml?fr = boxprimopiano

Page 82: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?

80 Appendice

A.4 Licenza

Questa opera é rilasciata sotto licenza creative commons

Attribuzione-Non commerciale-Non opere derivate 2.5 Italia

Tu sei libero:

• di riprodurre, distribuire, comunicare al pubblico, esporre in pubblico, rappresen-

tare, eseguire e recitare quest'opera

Alle seguenti condizioni:

• Attribuzione - Devi attribuire la paternitá dell'opera nei modi indicati dall'autore o

da chi ti ha dato l'opera in licenza e in modo tale da non suggerire che essi avallino

te o il modo in cui tu usi l'opera.

• Non commerciale - Non puoi usare quest'opera per �ni commerciali.

• Non opere derivate - Non puoi alterare o trasformare quest'opera, ne' usarla per

crearne un'altra.

Prendendo atto che:

• Rinuncia - E' possibile rinunciare a qualunque delle condizioni sopra descritte se

ottieni l'autorizzazione dal detentore dei diritti.

• Pubblico Dominio - Nel caso in cui l'opera o qualunque delle sue componenti siano

nel pubblico dominio secondo la legge vigente, tale condizione non é in alcun modo

modi�cata dalla licenza.

• Altri Diritti - La licenza non ha e�etto in nessun modo sui seguenti diritti:

� Le eccezioni, libere utilizzazioni e le altre utilizzazioni consentite dalla legge

sul diritto d'autore;

� I diritti morali dell'autore;

� Diritti che altre persone possono avere sia sull'opera stessa che su come l'opera

viene utilizzata, come il diritto all'immagine o alla tutela dei dati personali.

• Nota - Ogni volta che usi o distribuisci quest'opera, devi farlo secondo i termini di

questa licenza, che va comunicata con chiarezza.

sito web di riferimento: http://ealmuno.altervista.org

e-mail: [email protected]

Page 83: Scacchi · 12 Scacchi, matematica, e calcolo 2.1 Scacchi, matematica, calcolo ed economia Scacchi, economia, matematica e calcolo. Cosa c'entrano fra di loro?