1
+ from random import randint
2
+ from time import sleep
3
+
4
+ def verificar_horizontal ():
5
+ for i in range (0 , 9 , 3 ):
6
+ if (tabuleiro [i ] == tabuleiro [i + 1 ] == tabuleiro [i + 2 ] != VAZIO ):
7
+ return True
8
+
9
+
10
+ def verificar_vertical ():
11
+ for i in range (3 ):
12
+ if (tabuleiro [i ] == tabuleiro [i + 3 ] == tabuleiro [i + 6 ] != VAZIO ):
13
+ return True
14
+
15
+
16
+ def verificar_diagonal ():
17
+ for i in [0 , 2 ]:
18
+ if (tabuleiro [0 + i ] == tabuleiro [4 ] == tabuleiro [8 - i ] != VAZIO ):
19
+ return True
20
+
21
+
22
+ def verificar_empate ():
23
+ if not VAZIO in tabuleiro and (verificar_horizontal == verificar_vertical == verificar_diagonal == False ):
24
+ return True
25
+
26
+ def mostrar_tabuleiro ():
27
+ for i in range (0 , 9 , 3 ):
28
+ print (i , "|" , i + 1 , "|" , i + 2 , " " , tabuleiro [i ], "|" , tabuleiro [i + 1 ], "|" , tabuleiro [i + 2 ])
29
+
30
+ def casa_invalida ():
31
+ print ("=" * 30 )
32
+ print ("Escolha um lugar vazio!" )
33
+ print ("=" * 30 )
34
+
35
+ ####Funcao contra o PC####
36
+ def contra_pc ():
37
+ rodada = 0
38
+ jogavel = True
39
+ vencedor = False
40
+ while jogavel :
41
+ rodada += 1
42
+ if rodada % 2 == 1 :
43
+ print ("__{Sua vez!}__" )
44
+ casa = int (input ("Escolha a casa: " ))
45
+ if tabuleiro [casa ] == VAZIO :
46
+ tabuleiro [casa ] = jogador1
47
+ else :
48
+ casa_invalida ()
49
+ else :
50
+ print ("__{Minha vez!}__" )
51
+ print ("Deixe-me ver..." )
52
+ sleep (1.5 )
53
+ casa = randint (0 ,8 )
54
+ if tabuleiro [casa ] == VAZIO :
55
+ tabuleiro [casa ] = jogador2
56
+ else :
57
+ rodada -= 1
58
+ casa_invalida ()
59
+ mostrar_tabuleiro ()
60
+
61
+ #verificar horizontal
62
+ if verificar_horizontal ():
63
+ vencedor = tabuleiro [casa ]
64
+
65
+ #verificar vertical
66
+ if verificar_vertical ():
67
+ vencedor = tabuleiro [casa ]
68
+
69
+ #verificar diagonal
70
+ if verificar_diagonal ():
71
+ vencedor = tabuleiro [casa ]
72
+
73
+ #verificar empate
74
+ if verificar_empate ():
75
+ jogavel = False
76
+ print ("Jogo empatado! DEU VELHA!" )
77
+
78
+ if vencedor :
79
+ jogavel = False
80
+ print ("Vencedor: " , vencedor )
81
+
82
+ ####Funcao contra amigo####
83
+ def contra_amigo ():
84
+ rodada = 0
85
+ jogavel = True
86
+ vencedor = False
87
+ while jogavel :
88
+ rodada += 1
89
+ if tabuleiro [casa ] == VAZIO :
90
+ if rodada % 2 == 1 :
91
+ print ("Vez de " , jogador1 )
92
+ casa = int (input ("Escolha a casa: " ))
93
+ tabuleiro [casa ] = jogador1
94
+ else :
95
+ print ("Vez de " , jogador2 )
96
+ casa = int (input ("Escolha a casa: " ))
97
+ tabuleiro [casa ] = jogador2
98
+ else :
99
+ rodada -= 1
100
+ casa_invalida ()
101
+ mostrar_tabuleiro ()
102
+
103
+ #verificar horizontal
104
+ if verificar_horizontal ():
105
+ vencedor = tabuleiro [casa ]
106
+
107
+ #verificar vertical
108
+ if verificar_vertical ():
109
+ vencedor = tabuleiro [casa ]
110
+
111
+ #verificar diagonal
112
+ if verificar_diagonal ():
113
+ vencedor = tabuleiro [casa ]
114
+
115
+ #verificar empate
116
+ if verificar_empate ():
117
+ jogavel = False
118
+ print ("Jogo empatado! DEU VELHA!" )
119
+
120
+ if vencedor :
121
+ jogavel = False
122
+ print ("Vencedor: " , vencedor )
123
+
124
+
125
+
126
+ ##################
127
+ ##### O JOGO #######
128
+ #################
129
+
130
+ #tabuleiro
131
+ VAZIO = " "
132
+ tabuleiro = [VAZIO , VAZIO , VAZIO , VAZIO , VAZIO , VAZIO , VAZIO , VAZIO , VAZIO ]
133
+
134
+ #jogadores
135
+ jogador1 = " "
136
+ jogador2 = " "
137
+
138
+ print ("Escolha seu adversário [1/2]\n [1]. PC\n [2].Amigo" )
139
+ while True :
140
+ adv = int (input ())
141
+ if adv == 1 or adv == 2 :
142
+ break
143
+ print ("Escolha uma opção valida!" )
144
+
145
+ while True :
146
+ jogador1 = input ("Escolha X ou O: " ).upper ().strip ()
147
+ if jogador1 in 'XO' :
148
+ break
149
+ print ("Escolha uma opção valida!" )
150
+
151
+ if jogador1 == 'X' :
152
+ jogador2 = 'O'
153
+ else :
154
+ jogador2 = 'X'
155
+
156
+ #indice
157
+ mostrar_tabuleiro ()
158
+
159
+ if adv == 1 :
160
+ contra_pc ()
161
+
162
+ else :
163
+ contra_amigo ()
164
+
165
+
0 commit comments