Ir ao conteúdo

Portugol Criacao de jogo da velha


Ir à solução Resolvido por kgin,

Posts recomendados

Postado

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
  • Solução
Postado

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

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!