View Full Version : Please Help. Re: Array of objects

04-29-2004, 07:57 PM
ok basically this function creates each object within a loop and passes it a pointer to the next object

void cGameWorms::seedCritters()

/* Clean out any old non-player non-wall critters. Although we don't have
walls yet, you might want to put some in. */
/* Make some new cCritterWormsRival and some new cCritterWormSegment.*/
for (int i=0; i<_rivalcount; i++)
new cCritterWormsRival(this);
cCritterWormSegment *pwormseg;
cCritterWormSegment *pwormseg_previous; /* This is a special trick for the
follow-the-leader thing we'll set up in the next loop. Not standard. */

for (int k=0; k<cGameWorms::WORMCOUNT; k++)
pwormseg_previous = NULL;
for (i=0; i<_seedcount; i++)

pwormseg = new cCritterWormSegment(this, pwormseg_previous);
pwormseg_previous = pwormseg;


this function is whats called when creating the object it recieves the pointer to the next object and uses this as the deciding factor on what to do next.

what i need it to do is be able to select any object to decide what to do. if that makes any sense

cCritterWormSegment::cCritterWormSegment(cGame *pownergame, cCritter *ppriorsegment):
//Set the health and value. Make a sprite and use setSprite to install it.
//randomize(cCritter::MF_POSITION | cCritter::MF_VELOCITY);
cPolygon *pnewpoly = new cPolygon(7);
pnewpoly->randomize( cPolygon::MF_COLOR);
//Use addForce to add forces.
//Randomize velocity if you like.
//Set a particular radius ifyou like.
if (!ppriorsegment)
randomize(cCritter::MF_POSITION | cCritter::MF_VELOCITY);
// ppriorsegment->
Real rodlength = radius()+ppriorsegment->radius();
addForce(new cForceObjectSpringRod(
ppriorsegment, rodlength, cGameWorms::SPRINGFORCE));
addForce(new cForceObjectSeek(ppriorsegment, cGameWorms::SPRINGFORCE));
moveTo(ppriorsegment->position()- rodlength * ppriorsegment->tangent());