Froya Skrevet 20. mars 2007 Del Skrevet 20. mars 2007 (endret) 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 20. mars 2007 av Froya Lenke til kommentar
einaros Skrevet 20. mars 2007 Del Skrevet 20. mars 2007 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
itsmebth Skrevet 21. mars 2007 Del Skrevet 21. mars 2007 Du trenger ikke == true, og istedenfor ettelleranna == false kan du skrive !ettelleranna Lenke til kommentar
Froya Skrevet 21. mars 2007 Forfatter Del Skrevet 21. mars 2007 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
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå