sábado, 4 de junho de 2011

Aula 13 - 04.06.2011

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
   m <- ""
   para coluna de 1 ate 3 faca
      m <- m + "   "
      se (coluna < 3) entao
         m <- m + "|"
      fimse
   fimpara
   escreval(m)
   escreval("---|---|---")
fimpara
escreval(" ")
// Enquanto a variável 'fim_do_jogo' não for verdadeira, continue jogando...
enquanto (fim_do_jogo = falso) faca
   // Verifica qual é o jogador da jogada...
   se (jogando = jogador2) entao
      jogando <- jogador1
      letra <- "X"
   senao
      jogando <- jogador2
      letra <- "O"
   fimse
   // Solicita a coluna/linha da jogada...
   escreva(jogando, ", digite a coluna da jogada: ")
   leia(coluna)
   escreva(jogando, ", digite linha da jogada: ")
   leia(linha)
   // Verifica se a posição já não foi usada...
   enquanto (jogo_velha[coluna, linha] <> "") faca
      escreval("Posição já utilizada. Tente novamente!")
      escreva(jogando, ", digite a coluna da jogada: ")
      leia(coluna)
      escreva(jogando, ", digite linha da jogada: ")
      leia(linha)
   fimenquanto
   // Atribui a letra na coluna/linha que foi informada
   jogo_velha[coluna, linha] <- letra
  
   // Mostra a matriz na tela.
   para linha de 1 ate 3 faca
      m <- ""
      para coluna de 1 ate 3 faca
         letra <- jogo_velha[coluna, linha]
         se (letra = "") entao
            letra <- " "
         fimse
         m <- m + " " + letra + " "
         se (coluna < 3) entao
            m <- m + "|"
         fimse
      fimpara
      escreval(m)
      escreval("---|---|---")
   fimpara
   // Verifica se jogo já não acabou...
   fim_do_jogo <- verdadeiro
   para linha de 1 ate 3 faca
      para coluna de 1 ate 3 faca
         se (jogo_velha[coluna, linha] = "") entao
            fim_do_jogo <- falso
         fimse
      fimpara
   fimpara
   // Verifica se houve ganhador na jogada
   se (jogo_velha[1,1] <> "") entao
      // Testando a 1a. coluna...
      se (jogo_velha[1,1] = jogo_velha[1,2]) e (jogo_velha[1,1] = jogo_velha[1,3]) entao
         ganhador <- jogando
      fimse
      // Testando na diagonal...
      se (jogo_velha[1,1] = jogo_velha[2,2]) e (jogo_velha[1,1] = jogo_velha[3,3]) entao
         ganhador <- jogando
      fimse
      // Testando a 1a. linha...
      se (jogo_velha[1,1] = jogo_velha[2,1]) e (jogo_velha[1,1] = jogo_velha[3,1]) entao
         ganhador <- jogando
      fimse
   fimse
   se (jogo_velha[2,1] <> "") entao
      // Testando a 2a. coluna...
      se (jogo_velha[2,1] = jogo_velha[2,2]) e (jogo_velha[2,1] = jogo_velha[2,3]) entao
         ganhador <- jogando
      fimse
   fimse
   se (jogo_velha[3,1] <> "") entao
      // Testando a diagonal invertida..
      se (jogo_velha[3,1] = jogo_velha[2,2]) e (jogo_velha[3,1] = jogo_velha[1,3]) entao
         ganhador <- jogando
      fimse
      // Testando a 3a. coluna...
      se (jogo_velha[3,1] = jogo_velha[3,2]) e (jogo_velha[3,1] = jogo_velha[3,3]) entao
         ganhador <- jogando
      fimse
   fimse
   se (jogo_velha[1,2] <> "") entao
      // Testando a 2a. linha...
      se (jogo_velha[1,2] = jogo_velha[2,2]) e (jogo_velha[1,2] = jogo_velha[3,2]) entao
         ganhador <- jogando
      fimse
   fimse
   se (jogo_velha[1,3] <> "") entao
      // Testando a 3a. linha...
      se (jogo_velha[1,3] = jogo_velha[2,3]) e (jogo_velha[1,3] = jogo_velha[3,3]) entao
         ganhador <- jogando
      fimse
   fimse
   // Verifica se houve ganhador e termina o jogo
   se (ganhador <> "") entao
      fim_do_jogo <- verdadeiro
   fimse
fimenquanto
// Testando para ver se tem um ganhador...
se (ganhador = "") entao
   escreval("Não houve ganhar!!")
senao
   escreval("Parabéns ", ganhador, ". Você foi o vencedor!!")
fimse
fimalgoritmo

Nenhum comentário:

Postar um comentário