Ir ao conteúdo
  • Cadastre-se

Portugol Criacao de jogo da velha


Ir à solução Resolvido por kgin,

Posts recomendados

Boa noite pessoal, tudo bem? Estou com algumas dificuldades na criacao do algoritmo para um trabalho de um jogo da velha.

linha 111: Tipos incompativeis! não e possível atribuir uma expressao do tipo "vazio" a uma expressao do tipo "logico".
linha 115:  Tipos incompativeis! não e possível atribuir uma expressao do tipo "vazio" a uma expressao do tipo "logico"..

aqui esta o codigo completo:

 

programa
{
    const inteiro k = 200
    inteiro cad = 0, vitorias[k]
    cadeia nomes[k], jogador

    funcao cadastrarPessoa(cadeia nome)
    {
        inteiro posicaoExistente = -1
        para(inteiro i = 0; i < cad; i++)
        {
            se (nome == nomes[i])
            {
                jogador = nome
                posicaoExistente = i
            }
        }

        se (posicaoExistente != -1)
        {
            jogador = nome
        }
        senao
        {
            nomes[cad] = nome
            vitorias[cad] = 0
            jogador = nome
            cad++
        }
        escreva("\n\n\n\n\n\n\n")
    }

    funcao desenharTabuleiro(caractere tabuleiro[][])
    {
        para(inteiro i = 0; i < 3; i++)
        {
            para(inteiro j = 0; j < 3; j++)
            {
                escreva(" ", tabuleiro[i][j], " ")
                se (j < 2){
                    escreva("|")}}
            se (i < 2){
                escreva("\n-----------\n")}}
        escreva("\n")
    }

    funcao verificarVitoria(caractere tabuleiro[][], caractere jogador)
    {
        logico volta = falso
        para(inteiro i = 0; i < 3; i++)
        {
            se (tabuleiro[i][0] == jogador e tabuleiro[i][1] == jogador e tabuleiro[i][2] == jogador){
                retorne volta = verdadeiro }
            se (tabuleiro[0][i] == jogador e tabuleiro[1][i] == jogador e tabuleiro[2][i] == jogador){
                volta = verdadeiro}
        }

        se (tabuleiro[0][0] == jogador e tabuleiro[1][1] == jogador e tabuleiro[2][2] == jogador){
            retorne volta = verdadeiro }
        se (tabuleiro[0][2] == jogador e tabuleiro[1][1] == jogador e tabuleiro[2][0] == jogador){
            retorne volta = verdadeiro }
    }

    funcao jogarJogoDaVelha()
    {
        caractere tabuleiro[3][3] = {{' ', ' ', ' '}, {' ', ' ', ' '}, {' ', ' ', ' '}}
        inteiro vez = 1
        inteiro linha, coluna
        logico jogoEmAndamento = verdadeiro
        logico jogadorVenceu = falso

        enquanto (jogoEmAndamento)
        {
            desenharTabuleiro(tabuleiro)
            escreva("Jogador ")
            se (vez == 1)
            {
                escreva("X")
            }
            senao
            {
                escreva("O")
            }
            escreva(", informe a linha (0-2): ")
            leia(linha)
            escreva("Jogador ")
            se (vez == 1)
            {
                escreva("X")
            }
            senao
            {
                escreva("O")
            }
            escreva(", informe a coluna (0-2): ")
            leia(coluna)

            se (tabuleiro[linha][coluna] == ' ')
            {
                se (vez == 1)
                {
                    tabuleiro[linha][coluna] = 'X'
                }
                senao
                {
                    tabuleiro[linha][coluna] = 'O'
                }

                se (vez == 1)
                {
                    jogadorVenceu = verificarVitoria(tabuleiro,'X')
                }
                senao
                {
                    jogadorVenceu = verificarVitoria(tabuleiro,'O')
                }
            }
            senao
            {
                escreva("Posição ocupada. Escolha outra posição.\n")

                se (jogadorVenceu)
                {
                    desenharTabuleiro(tabuleiro)
                    escreva("Jogador ")
                    se (vez == 1)
                    {
                        escreva("X")
                    }
                    senao
                    {
                        escreva("O")
                    }
                    escreva(" venceu!\n")

                    para(inteiro i = 0; i < cad; i++)
                    {
                        se (jogador == nomes[i])
                        {
                            vitorias[i]++
                        }
                    }

                    jogoEmAndamento = falso
                }
                senao
                {
                    vez = -vez
                }
            }
        }
    }

    funcao inicio()
    {
        inteiro op
        cadeia nome
        caractere tabuleiro[3][3]

        escreva("Digite o nome do jogador. \n==> ")
        leia(nome)
        cadastrarPessoa(nome)

        faca
        {
            escreva("\n 1. Iniciar.\n 2. Trocar usuario.\n 3. Estatisticas \n 4. Encerrar. \n ==> ")
            leia(op)
            escreva("\n\n\n\n\n\n\n")

            escolha(op)
            {
                caso 1:
                    escreva(jogador, " comeca como X\n")
                    desenharTabuleiro(tabuleiro)
                    pare

                caso 2:
                    escreva("Digite o nome do jogador. \n==> ")
                    leia(nome)
                    cadastrarPessoa(nome)
                    escreva("\n\n\n\n\n\n\n")
                    pare

                caso 3:
                    para(inteiro i = 0; i < cad; i++)
                    {
                        escreva("Jogador: ", nomes[i], " - Vitórias: ", vitorias[i], "\n")
                    }
                    pare
            }

            escreva("Pressione a tecla enter para continuar:")
            cadeia lixo
            leia(lixo)
            escreva("\n\n\n\n\n\n\n")
        } enquanto (op != 4)
    }
}

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Solução

Boa noite!

 

O problema principal é que você declarou todos os tipos caractere como caractere

26 minutos atrás, luluvito disse:
funcao desenharTabuleiro(caractere tabuleiro[][])

e a outros problemas pontuais que tornam meio difícil consertar o algoritmo.

recomendaria começar de novo e focar só no jogo em si por enquanto.

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!