Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

tiagomartins_tm

Jogo da Velha

Recommended Posts

Gostaria que alguém me ajudasse, fiz um algoritmo do jogo da velha, ele tá lindo, mas tem um probleminha.: ele tá aceitando jogadas repetidas, então se coloco "x" em um dos espaços e colocar "o" no mesmo ele substitui, como faço pra que ele não repita, e tbm que ele continue no jogador 1 se isso acontecer???

 

aqui vai o algoritmo.

algoritmo "JOGO DA VELHA"
// Função :
// Autor : TIAGO MARTINS
// Data : 12/11/2009
// Seção de Declarações
var
v : vetor [1..9] de caracter
i, c : inteiro
jogador01, jogador02 : caracter
X, O : caracter
procedimento ver
inicio
escreval ("   ",v[7],"  |","   ",v[8],"   |","   ",v[9])
escreval ("------+-------+------")
escreval ("   ",v[4],"  |","   ",v[5],"   |","   ",v[6])
escreval ("------+-------+------")
escreval ("   ",v[1],"  |","   ",v[2],"   |","   ",v[3])
fimprocedimento
procedimento jogada (var j1, j2 : caracter)
inicio

     escreva ("Jogador 01 - Nome: ")
     leia (j1)

     escreva ("Jogador 02 - Nome: ")
     leia (j2)

fimprocedimento

procedimento jogador1
inicio

     enquanto c < 9 faca

     escreva (jogador01," - Insira a posição de sua Jogada: ")
     leia (i)

        se (i >= 1) e (i <= 9) entao
        c := c+1

        escolha i

          caso 1
          v[1] := X
          caso 2
          v[2] := X
          caso 3
          v[3] := X
          caso 4
          v[4] := X
          caso 5
          v[5] := X
          caso 6
          v[6] := X
          caso 7
          v[7] := X
          caso 8
          v[8] := X
          caso 9
          v[9] := X

        fimescolha
        limpatela
        senao
        escreval ("#ERRO@ - posição inválida")
        fimse

escreval ("   ",v[7],"  |","   ",v[8],"   |","   ",v[9])
escreval ("------+-------+------")
escreval ("   ",v[4],"  |","   ",v[5],"   |","   ",v[6])
escreval ("------+-------+------")
escreval ("   ",v[1],"  |","   ",v[2],"   |","   ",v[3])

        se c = 5 entao
          interrompa
        fimse

        se (v[1] = X) e (v[2] = X) e (V[3] = X) ou (v[4] = X) e (v[5] = X) e (V[6] = X) ou (v[7] = X) e (v[8] = X) e (V[9] = X) ou (v[7] = X) e (v[5] = X) e (V[3] = X) ou (v[9] = X) e (v[5] = X) e (V[1] = X) ou (v[1] = X) e (v[4] = X) e (V[7] = X) ou (v[2] = X) e (v[5] = X) e (V[8] = X) ou (v[3] = X) e (v[6] = X) e (V[9] = X)  entao
           escreval ("")
           escreva (jogador01, " É O GRANDE VENCEDOR")
           escreval ("")
           interrompa
        fimse

  escreva (jogador02," - Insira a posição de sua Jogada: ")
  leia (i)

          se (i >= 1) e (i <= 9) entao

         escolha i

          caso 1
          v[1] := O
          caso 2
          v[2] := O
          caso 3
          v[3] := O
          caso 4
          v[4] := O
          caso 5
          v[5] := O
          caso 6
          v[6] := O
          caso 7
          v[7] := O
          caso 8
          v[8] := O
          caso 9
          v[9] := O
        fimescolha
        senao
          escreval ("#ERRO@ - posição inválida")
        fimse
        limpatela

escreval ("   ",v[7],"  |","   ",v[8],"   |","   ",v[9])
escreval ("------+-------+------")
escreval ("   ",v[4],"  |","   ",v[5],"   |","   ",v[6])
escreval ("------+-------+------")
escreval ("   ",v[1],"  |","   ",v[2],"   |","   ",v[3])

        se (v[1] = O) e (v[2] = O) e (V[3] = O) ou (v[4] = O) e (v[5] = O) e (V[6] = O) ou (v[7] = O) e (v[8] = O) e (V[9] = O) ou (v[7] = O) e (v[5] = O) e (V[3] = O) ou (v[9] = O) e (v[5] = O) e (V[1] = O) ou (v[1] = O) e (v[4] = O) e (V[7] = O) ou (v[2] = O) e (v[5] = O) e (V[8] = O) ou (v[3] = O) e (v[6] = O) e (V[9] = O)  entao
           escreval ("")
           escreva (jogador02, " É O GRANDE VENCEDOR")
           escreval ("")
           interrompa
        fimse

        se v[1] = X entao


