Asaturne
Messages postés6Date d'inscriptionlundi 15 septembre 2003StatutMembreDernière intervention22 mars 2005
-
22 mars 2005 à 18:24
Asaturne
Messages postés6Date d'inscriptionlundi 15 septembre 2003StatutMembreDernière intervention22 mars 2005
-
22 mars 2005 à 19:10
Suite du probleme que j ai eu plus tot voir le sujet "Pb de debutant" datant de mi-fevrier.
Je vous explique le concept de cette classe : cette classe represente un cube qui peut etre droppe dans un niveau. Lors de l'appui d'une touche, tous les cubes doivent pouvoir se connecter pour pouvoir par la suite parcourir le niveau a l'aide de ces cubes. Malheureusement je bloque sur une fonction avec pour theme un retour de tableau par l'intermediaire d'un pointeur. En esperant que vous pourrez m aider ...
Je sais ce probleme peut paraitre idiot mais coder une application pour un stage tout en apprenant un lanagage (le c, non appris pendant mes cours ... merci IUT montpellier) n est pas de ce qu il y a de plus facile.
En vous remerciant d'avance
Voici le header.
// Mappoint.h: interface for the Mappoint class.
//
//////////////////////////////////////////////////////////////////////
bool Mappoint::BulletShoot(Mappoint *mpt,I3DEngine *engine,IModel *level,int a)
//Create a bullet who act as a collision detector, his move depends on the value of "a" who represents one of the 26 mappoints
//return true if the bullet "hit" mpt , else false
{}
bool finish=false;
while (!finish)
{
if (lineModel->GetX() <= x2){lineModel->MoveX((float)0.01);}
if (lineModel->GetX() >= x2){lineModel->MoveX((float)-0.01);}
if (lineModel->GetY() <= y2){lineModel->MoveY((float)0.01);}
if (lineModel->GetY() >= y2){lineModel->MoveY((float)-0.01);}
if (lineModel->GetZ() <= z2){lineModel->MoveZ((float)0.01);}
if (lineModel->GetZ() >= z2){lineModel->MoveZ((float)-0.01);}
if ( fabs((double)(x2-lineModel->GetX()))<=1 &&
fabs((double)(y2-lineModel->GetY()))<=1 &&
fabs((double)(z2-lineModel->GetZ()))<=1 )
{finish=true; }
for(int x=0;x<3;x++)
{ for(int y=0;y<3;y++)
{ for(int z=0;z<3;y++)
{
if (x=0) xcoord=-20;else if (x=1) xcoord=0;else xcoord=20;
if (y=0) ycoord=-20;else if (y=1) ycoord=0;else ycoord=20;
if (z=0) zcoord=-20;else if (z=1) zcoord=0;else zcoord=20;
if (result[x][y][z]){ Mappoint *current=mptA->getMappoint(this->GetX()+xcoord,this->GetY()+ycoord,this->GetZ()+zcoord);
this->Neighboors[x][y][z]=current;}
}
}
}
}
Enfin , voici le listing des erreurs
Compiling...
Mappoint.cpp
f:\project\application_v2\mappoint.cpp(238) : error C2109: subscript requires array or pointer type
f:\project\application_v2\mappoint.cpp(238) : error C2109: subscript requires array or pointer type
f:\project\application_v2\mappoint.cpp(238) : error C2106: '=' : left operand must be l-value
f:\project\application_v2\mappoint.cpp(247) : error C2109: subscript requires array or pointer type
f:\project\application_v2\mappoint.cpp(247) : error C2109: subscript requires array or pointer type
f:\project\application_v2\mappoint.cpp(247) : error C2106: '=' : left operand must be l-value
Generating Code...
Compiling...
Mappoint_Array.cpp
Generating Code...
Error executing cl.exe.
ymca2003
Messages postés2070Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention 3 juillet 20067 22 mars 2005 à 18:33
result = (bool*)malloc(27 * sizeof(bool)); // 9 * 3
=> cela crée une zone continue en mémoire capable d'accueuillir 27 bool. tu as le droit de dire que cela représente un tableau à 3 dimensions mais le compilateur ne le sait pas.
le plus silmple, vue que les dimensions sont connues, c'est de passer le tableau en paramètre de ta fonction :