Aula 13 - 04.06.2011
Autor: Diego Ziquinatti | Publicado: 2011-06-04T06:18:00-07:00

Continuação da lista de exercícios - FINALIZAÇÃO!!!

Extra:
Segue abaixo um algoritmo feito no VisualG para servir de base para o estudo de vocês.

Para quem quiser fazer um "a mais" neste algoritmo, eu gostaria de vê-lo tendo a possibilidade de executar o jogo no formato "jogador x computador".


algoritmo "Jogo da Velha"
var
jogo_velha: vetor[1..3,1..3] de caracter
coluna, linha: inteiro
jogador1, jogador2, jogando, ganhador, letra, m: caracter
fim_do_jogo: logico
inicio
escreval(" ==== JOGO DA VELHA ==== ")
// Lendo o nome dos jogadores...
escreva("Informe nome do jogador 1: ")
leia(jogador1)
escreva("Informe nome do jogador 2: ")
leia(jogador2)
// Mostrando matriz vazia...
para linha de 1 ate 3 faca
&nbsp;&nbsp; m &lt;- ""
&nbsp;&nbsp; para coluna de 1 ate 3 faca
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m &lt;- m + "&nbsp;&nbsp; "
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; se (coluna &lt; 3) entao
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m &lt;- m + "|"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fimse
&nbsp;&nbsp; fimpara
&nbsp;&nbsp; escreval(m)
&nbsp;&nbsp; escreval("---|---|---")
fimpara
escreval(" ")
// Enquanto a variável 'fim_do_jogo' não for verdadeira, continue jogando...
enquanto (fim_do_jogo = falso) faca
&nbsp;&nbsp; // Verifica qual é o jogador da jogada...
&nbsp;&nbsp; se (jogando = jogador2) entao
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jogando &lt;- jogador1
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; letra &lt;- "X"
&nbsp;&nbsp; senao
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jogando &lt;- jogador2
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; letra &lt;- "O"
&nbsp;&nbsp; fimse
&nbsp;&nbsp; // Solicita a coluna/linha da jogada...
&nbsp;&nbsp; escreva(jogando, ", digite a coluna da jogada: ")
&nbsp;&nbsp; leia(coluna)
&nbsp;&nbsp; escreva(jogando, ", digite linha da jogada: ")
&nbsp;&nbsp; leia(linha)
&nbsp;&nbsp; // Verifica se a posição já não foi usada...
&nbsp;&nbsp; enquanto (jogo_velha[coluna, linha] &lt;&gt; "") faca
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; escreval("Posição já utilizada. Tente novamente!")
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; escreva(jogando, ", digite a coluna da jogada: ")
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; leia(coluna)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; escreva(jogando, ", digite linha da jogada: ")
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; leia(linha)
&nbsp;&nbsp; fimenquanto
&nbsp;&nbsp; // Atribui a letra na coluna/linha que foi informada
&nbsp;&nbsp; jogo_velha[coluna, linha] &lt;- letra
&nbsp;&nbsp; 
&nbsp;&nbsp; // Mostra a matriz na tela.
&nbsp;&nbsp; para linha de 1 ate 3 faca
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m &lt;- ""
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; para coluna de 1 ate 3 faca
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; letra &lt;- jogo_velha[coluna, linha]
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; se (letra = "") entao
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; letra &lt;- " "
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fimse
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m &lt;- m + " " + letra + " "
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; se (coluna &lt; 3) entao
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m &lt;- m + "|"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fimse
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fimpara
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; escreval(m)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; escreval("---|---|---")
&nbsp;&nbsp; fimpara
&nbsp;&nbsp; // Verifica se jogo já não acabou...
&nbsp;&nbsp; fim_do_jogo &lt;- verdadeiro
&nbsp;&nbsp; para linha de 1 ate 3 faca
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; para coluna de 1 ate 3 faca
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; se (jogo_velha[coluna, linha] = "") entao
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fim_do_jogo &lt;- falso
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fimse
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fimpara
&nbsp;&nbsp; fimpara
&nbsp;&nbsp; // Verifica se houve ganhador na jogada
&nbsp;&nbsp; se (jogo_velha[1,1] &lt;&gt; "") entao
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Testando a 1a. coluna...
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; se (jogo_velha[1,1] = jogo_velha[1,2]) e (jogo_velha[1,1] = jogo_velha[1,3]) entao
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ganhador &lt;- jogando
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fimse
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Testando na diagonal...
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; se (jogo_velha[1,1] = jogo_velha[2,2]) e (jogo_velha[1,1] = jogo_velha[3,3]) entao
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ganhador &lt;- jogando
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fimse
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Testando a 1a. linha...
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; se (jogo_velha[1,1] = jogo_velha[2,1]) e (jogo_velha[1,1] = jogo_velha[3,1]) entao
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ganhador &lt;- jogando
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fimse
&nbsp;&nbsp; fimse
&nbsp;&nbsp; se (jogo_velha[2,1] &lt;&gt; "") entao
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Testando a 2a. coluna...
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; se (jogo_velha[2,1] = jogo_velha[2,2]) e (jogo_velha[2,1] = jogo_velha[2,3]) entao
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ganhador &lt;- jogando
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fimse
&nbsp;&nbsp; fimse
&nbsp;&nbsp; se (jogo_velha[3,1] &lt;&gt; "") entao
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Testando a diagonal invertida..
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; se (jogo_velha[3,1] = jogo_velha[2,2]) e (jogo_velha[3,1] = jogo_velha[1,3]) entao
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ganhador &lt;- jogando
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fimse
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Testando a 3a. coluna...
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; se (jogo_velha[3,1] = jogo_velha[3,2]) e (jogo_velha[3,1] = jogo_velha[3,3]) entao
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ganhador &lt;- jogando
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fimse
&nbsp;&nbsp; fimse
&nbsp;&nbsp; se (jogo_velha[1,2] &lt;&gt; "") entao
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Testando a 2a. linha...
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; se (jogo_velha[1,2] = jogo_velha[2,2]) e (jogo_velha[1,2] = jogo_velha[3,2]) entao
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ganhador &lt;- jogando
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fimse
&nbsp;&nbsp; fimse
&nbsp;&nbsp; se (jogo_velha[1,3] &lt;&gt; "") entao
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Testando a 3a. linha...
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; se (jogo_velha[1,3] = jogo_velha[2,3]) e (jogo_velha[1,3] = jogo_velha[3,3]) entao
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ganhador &lt;- jogando
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fimse
&nbsp;&nbsp; fimse
&nbsp;&nbsp; // Verifica se houve ganhador e termina o jogo
&nbsp;&nbsp; se (ganhador &lt;&gt; "") entao
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fim_do_jogo &lt;- verdadeiro
&nbsp;&nbsp; fimse
fimenquanto
// Testando para ver se tem um ganhador...
se (ganhador = "") entao
&nbsp;&nbsp; escreval("Não houve ganhar!!")
senao
&nbsp;&nbsp; escreval("Parabéns ", ganhador, ". Você foi o vencedor!!")
fimse
fimalgoritmo