fimenquanto
fimprocedimento

inicio

v[1] := " "
v[2] := " "
v[3] := " "
v[4] := " "
v[5] := " "
v[6] := " "
v[7] := " "
v[8] := " "
v[9] := " "

O := "O"
X := "X"

jogada (jogador01,jogador02)
limpatela
ver
jogador1

fimalgoritmo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que solução mais simples é você verificar antes de atribuir o valor X ou O se o local clicado ainda está vazio... se não estiver, mostra uma mensagem e recarrega na tela o jogo com o status antes da seleção errada e na vez do jogador atual.

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Meio tarde mas me registrei a pouco tempo, caso ainda tenha interesse aqui esta o algoritmo com restriçao para jogadas repetidas.

 

 

algoritmo "JOGO DA VELHA"
// Função :// Autor : RAfa
// Data : 02/2010
// Seção de Declarações
var
v : vetor [1..9] de caracter
i, c : inteiro
jogador01, jogador02, aux : caracter
X, O : caracter
procedimento ver
inicio
escreval ("   ",v[7],"  |","   ",v[8],"   |","   ",v[9])
escreval ("------+-------+------")
escreval ("   ",v[4],"  |","   ",v[5],"   |","   ",v[6])
escreval ("------+-------+------")
escreval ("   ",v[1],"  |","   ",v[2],"   |","   ",v[3])
fimprocedimento
procedimento jogada (var j1, j2 : caracter)
inicio

     escreva ("Jogador 01 - Nome: ")
     leia (j1)

     escreva ("Jogador 02 - Nome: ")
     leia (j2)

fimprocedimento

procedimento jogador1

inicio

