Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C: Törmäyksen tunnistus

kayttaja-3842 [30.08.2006 17:55:46]

#

Terve..

Ajattelin tehdä pienimuotoisen oppaan tänne putkaan tuosta ampumis järjestelmästä, kun kerran se on joillekkin niin vaikea tehdä/hahmottaa. Eli aloitin tekemään sitä tänään, mutta sattuikin tulemaan sellainen onglema, et Törmäyksen tunnistus temppuilee. Eli vihut käyttäytyvät kummallisesti, eli vihuille ei tapahdu mitään vaikka panos osuu niihin, tai sitten jos panos osuu yhteen vihuun kaikki vihut katoaa!

Eli funktio on tälläinen

void TormaysT(HW500 hwvihu[6],Ammukset padit[100],int score,int leveys,int korkeus)
{
//Lisääjät (käydään kaikki ammukset ja vihut läpi)
int Lisaaja = 0;
int Lisaaja2 = 0;

while(Lisaaja < 100)
{
if(Lisaaja2 >= 6) {Lisaaja2 = 0;}
while(Lisaaja2 < 6)
{
//leveys ja korkeus on vihun leveys + x ja vihun korkeus + y
leveys = leveys + hwvihu[Lisaaja2].x;
korkeus = korkeus + hwvihu[Lisaaja2].y;
//Sitten itse törmäyksen tarkastus
if(padit[Lisaaja].x >= hwvihu[Lisaaja2].x  and padit[Lisaaja].x <= leveys and  padit[Lisaaja].y >= hwvihu[Lisaaja2].y and padit[Lisaaja].y <= korkeus and hwvihu[Lisaaja2].piirto == 1 )
{
//Jos vihuun osui piilotetaan se
hwvihu[Lisaaja2].piirto  = 0;
                    }
Lisaaja2++;
               }

Lisaaja++;
              }
 }

Zach [30.08.2006 18:12:39]

#

"Vihun" leveyden ja korkeuden ilmoittavat muuttujat alkavat toisella Lisaaja2-silmukan kierroksella kasvaa edellisen leveyden päälle, mikä ei ilmeisesti ollut tarkoitus. Kannattaa pitää leveys ja leveys erillään, esim.

void TormaysT(HW500 hwvihu[6],Ammukset padit[100],int score,int leveys,int korkeus)
{
//Lisääjät (käydään kaikki ammukset ja vihut läpi)
int Lisaaja = 0;
int Lisaaja2 = 0;

while(Lisaaja < 100)
{
if(Lisaaja2 >= 6) {Lisaaja2 = 0;}
while(Lisaaja2 < 6)
{
//leveys ja korkeus on vihun leveys + x ja vihun korkeus + y
int x2 = leveys + hwvihu[Lisaaja2].x;
int y2 = korkeus + hwvihu[Lisaaja2].y;
//Sitten itse törmäyksen tarkastus
if(padit[Lisaaja].x >= hwvihu[Lisaaja2].x  && padit[Lisaaja].x <= x2 && padit[Lisaaja].y >= hwvihu[Lisaaja2].y && padit[Lisaaja].y <= y2 && hwvihu[Lisaaja2].piirto == 1 )
{
//Jos vihuun osui piilotetaan se
hwvihu[Lisaaja2].piirto  = 0;
                    }
Lisaaja2++;
               }

Lisaaja++;
              }
 }

Legu [30.08.2006 19:15:51]

#

Ei näytä kovin lupaavalta..

M2tias [30.08.2006 23:18:02]

#

Jos aikoo tehdä oppaan, kannattaa ensin opetella sisentämään koodi oikein.

kayttaja-3842 [31.08.2006 07:25:36]

#

Saatat olla oikeassa...Teen varmaan sitten vain koodivinkin. :) ...oho en huomannutkaan ettei leveyttä ja korkeutta aletakkaaan alustamaan. Noh on se hyvä, että edes joku huomasi.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta