Gå til innhold

Bool variabel setter seg selv til false uten grunn


Anbefalte innlegg

Ok, har nå sittet for lenge med et noe uvanlig problem, for meg hvertfall.

Jeg har nemlig en bool variabel som jeg setter til true, men denne blir da satt til false uten noen videre årsak. Har debugget koden ut og inn.. Finner ikke feilen.

 

Her er den relevante delen av koden.:

 

Dette ligger i WinMain.

 

vector <Bullet> bullets;

for(int i = 0; i < 20; i++)

{

Bullet *b = new Bullet(false, false, 0.0f, 0.0f, 0.0f, 0.0f);

bullets.push_back(*b);

}

 

 

//Her sender jeg vektoren med bullets som parameter, til DrawGLScene.

if ((active && !DrawGLScene(*pship, eships, bullets)) || keys[VK_ESCAPE])

 

//Dette ligger i DrawGLScene

//Her bestemmer jeg hvorvidt du skal skyte eller ikke..

 

if(keys[VK_SPACE] && (firebullet%60 == 0))

{

for(int i = 0; i < 100; i++)

{

if(bullet.isActive() == false)

{

bullet.setActive(true);

bullet.setXpos(pship.getXpos());

firebullet = 1;

i = 101;

}

}

}

 

//Og her tegner jeg kulene..

 

for(int i = 0; i < 5; i++)

{

glBindTexture(GL_TEXTURE_2D, texture[0]);

if(bullet.isActive() == true)

{

bullet.setYpos(bullet.getYpos() + 1.00f);

glBegin(GL_QUADS);

glTexCoord2f(1.0f, 1.0f);

glVertex3f(bullet.getXpos()+ 1.0f, bullet.getYpos() + 5.0f, 0.0f);

 

glTexCoord2f(0.0f, 1.0f);

glVertex3f(bullet.getXpos(), bullet.getYpos() + 5.0f, 0.0f);

 

glTexCoord2f(1.0f, 0.0f);

glVertex3f(bullet.getXpos()+ 1.0f, bullet.getYpos(), 0.0f);

 

glTexCoord2f(0.0f, 0.0f);

glVertex3f(bullet.getXpos(), bullet.getYpos(), 0.0f);

glEnd();

}

}

 

Når jeg trykker Space. så blir det i 1/60dels av et sekund vist et prosjektil.. Men ved neste gjennomkjøring av DrawGlScene så har samme bullet på mystisk vis blitt satt til false. Så når jeg: if(bullet.isActive() == true).. får jeg alltid false, og kulen som er fyrt av vil ikke bli tegnet..

 

Jeg er egentlig tom for ideer.. Håper å få noen fornuftige innspill på årsaken til dette problemet..

 

Edit:

Prøvde å sette alle til å være true i utgangspunktet, å deretter snu allt om.. true blir til false, false blir til true.. Men fikk samme problemet denne gangen, jeg setter en bullet til å bli false, neste gang drawglscene kjøres er den true.

 

Edit: Denne kan stenges, fant feilen.

Endret av Froya
Lenke til kommentar
Videoannonse
Annonse
vector <Bullet> bullets;

[...]

    Bullet *b = new Bullet(false, false, 0.0f, 0.0f, 0.0f, 0.0f);

    bullets.push_back(*b);

...

Edit: Denne kan stenges, fant feilen.

8198675[/snapback]

 

:)

 

Pointere er en fin ting. Går ut i fra at du flyttet litt på den asterisken.

Lenke til kommentar
Du trenger ikke == true, og istedenfor ettelleranna == false kan du skrive !ettelleranna

8206664[/snapback]

 

Jupp, er klar over dette.. Men skriver ofte == true av gammel vane egentlig.. Delvis også for at jeg synest det går fortere å lese gjennom koden i ettertid..

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...