enquanto c < 9 faca
      escreva (jogador01," - Insira a posição de sua Jogada: ")
      leia (i)
      se (i >= 1) e (i <= 9) entao
        escolha i
          caso 1
          se (v[1] = X) ou (v[1]=O) entao
            escreval("Posição já preenchida")
            jogador1
          senao
            v[1] := X
            c := c+1
            aux := "s"
          fimse
          caso 2
          se (v[2] = X) ou (v[2]=O) entao
            escreval("Posição já preenchida")
            jogador1
          senao
            v[2] := X
            c := c+1
            aux := "s"
          fimse
          caso 3
          se (v[3] = X) ou (v[3]=O) entao
            escreval("Posição já preenchida")
            jogador1
          senao
            v[3] := X
            c := c+1
            aux := "s"
          fimse
          caso 4
          se (v[4] = X) ou (v[4]=O) entao
            escreval("Posição já preenchida")
            jogador1
          senao
            v[4] := X
            c := c+1
            aux := "s"
          fimse
          caso 5
          se (v[5] = X) ou (v[5]=O) entao
            escreval("Posição já preenchida")
            jogador1
          senao
            v[5] := X
            c := c+1
            aux := "s"
          fimse
          caso 6
          se (v[6] = X) ou (v[6]=O) entao
            escreval("Posição já preenchida")
            jogador1
          senao
            v[6] := X
            c := c+1
            aux := "s"
          fimse
          caso 7
          se (v[7] = X) ou (v[7]=O) entao
            escreval("Posição já preenchida")
            jogador1
          senao
            v[7] := X
            c := c+1
            aux := "s"
          fimse          v[7] := X
          caso 8
          se (v[8] = X) ou (v[8]=O) entao
            escreval("Posição já preenchida")
            jogador1
          senao
            v[8] := X
            c := c+1
            aux := "s"
          fimse
          caso 9
          se (v[9] = X) ou (v[9]=O) entao
            escreval("Posição já preenchida")
            jogador1
          senao
            v[9] := X
            c := c+1
            aux := "s"
          fimse

        fimescolha
      limpatela
      senao
        escreval ("#ERRO@ - posição inválida")
      fimse

      escreval ("   ",v[7],"  |","   ",v[8],"   |","   ",v[9])
      escreval ("------+-------+------")
      escreval ("   ",v[4],"  |","   ",v[5],"   |","   ",v[6])
      escreval ("------+-------+------")
      escreval ("   ",v[1],"  |","   ",v[2],"   |","   ",v[3])

      se (v[1] = X) e (v[2] = X) e (V[3] = X) ou (v[4] = X) e (v[5] = X) e (V[6] = X) ou (v[7] = X) e (v[8] = X) e (V[9] = X) ou (v[7] = X) e (v[5] = X) e (V[3] = X) ou (v[9] = X) e (v[5] = X) e (V[1] = X) ou (v[1] = X) e (v[4] = X) e (V[7] = X) ou (v[2] = X) e (v[5] = X) e (V[8] = X) ou (v[3] = X) e (v[6] = X) e (V[9] = X)  entao
        escreval ("")
        escreva (jogador01, " É O GRANDE VENCEDOR")
        escreval ("")
        interrompa
      fimse
    enquanto aux = "s" faca
      escreva (jogador02," - Insira a posição de sua Jogada: ")
      leia (i)
      se (i >= 1) e (i <= 9) entao
        escolha i
         caso 1
          se (v[1] = X) ou (v[1]=O) entao
            escreval("Posição já preenchida")
            aux := "s"
          senao
            v[1] := O
            c := c+1
            aux := "n"
          fimse
         caso 2
          se (v[2] = X) ou (v[2]=O) entao
            escreval("Posição já preenchida")
            aux := "s"
          senao
            v[2] := O
            c := c+1
            aux := "n"
          fimse
         caso 3
          se (v[3] = X) ou (v[3]=O) entao
            escreval("Posição já preenchida")
            aux := "s"
          senao
            v[3] := O
            c := c+1
            aux := "n"
          fimse
         caso 4
          se (v[4] = X) ou (v[4]=O) entao
            escreval("Posição já preenchida")
            aux := "s"
          senao
            v[4] := O
            c := c+1
            aux := "n"
          fimse
         caso 5
          se (v[5] = X) ou (v[5]=O) entao
            escreval("Posição já preenchida")
            aux := "s"
          senao
            v[5] := O
            c := c+1
            aux := "n"
          fimse
         caso 6
          se (v[6] = X) ou (v[6]=O) entao
            escreval("Posição já preenchida")
            aux := "s"
          senao
            v[6] := O
            c := c+1
            aux := "n"
          fimse
         caso 7
          se (v[7] = X) ou (v[7]=O) entao
            escreval("Posição já preenchida")
            aux := "s"
          senao
            v[7] := O
            c := c+1
            aux := "n"
          fimse
         caso 8
          se (v[8] = X) ou (v[8]=O) entao
            escreval("Posição já preenchida")
            aux := "s"
          senao
            v[8] := O
            c := c+1
            aux := "n"
          fimse
         caso 9
          se (v[9] = X) ou (v[9]=O) entao
            escreval("Posição já preenchida")
            aux := "s"
          senao
            v[9] := O
            c := c+1
            aux := "n"
          fimse
       fimescolha
      senao
        escreval ("#ERRO@ - posição inválida")
      fimse
    fimenquanto
      limpatela
      escreval ("   ",v[7],"  |","   ",v[8],"   |","   ",v[9])
      escreval ("------+-------+------")
      escreval ("   ",v[4],"  |","   ",v[5],"   |","   ",v[6])
      escreval ("------+-------+------")
      escreval ("   ",v[1],"  |","   ",v[2],"   |","   ",v[3])

      se (v[1] = O) e (v[2] = O) e (V[3] = O) ou (v[4] = O) e (v[5] = O) e (V[6] = O) ou (v[7] = O) e (v[8] = O) e (V[9] = O) ou (v[7] = O) e (v[5] = O) e (V[3] = O) ou (v[9] = O) e (v[5] = O) e (V[1] = O) ou (v[1] = O) e (v[4] = O) e (V[7] = O) ou (v[2] = O) e (v[5] = O) e (V[8] = O) ou (v[3] = O) e (v[6] = O) e (V[9] = O)  entao
        escreval ("")
        escreva (jogador02, " É O GRANDE VENCEDOR")
        escreval ("")
        interrompa
      fimse
     
fimenquanto
     
     fimprocedimento
     inicio
     aux := "s"
     v[1] := " "
     v[2] := " "
     v[3] := " "
     v[4] := " "
     v[5] := " "
     v[6] := " "
     v[7] := " "
     v[8] := " "
     v[9] := " "
     O := "O"
     X := "X"
     jogada (jogador01,jogador02)
     limpatela
     ver
     jogador1
     fimalgoritmo


 

Att.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.