tiagomartins_tm 0 Denunciar post Postado Novembro 27, 2009 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
Chrnos 30 Denunciar post Postado Novembro 27, 2009 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
rafaeltonini 0 Denunciar post Postado Fevereiro 26, 2010 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
Lost Dark 0 Denunciar post Postado Março 10, 2010 Fiquei com uma dúvida sobre esse algoritimo e quando acaba as posições!! Compartilhar este post Link para o post Compartilhar em outros sites