Jump to content
  • 0
VitinhoBBK

Jogo da velha/Erro Ao Executar !

Question

Seguinte, estou tentando criar um jogo da velha mas e está causando um erro ao compilar, aparece um erro dizendo->|error: cannot convert 'char (*)[3]' to 'char*' for argument '1' to 'bool verificaX(char*)', alguem sabe como posso resolver ???! (Aparentemente não ta dando pra armazenar o endereço do vetor casas dentro do ponteiro das funções...

Obs: Aceito sugestões para melhorar meu código, grato.(Ignorem as bibliotecas inúteis)

 

 

#include <iostream>
#include <stdio.h> //Para função gets
#include <stdlib.h> //Para função malloc
#include <math.h>
#include <iomanip>

                    //JOGO DA VELHA

using namespace std;

int jogadas=0;

bool verificaX(char *vetor);
bool verificaO(char *vetor);

int main(){

    char casas[3][3]={' ',' ',' ',' ',' ',' ',' ',' ',' '};
    int l=0,c=0;

    while(jogadas<9){

         cout << "\t\t" << casas[0][0] << " | " << casas[0][1] << " | " << casas[0][2] << "\n";
         cout << "\t\t_________\n";
         cout << "\t\t" << casas[1][0] << " | " << casas[1][1] << " | " << casas[1][2] << "\n";
         cout << "\t\t_________\n";
         cout << "\t\t" << casas[2][0] << " | " << casas[2][1] << " | " << casas[2][2] << "\n\n\n";

        cout << "Digite uma linha: ";
        cin >> l;
        cout << "Digite uma coluna: ";
        cin >> c;

        while(l<=0 || c <=0 || l>3 || c>3){
            system("cls");
            cout << "Linha ou Coluna não existe!";
            cout << "Digite uma linha: ";
            cin >> l;
            cout << "Digite uma coluna: ";
            cin >> c;
        }
        system("cls");
        if(jogadas%2==0){
            casas[--l][--c]='X';
        }else{
            casas[--l][--c]='O';
        }
        jogadas++;

        verificaX(casas);
        verificaO(casas);

    }

        if(verificaX){
            cout << "Jogador X ganhou!";
        }else if(verificaO){
            cout << "Jogador O ganhou!";
        }else{
            cout << "Empate!";
        }
    return(0);
}

bool verificaX(char *vetor){
    int l,c;
    for(l=0;l<3;l++){
        if(vetor[l][0] && vetor[l][1] && vetor[l][2] == 'X'){
            jogadas=10;
            return true;
        }else if(vetor[0][c] && vetor[1][c] && vetor[2][c] == 'X'){
            jogadas=10;
            return true;
        }
        c++;
    }
    return 0;
}
bool verificaO(char *vetor){
    int l,c;
    for(l=0;l<3;l++){
        if(*vetor[l][0]=='X' && *vetor[l][1]=='X' && *vetor[l][2] == 'X'){
            jogadas=10;
            return o=true;
        }else if(*vetor[0][c]=='X' && *vetor[1][c]=='X' && *vetor[2][c] == 'X'){
            jogadas=10;
            return o=true;
        }
        c++;
    }
    return 0;
}

Share this post


Link to post
Share on other sites

1 answer to this question

Recommended Posts

  • 0

1- Em C ao se compara strings você tem que usar um função do C. Em C++ pode não ser diferente, se quiser pesquise sobre.

 

2- Você tá comparando com essas aspas ' ' e não estas " ",  essas que são para comparar strings.

if(*vetor[l][0]=='X' && *vetor[l][1]=='X' && *vetor[l][2] == 'X')

3- Nas linhas return:

return o=true;

Por que não retornar apenas true? Ao invés de fazer algo receber. Acho que não existe " o "  na sua função. Essa variável.

Flw.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By picsartisticc
      Meu professor passou uma prova pra casa para entregar na sexta feira e eu ainda não tive tempo de fazer nada e ainda tenho mais outra prova no mesmo dia. E definitivamente icc não tá como prioridade.
      Alguém pode pelo amooor me ajudar? 
      porque assim, máximo respeito pelos programadores viu? É muita paciência que vocês tem!
      1. Ele pede pra implementar um programa que tenha funções de soma, subtração, multiplicação e divisão que opere 2 números e retorne a sua respectiva operação.
      2. Implementar uma função que receba a quantidade de faltas no trabalho e retorne o salario mensal de um funcionario, cuja diaria é 100,00 de acordo com o numero de dias trabalhados.
      Tem essa formula aqui:
      dias_trabalhados=30-falta_no_mes
      salario_mensal=dias_trabalhadosx100
      3. Implantar um procedimento que receba 3 números e exiba-os em ordem crescente.

      Desde já muita gratidão por todos que tirarem um tempinho do tempo pra me salvar. Att.
    • By Mano Reis
      Tenho tido alguns erros (travamento, pulos, etc) ao executar videos e não sei qual o formato mais seguro para evitar isso.
      Existe algum formato que cria com CRC?
      Obrigado.
    • By kadumx
      Boa noite pessoal,
       
      como posso migrar meus arquivos wordpress que estão em pasta www.site.com.br/novo para raiz www.site.com.br.
      Tentei seguir esse (  http://www.luisaambros.com/blog/como-trocar-o-wordpress-de-diretorio-na-mesma-hospedagem/ )mas quando chego na etapa 8 e 9 sou redirecionado para o painel antigo e não o novo.
       
      Agradeço se conseguir tirar essa dúvida.
    • By Lísias de Castro
      Ola, sou Lísias e gostaria de saber se alguém poderia me ajudar nessa tarefa tão difícil para finalizar minha biblioteca.
      Eu fiz um motor de jogos, e nele já consegui implementar todas as funções básicas para um uso primário. Fazendo a criação de jogos simples através dela.
      Mas estou desenvolvendo um rpg, e resolvi fazer com que os personagens atirem a longa distância. Porém, para que isso aconteça, tenho que fazer com que o objeto a ser atirado sempre corra em linha reta.
      Criei uma função que faz com que todos os objetos se movam na tela, mas ela não funciona de uma maneira linear. O que posso modificar nessa função para que ela me proporcione isso?
       
      static STATUS place_user_move(OBJECT_SET * U, BP32 x, BP32 y) { if (U == NULL)return (Off); if (U->x_route == x) { if (U->y_route > y) { U->y_route -= U->y_speed; U->where_stop_but(U, NORTH); if (U->y_route < y) { U->y_route = y; U->where_stop(U); return (On); } } if (U->y_route < y) { U->y_route += U->y_speed; U->where_stop_but(U, SOUTH); if (U->y_route > y) { U->where_stop(U); U->y_route = y; return (On); } } return (Off); } if (U->y_route == y) { if (U->x_route > x) { U->x_route -= U->x_speed; U->where_stop_but(U, WEST); if (U->x_route < x) { U->where_stop(U); U->x_route = x; return (On); } } if (U->x_route < x) { U->x_route += U->x_speed; U->where_stop_but(U, EAST); if (U->x_route > x) { U->where_stop(U); U->x_route = x; return (On); } } return (Off); } if (U->x_route > x) { U->x_route -= U->x_speed; if (U->x_route < x)U->x_route = x; if (U->y_route > y) { U->y_route -= U->y_speed; U->where_stop_but_and(U, NORTH, WEST); if (U->y_route < y)U->y_route = y; } if (U->y_route < y) { U->where_stop_but_and(U, SOUTH, WEST); U->y_route += U->y_speed; } } if (U->x_route < x) { U->x_route += U->x_speed; if (U->x_route > x)U->x_route = x; if (U->y_route < y) { U->y_route += U->y_speed; U->where_stop_but_and(U, SOUTH, EAST); if (U->y_route > y)U->y_route = y; } if (U->y_route > y) { U->y_route -= U->y_speed; U->where_stop_but_and(U, NORTH, EAST); if (U->y_route < y)U->y_route = y; } } return (Off); } PLACE_CALL STATUS PLACE_TYPE place_user_route(CHAINED * user, BP32 x, BP32 y) { if (user && USER_C(user->it)->object && bit_is_on(USER_C(user->it)->object->status, OBJECT_VISIBLE)) { OBJECT_SET * U = USER_C(user->it)->object; if (U->x_route == x && U->y_route == y) { obj_where_stop_all(U); return (On); } //printf("xs %f ys %f\n",object->x_speed,object->y_speed); return (place_user_move(U, x, y)); } return (Off); } #define sign(x) ((x > 0) ? 1 : ((x < 0) ? -1 : 0) ) PLACE_CALL STATUS PLACE_TYPE place_user_straight(CHAINED * user, BP32 x1, BP32 y1) { if (user && USER_C(user->it)->object && bit_is_on(USER_C(user->it)->object->status, OBJECT_VISIBLE)) { OBJECT_SET * O = USER_C(user->it)->object; BP32 dx, dy; dx = x1 - O->x_route; dy = y1 - O->y_route; static BP32 x = -1, y = -1, p = -1; if (x == -1)x = O->x_route; if (y == -1)y = O->y_route; if (p == -1)p = 2 * dy - dx; printf("x %lf y %lf\n", x, y); if (x < x1) { if (p >= 0) { y = y + 1; p = p + 2 * dy - 2 * dx; } else { p = p + 2 * dy; } x = x + 1; } else { O->x_route = x; O->y_route = y; x = -1; y = -1; p = -1; return (On); } O->x_route = x; O->y_route = y; x = -1; y = -1; p = -1; } return (Off); } a função user_place_straight foi minha tentativa de implementar bresenham que promete fazer o que estou tentando.
       
      Isso é o que fá fiz com o motor: https://www.youtube.com/watch?v=nuLi_lB6c4Y&feature=youtu.be
       
      Mas até agora não estou conseguindo resultado
    • By SGTFalcao
      Boa noite, 
       
      Preciso de ajuda com o desenvolvimento de um programa. 
       
      Quero saber 3 coisas .
       
      1 - Criei uma  vetor de struct vinculada a uma constante de valor 5. Quero saber como faço para limitar o cadastro ao tamanho da constante ( controla o n° de posições do vetor da struct)
       
      De forma que ao cadastrar 5 livros ele impeça de cadastrar o sexto. 
       
      2- Impedir que dos 5 cadastros algum deles se repita. (Livros iguais)
       
       
       
      3- Se eu der o comando para exibir a lista de dados cadastrados e não houver nenhum ele tem que informar lista vazia. 
       
       
       
       
       
      Segue o meu código. 
       
      #include<stdio.h>
      #include<stdlib.h>
      #include<string.h>
      #define Max_livros 5
      struct biblio{
          char nomeobra[30];
          char nomeedit[30];
          char nomeaut[30];
          int codigo;
          int ativo;
      };
      biblio livros[Max_livros];
      void menu();
      void cadastrar();
      void mostrar();
      // Menu principal -------------------------INICIO-------------------------------
      int main(){
          menu();
          return 0;
      }
      // -----------------------------------------FIM---------------------------------
      void menu(){
          int op;    
          do{
          system("cls");
          printf("---------->>Sistema para bibliotecas<<----------\n \n \n ");
          printf("\n1 - Inserir um novo cadastro: ");
          printf("\n2 - Mostrar todos os cadastros: ");
          printf("\n0 - Encerrar \n\n");
          printf("Opcao escolhida: ");
          scanf("%d",&op);
          getchar();
          fflush(stdin);
          switch(op){
              case 1:
                   cadastrar();
              break;
              case 2:
                  mostrar();
              break;
              default : 
                  system("cls");
                  printf("\n \n ==========================================");
                  printf("\n\n\n\n\t Erro : opcao invalida!!!\n\n\n\n");
                  printf("\n \n ==========================================\n\n");
                  system("pause");
          }
          getchar();
          }while(op!=0);
                  }            
      void cadastrar(){
          
          system("cls");    
          char nomeobra[20];
          char nomeedit[20];
          char nomeaut[20];
          int codigo;
          int op;
          do{    
              codigo=0;
              codigo=codigo+1;
              printf("\nDigite o nome da obra: ");
              fgets(nomeobra,sizeof(nomeobra),stdin);
                  
              
              printf("\nDigite o(s) nome(s) d(os) autor(es): ");
              fgets(nomeaut,sizeof(nomeaut),stdin);
              
              
              printf("\nDigite o nome da editora: ");
              fgets(nomeedit,sizeof(nomeedit),stdin);
              
              for(int i=0;i<Max_livros;i++){
                  if(livros.ativo==0)
                  {
                      strcpy(livros.nomeobra,nomeobra);
                      strcpy(livros.nomeaut,nomeaut);
                      strcpy(livros.nomeedit,nomeedit);
                      livros.ativo=1;
                      break;
                  }
              }
              printf("\n1 - Continuar \n0 - Sair \n\n");
              scanf("%d",&op);
                  getchar();
                  fflush(stdin);            
          }while(op!=0);
          }
          
          
      void mostrar(){
          int codigo=0;
          system("cls");
          printf("------------->>Lista de livros cadastrados<<-------------\n \n \n");
          for(int i=0;i<Max_livros;i++){
              if(livros.ativo==1){        
                  codigo=codigo+1;
              printf("\nCodigo: %d\n",codigo);
              printf("\nNome da Obra: %s\n",livros.nomeobra);
              printf("\nNome do(s) autor(es): %s\n",livros.nomeaut);
              printf("\nNome da editora: %s\n",livros.nomeedit);
              printf("\n\n--------------------------------\n\n");
              }
          }
          printf("\n\nPressione '0' para voltar ao menu...");
          getchar();
          fflush(stdin);

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.