Ir ao conteúdo

Unresolved overloaded function...


Sr. Burns

Posts recomendados

Postado

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();
}

Postado

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?

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!