-
Notifications
You must be signed in to change notification settings - Fork 0
/
Tris.py
157 lines (122 loc) · 7.14 KB
/
Tris.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
##coding=UTF8
import random
def controllovincita(tipoGriglia,lista):
contatore1=0
contatore2=1
somma=0
#controllo per righe
while contatore1<=tipoGriglia*contatore2:
if somma==3:
return "Croce ha vinto!"
if somma==30:
return "Cerchio ha vinto!"
if contatore1==tipoGriglia*contatore2+1: #se è finita la riga
somma=0 #resetta la variabile somma
contatore2=contatore2+1 #e passa alla riga successiva
if tipoGriglia*tipoGriglia<=tipoGriglia*contatore2: #se la griglia è terminata
break #passa al controllo successivo
somma=somma+lista[contatore1]
contatore1=contatore1+1 #incremento contatore1 per controllare la casella successiva
#controllo per colonne
contatore1=0 #resetto i contatori
contatore2=1 #per poterli riutilizzare
while contatore1<=tipoGriglia*tipoGriglia:
if somma==3:
return "Croce ha vinto!"
if somma==30:
return "Cerchio ha vinto!"
if contatore1==tipoGriglia*tipoGriglia: #se è finita la colonna
print somma #usato per debug, non necessario una volta risolti i problemi
somma=0 #resetta la variabile somma
contatore1=contatore2
contatore2=contatore2+1 #e passa alla colonna successiva
if tipoGriglia*tipoGriglia<=contatore2*contatore2: #se la griglia è terminata
return "Nessun vincitore :( " #nessuno ha vinto
somma=somma+lista[contatore1]
contatore1=contatore1+tipoGriglia #incremento contatore1 per controllare la casella successiva
print "uscito" #usato per debug, non necessario una volta risolti i problemi
#controllo prima diagonale (angolo in alto sx-->in basso dx)
# contatore1=0 #resetto i contatori
# contatore2=0 #per poterli riutilizzare
#
# while contatore1<=tipoGriglia*contatore2:
# if somma==3:
# return "Croce ha vinto!"
# if somma==30:
# return "Cerchio ha vinto!"
# if
def mossarandom(tipoGriglia,giocatore,lista): #fa fare mosse casuali al giocatore ma se la griglia è piena non termina mai
if giocatore=='x':
valore=1
if giocatore=='cerchio':
valore=10
while(1):
indicecasuale=random.randint(0,tipoGriglia*tipoGriglia -1)
if lista[indicecasuale]!=1 and lista[indicecasuale]!=10: #una volta trovata una casella vuota la riempie ed esce
lista[indicecasuale]=valore
break
def ia(tipoGriglia,lista): #fa fare mosse "intelligenti" alla X ma se la griglia è piena non termina mai (perchè richiama mossarandom())
contatore1=0
contatore2=1
somma=0
contatoreduplicato1=0
contatoreduplicato2=1
#controllo per righe
while contatore1<=tipoGriglia*contatore2:
if somma==20:
contatoreduplicato1=contatore1
contatoreduplicato2=contatore2
while (contatoreduplicato1<tipoGriglia*contatoreduplicato2):
if lista[contatoreduplicato1]!=10:
lista[contatoreduplicato1]=1
contatoreduplicato1=contatoreduplicato1+1
contatoreduplicato1=contatore1 #resetto le variabili
conatoreduplicato2=contatore2 #per riutilizza
if somma==2:
contatoreduplicato1=contatore1
contatoreduplicato2=contatore2
while contatoreduplicato1<tipoGriglia*contatoreduplicato2:
if lista[contatoreduplicato1]!=1:
lista[contatoreduplicato1]=1
contatoreduplicato1=contatoreduplicato1+1
contatoreduplicato1=contatore1 #resetto le variabili
contatoreduplicato2=contatore2 #per riutilizzarle
if contatore1==tipoGriglia*contatore2: #se è finita la riga
somma=0 #resetta la variabile somma
contatore2=contatore2+1 #e passa alla riga successiva
if tipoGriglia*tipoGriglia<=tipoGriglia*contatore2: #se la griglia è terminata
break #passo al controllo successivo
somma=somma+lista[contatore1]
contatore1=contatore1+1 #incremento contatore1 per controllare la casella successiva
#controllo per colonne
contatore1=0 #resetto i contatori
contatore2=1 #per poterli riutilizzare
contatoreduplicato1=0
contatoreduplicato2=1
while contatore1<=tipoGriglia*contatore2:
if somma==20:
contatoreduplicato1=contatore1
contatoreduplicato2=contatore2
while (contatoreduplicato1<tipoGriglia*contatoreduplicato2):
if lista[contatoreduplicato1]!=10:
lista[contatoreduplicato]=1
contatoreduplicato1=contatoreduplicato1+1
contatoreduplicato1=contatore1 #resetto le variabili
conatoreduplicato2=contatore2 #per riutilizza
if somma==2:
contatoreduplicato1=contatore1
contatoreduplicato2=contatore2
while (contatoreduplicato1<tipoGriglia*contatoreduplicato2):
if lista[contatoreduplicato1]!=1:
lista[contatoreduplicato]=1
contatoreduplicato1=contatoreduplicato1+1
contatoreduplicato1=contatore1 #resetto le variabili
contatoreduplicato2=contatore2 #per riutilizzarle
if contatore1==tipoGriglia*contatore2: #se è finita la colonna
somma=0 #resetta la variabile somma
contatore2=contatore2+1 #e passa alla colonna successiva
if tipoGriglia*tipoGriglia<tipoGriglia*contatore2: #se la griglia è terminata
mossarandom(tipoGriglia,'x',lista) #fa una mossa casuale
break #ed esce
somma=somma+lista[contatore1]
contatore1=contatore1+tipoGriglia #incremento contatore1 per controllare la casella successiva