Seguinte, estou fazendo um curso de lógica on-line e um dos exercícios é criar um jogo da velha usando portugol. Apos poucos estou avançando, porém estou em uma situação que não sei como posso resolver. Eu preciso mostrar o campo do jogo (uma matriz 3x3) realizando uma referência para as casas, que vai de 1 até 9 (exemplo abaixo). Para isso, criei uma matriz do tipo INTEIRO para armazenar os valores e mostrar na tela, até aí tudo bem.
1 | 2 | 3
O problema vem, justamente, quando acontece a primeira jogada do jogador. Na primeira jogada, ele precisa indicar ao programa uma casa (de 1 até 9 - referência na matriz) e, após isso, o programa irá atualizar o valor daquela casa para "X" e não mais o valor de referência. Por exemplo, se o jogador digitar "1" na primeira resposta o número "1" precisará ser trocado para "X", ficando dessa forma:
X | 2 | 3
Mas... se a minha matriz é de inteiro, como eu consigo fazer com que um valor do tipo string seja alocado na posição indicada pelo jogador? • Eu tentei alterar a matriz do tipo inteiro para caractere, porém ao fazer isso o mesmo problema acontece: uma variável do tipo caractere não pode receber um valor do tipo inteiro alocado (pensei isso porque se você digitar um número entre aspas ele não é um inteiro ou real, mas vira uma string). Além disso, se mudar a matriz para caractere só consegui pensar em uma forma burra de popular ela com números, que seria, literalmente, escrever cada número para cada posição (por exemplo, matriz[1,1] <- 1; matriz[1,2] <- 2, etc) mas achei isso surreal. Com certeza deve existir uma outra forma de resolver isso, mas infelizmente não sei.
Infelizmente parei aqui e não sei como avançar, gostaria de contar com a ajuda de vocês para resolver essa questão
algoritmo "Jogo da Velha"
var
matriz: vetor [1..3, 1..3] de inteiro
l, c, cM, numeroJogadas, simbolo, resposta: inteiro
acabarJogo: logico
procedimento simboloJogada ()
inicio
se simbolo = 1 então
escreva ("Qual casa quer jogar [X]?")
leia (resposta)
simbolo <- simbolo - 1
numeroJogadas <- numeroJogadas + 1
senao
escreva ("Qual casa quer jogar [A]?")
leia (resposta)
simbolo <- simbolo + 1
numeroJogadas <- numeroJogadas + 1
fimse
acabarJogo <- numeroJogadas = 9
se acabarJogo então
escreva ("9 jogadas foram feitas.")
fimse
fimprocedimento
procedimento teste ()
inicio
escreva ("esse é um teste. numero de jgoadas: ", numeroJogadas)
fimprocedimento
inicio
cM <- 1
simbolo <- 1
// populando a matriz de 1 ate 9
para l <- 1 ate 3 faca
para c <- 1 ate 3 faca
matriz[l,c] <- cM
cM <- cM + 1
fimpara
escreval()
fimpara
// exibindo a matriz populada na tela
para l <- 1 ate 3 faca
para c <- 1 ate 3 faca
se c <= 2 então
escreva (matriz[l,c]: 3, "|")
senao
escreva (matriz[l,3]: 3, "|")
fimse
fimpara
escreval ()
fimpara
// repete a entrada de valores ate acabarJogo ser verdadeiro, ou seja
// quando o numero de jogadas for igual a 9 OU
// vitória por linha ou colunha (necessario desenvolver)
repita
simboloJogada()
atualizaMatriz() //aqui que estou com problemas
ate acabarJogo
fimalgoritmo
Editado por Galbieth Tag code fechada adequadamente
Pergunta
Galbieth
Pessoa, como vão?
Seguinte, estou fazendo um curso de lógica on-line e um dos exercícios é criar um jogo da velha usando portugol. Apos poucos estou avançando, porém estou em uma situação que não sei como posso resolver. Eu preciso mostrar o campo do jogo (uma matriz 3x3) realizando uma referência para as casas, que vai de 1 até 9 (exemplo abaixo). Para isso, criei uma matriz do tipo INTEIRO para armazenar os valores e mostrar na tela, até aí tudo bem.
1 | 2 | 3
O problema vem, justamente, quando acontece a primeira jogada do jogador. Na primeira jogada, ele precisa indicar ao programa uma casa (de 1 até 9 - referência na matriz) e, após isso, o programa irá atualizar o valor daquela casa para "X" e não mais o valor de referência. Por exemplo, se o jogador digitar "1" na primeira resposta o número "1" precisará ser trocado para "X", ficando dessa forma:
X | 2 | 3
Mas... se a minha matriz é de inteiro, como eu consigo fazer com que um valor do tipo string seja alocado na posição indicada pelo jogador? • Eu tentei alterar a matriz do tipo inteiro para caractere, porém ao fazer isso o mesmo problema acontece: uma variável do tipo caractere não pode receber um valor do tipo inteiro alocado (pensei isso porque se você digitar um número entre aspas ele não é um inteiro ou real, mas vira uma string). Além disso, se mudar a matriz para caractere só consegui pensar em uma forma burra de popular ela com números, que seria, literalmente, escrever cada número para cada posição (por exemplo, matriz[1,1] <- 1; matriz[1,2] <- 2, etc) mas achei isso surreal. Com certeza deve existir uma outra forma de resolver isso, mas infelizmente não sei.
Infelizmente parei aqui e não sei como avançar, gostaria de contar com a ajuda de vocês para resolver essa questão
Tag code fechada adequadamente
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.