Ir ao conteúdo
  • Cadastre-se
Sr. Burns

Unresolved overloaded function...

Recommended Posts

Não é o primeiro topico com o mesmo problema. Mas os outros ou sao muito específicos ou nao tem solução.

Quero fazer o jogo da velha.

(nah... meu professor é quem quer... por mim ja teria desistido)

C:\Users\...\t1.cpp|133|error: invalid types '<unresolved overloaded function type>[int]' for array subscript|

Essa coisa ai em cima aparece em varias linhas...

Primeiro o main chama o menu, que chama ou o plstart() ou pcstrt() (o jogador decide quem inicia, PC ou jogador) (não precisa ficar analisando as duas funçoes, então, pois ambas apenas chamam o testador(), e ambas usam a funçao tab(), que primeiramente gerou o tabuleiro vazio).

Mais informações me liguem.

(sou amador em programação, a proposito, portanto sem palavrões, por favor)

#include<iostream>
#include<cstdlib>
#include<string>
#include<ctime>

using namespace std;

class velha
{
public:

//-----------------------CONSTRUT---VELHA------------------------------------

velha()
{/*
string tab[3][3];
int ct, ct2;

cout<<" A B C"<<endl<<endl;
for(ct=0;ct<3;ct++)
{
cout<<ct;
for(ct2=0;ct2<3;ct++)
tab[ct][ct2]=" .";
}*/
}

//--------------------------------TAB----------------------------------------

int tab()//Gera o tabuleiro vazio
{
string tab[3][3];
int ct, ct2;

cout<<" A B C"<<endl<<endl;
for(ct=0;ct<3;ct++)
{
cout<<ct;
for(ct2=0;ct2<3;ct++)
cout<<tab[ct][ct2]<<" .";
}
}

//-------------------------------MENU-----------------------------------------

void menu()
{
int l, x, y;
char c;

do{
cout<<"Pra sair aperta '4' e 'Enter'."<<endl<<endl;
cout<<"Quer começar? Digita as coordenadas segundo o modelo (Tu é o X)."<<endl<<endl;
cout<<"Vai deixar o computador começar? Digita '0' (zero) e 'Enter'."<<endl<<endl;
cout<<"Ajuda? aperta '5' no lugar da linha."<<endl<<endl;
cout<<" A B C"<<endl<<endl;
for(x=0;x<3;x++)
{
cout<<x;
for(y=0;y<3;y++)
cout<<" .";
cout<<endl<<endl;
}
cout<<endl;
cout<<"Linha/Opssao: ";
cin>>l;
cout<<endl;

switch(l)
{
case (4):cout<<"Bye bye!"<<endl;
break;
case (5):
{
system("cls");
cout<<"Coordenadas se iniciam com linha (1, 2, 3) + 'Enter', em seguida com coluna (A, B, C) + 'Enter'."<<endl<<"Ex: '2' Enter 'C' Enter."<<endl<<"Te vira com o resto."<<endl<<endl<<endl;
}
break;
case (0): pcstrt();
break;
default:
{
cout<<"Coluna: ";
cin>>c;
switch(c)
{
case('a'): c=1;
break;
case('b'): c=2;
break;
case('c'): c=3;
break;
cout<<endl;
}
tab();
plstrt(l, c);
};
break;
}
} while(l!=4);
}

private:

//--------------------------RANDOMIZADOR---------------------------------
//Ainda nao o fiz util
int randomizador()
{
int x;
srand(time(0));
x=rand()%3;
return x;
}

//-----------------------------PCSTRT------------------------------------

void pcstrt()//Quando o PC inicia
{
int l, c, terminado=0;

do
{
l=rand()%3;
} while (l==1);

do
{
c=rand()%3;
} while (c==1);
//Jogadinha ensaiada

tab[l][c]="O";

do
{
jogador();
testador("X");
PC();
testador("O");
} while(terminado!=1);
}

//------------------------------PLSTRT------------------------------------

void plstrt(int l, int c)//Quando o jogador inicia
{
int x, y, terminado=0;
tab[x][y]="X";

do
{
PC();
testador("O");
jogador();
testador("X");
} while(terminado!=1);
}

//------------------------------JOGADOR------------------------------------

int jogador()//Cin pra tua jogada
{
int l, c, jogada=0;
do
{
if(tab[l][c]!="O")
{
tab[l][c]="X";
jogada=1;
}
else
{
cout<<"Ta ocupado, manda outra coordenada"<<endl;
cout<<"Linha: ";
cin>>l;
cout<<endl<<"Coluna: ";
cin>>c;
}
} while(jogada!=1);
}

//--------------------------------PC--------------------------------------

int PC()//O cerebro do PC
{
int l, c;
do
{
l=rand()%3;
c=rand()%3;
}while ((tab[l][c]!="O") && (tab[l][c]!="X"));
tab[l][c]="O";
}

//-----------------------------TESTADOR-----------------------------------

int testador(string jogo)//Ve se alguem ja ganhou
{
int x, y, ct, terminado=0;
string simbolo;

for(x=0;x<3;x++)//verifica as 3 linhas.
{
ct=0;
for(y=0;y<3;y++)
if(tab[x][y]==simbolo) ct++;
if(ct==3) terminado=1;
}

for(x=0;x<3;x++)//verifica as 3 colunas.
{
ct=0;
for(y=0;y<3;y++)
if(tab[y][x]==simbolo)ct++;
if(ct==3) terminado=1;
}

ct=0;//verifica diagonal 1.
for(x=0;x<3;x++)
if(tab[x][x]==simbolo)ct++;
if(ct==3) terminado=1;

ct=0;//verifica diagonal 2.
for(x=0;x<3;x++)
if(tab[x][2-x]==simbolo)ct++;
if(ct==3) terminado=1;

return(terminado);
}
};

//__-__-__-__-__MAIN__-__-__-__-__

int main()
{velha x, y;
y.tab();
x.menu();
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok... não tenho certeza de que tenha sido isso o que consertou o problema, mas...

Declarei a string tab[3][3] dentro da funçao tab(). alem de ambas terem o mesmo nome, não seria possivel acessa-la daquela forma.

Mudei... ficou assim:


class velha
{
public:

char tab[3][3];

//-----------------------CONSTRUT---VELHA------------------------------------
velha()
{
int ct, ct2;

for(ct=0;ct<3;ct++)
for(ct2=0;ct2<3;ct++)
tab[ct][ct2]='.';
}

//--------------------------------TAB----------------------------------------
void tabuleiro()//Gera o tabuleiro
{
int l, c;

cout<<" A B C"<<endl;
for(l=0;l<3;l++)
{
cout<<l<<" ";
for(c=0;c<3;c++)
cout<<tab[l][c]<<" ";
}
cout<<endl;
}

Algum comentário?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×