-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathjogodavelha.ALG
160 lines (142 loc) · 4.39 KB
/
jogodavelha.ALG
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
157
158
159
160
Algoritmo "JogodaVelha"
Var
C, Linha, Coluna, Cont, NovoValor, PosicaoAtualTabuleiro: Inteiro
Tabuleiro: Vetor[1..3, 1..3] de Caractere
Jogada, Posicao, DimensaoDaMatriz: Inteiro
PosicaoValida: Logico
Xis, Bola: Caractere
Procedimento DesenhaCruzETraco()
Inicio
Para C <- 0 ate 12 faca
Se (C%4 = 0) entao
Escreva ("+")
Senao
Escreva ("-")
FimSe
FimPara
FimProcedimento
Procedimento InicializaTabuleiro()
Inicio
Para Linha <- 1 ate DimensaoDaMatriz faca
Para Coluna <- 1 ate DimensaoDaMatriz faca
NovoValor <- 0
Se (Linha > 1) entao
NovoValor <- Caracpnum (Tabuleiro [Linha - 1, DimensaoDaMatriz]) + Coluna
Senao
NovoValor <- Coluna
FimSe
Tabuleiro [Linha, Coluna] <- Numpcarac (NovoValor)
FimPara
FimPara
FimProcedimento
Procedimento MostrarTabuleiro()
Inicio
Para Linha <- 1 ate DimensaoDaMatriz faca
DesenhaCruzETraco()
Escreval ("")
Para Coluna <- 1 ate DimensaoDaMatriz faca
Escreva ("| ", Tabuleiro [Linha, Coluna], " ")
FimPara
Escreval ("|")
Se (Linha = DimensaoDaMatriz) entao
DesenhaCruzETraco()
FimSe
FimPara
Escreval ("")
Cont <- Cont + 1
Se (Cont = DimensaoDaMatriz) entao
Para C <- 0 ate 12 faca
Se (C%4 = 0) entao
Escreva ("+")
Senao
Escreva ("-")
FimSe
FimPara
FimSe
FimProcedimento
Funcao AtualizaTabuleiro (Posicao:Inteiro; Char:Caractere): Logico
Inicio
PosicaoAtualTabuleiro <- 0
Para Linha <- 1 ate DimensaoDaMatriz faca
NovoValor <- PosicaoAtualTabuleiro
Para Coluna <- 1 ate DimensaoDaMatriz faca
Se (Linha > 1) entao
PosicaoAtualTabuleiro <- NovoValor + Coluna
Senao
PosicaoAtualTabuleiro <- Coluna
Fimse
Se (PosicaoAtualTabuleiro = Posicao) entao
Se (Tabuleiro [Linha, Coluna] <> Xis) E (Tabuleiro[Linha,Coluna] <> Bola) entao
Tabuleiro [Linha, Coluna] <- Char
Retorne Verdadeiro
Senao
Retorne Falso
FimSe
FimSe
FimPara
FimPara
FimFuncao
Procedimento InsereNoTabuleiro(Char:Caractere)
Inicio
Escreval ("Quer jogar [",Char,"] em qual posicao? ")
Leia (Posicao)
PosicaoValida <- AtualizaTabuleiro(Posicao, Char)
Enquanto (Nao PosicaoValida) faca
Escreval ("Posicao Invalida")
Escreval ("Quer jogar [",Char,"] em qual posicao? ")
Leia (Posicao)
PosicaoValida <- AtualizaTabuleiro (Posicao, Char)
FimEnquanto
Limpatela()
MostrarTabuleiro()
FimProcedimento
Procedimento InicializarJogo()
Inicio
DimensaoDaMatriz <- 3
Xis <- "X"
Bola <- "O"
InicializaTabuleiro()
MostrarTabuleiro()
PularUmaLinha()
FimProcedimento
Procedimento Jogar()
Inicio
Jogada <- 1
Enquanto ((Nao ExisteGanhador()) E (Jogada <= 7)) faca
Se (Jogada%2 = 0) entao
InsereNoTabuleiro(Xis)
Senao
InsereNoTabuleiro(Bola)
FimSe
Jogada <- Jogada + 1
FimEnquanto
FimProcedimento
Funcao JaExistePosicaoVencedora(Char: Caractere): Logico
Inicio
Retorne (Tabuleiro[1,1] = Char) E (Tabuleiro[1,2] = Char) E (Tabuleiro[1 ,3] = Char) Ou (Tabuleiro[2,1] = Char) E (Tabuleiro[2,2] = Char) E (Tabuleiro[2,3] = Char) Ou(Tabuleiro[3,1] = Char) E (Tabuleiro[3,2] = Char) E (Tabuleiro[3,3] = Char) Ou (Tabuleiro[1,1] = Char) E (Tabuleiro[2,1] = Char) E (Tabuleiro[3,1] = Char) Ou(Tabuleiro[1,2] = Char) E (Tabuleiro[2,2] = Char) E (Tabuleiro[3,2] = Char) Ou (Tabuleiro[1,3] = Char) E (Tabuleiro[2,3] = Char) E (Tabuleiro[3,3] = Char) Ou (Tabuleiro[1,3] = Char) E (Tabuleiro[2,2] = Char) E (Tabuleiro[3,1] = Char) Ou (Tabuleiro[1,1] = Char) E (Tabuleiro[2,2] = Char) E (Tabuleiro[3,3] = Char)
FimFuncao
Funcao ExisteGanhador(): Logico
Inicio
Retorne JaExistePosicaoVencedora(Xis) Ou JaExistePosicaoVencedora(Bola)
FimFuncao
Procedimento MostrarResultado()
Inicio
PularUmaLinha()
Se (JaExistePosicaoVencedora (Xis)) entao
Escreval ("Parabens, O Jogador com ", Xis, " foi o ganhador! :)")
FimSe
Se (JaExistePosicaoVencedora (Bola)) entao
Escreval ("Parabens, O Jogador com ", Bola, " foi o ganhador! :)")
Senao
Escreval ("Deu Velha :(")
FimSe
FimProcedimento
Procedimento PularUmaLinha()
Inicio
Escreval()
FimProcedimento
Inicio
InicializarJogo()
Jogar()
MostrarResultado()
Fimalgoritmo