Random funktion - hjælp!

Tags:    c++

<< < 12 > >>
Hey gutter!

Jeg har en lille random-kode hvor jeg skal få nogle kasser i et bilspil til at falde tilfældigt fra øverst i vinduet til nederst. Her er noget af koden:

if (rand()%15 == 1)
{
box_nr++;
if (box_nr == 100)

{
box_nr == 0;
}

box_x[box_nr] = rand()%41;
box_y[box_nr] = 0;

}
//----------Boxe rykkes en ned

for (int n1 = 0; n1 <= 100; n1++)
{
box_y[n1]--;
}
}

Men jeg kan altså ikke komme videre... der sker stadig intet, jeg ved ikke rigtig hvad jeg mere skal tilføje. Jeg har selvfølgelig tidligere i kode tegnet kasserne ved denne kode:

gotoxy (box_x [3], box_y [3]);
cout << "X";

Nogen der kan hjælpe mig videre?

Tak på forhånd.......


---------------------------
Der findes ingenting der så let slår fejl, som tanker



Du skal vel tegne box'ene igen hver gang du har ændret deres y position. At du trækker én fra y får jo ikke kassen til at flytte sig.

Normalt regner man med at y bliver større jo længere ned på skærmen man kommer.



Du skal vel tegne box'ene igen hver gang du har ændret deres y position. At du trækker én fra y får jo ikke kassen til at flytte sig.

Normalt regner man med at y bliver større jo længere ned på skærmen man kommer.



Nu er det jo sådan at jeg ikke gider at tegne alle boxene selv, så kan jeg godt bruge sådan en "for" løkke?:

for (n1 = 0; n1 <= 100; n1++)
{
if (box_tilstand[n1]== 1)
{
gotoxy (box_x [n1], box_y[n1]);
cout << "B";
}
}

Jeg bruger disse:

int box_tilstand [100];
int box_x[100];
int box_y[100];
int box_nr = 0;

Jeg resetter disse variabler i starten af min kode:

for(n1=0; n1 <= 100; n1++) // n1 er en tæller
{
box_tilstand[n1] = 0;
box_x[n1] = 0;
box_y[n1] = 0;
}

Ved stadig ikke helt hvordan jeg skal komme videre....
--------------
Der findes ingenting der så let slår fejl, som tanker



Prøv at poste hele koden i en [ pre ] kode [ / pre ] blok, så kan jeg/vi kikke på det.



Prøv at poste hele koden i en [ pre ] kode [ / pre ] blok, så kan jeg/vi kikke på det.


Fold kodeboks ind/udKode 


Sådan der! Dette virker meget fint! Det vigtigste jeg mangler er nemlig de kasser der! Spillet hedder selv "Box-racer"!!!

-----------------------------
Der findes ingenting der så let slår fejl, som tanker

[Redigeret d. 16/01-06 23:05:34 af Hitman Joe]



Jeg fik det til at spille:

Fold kodeboks ind/udKode 


De vigtigste rettelser var:

Da der er 100 boxe har disse nummer 0..99, så dine for loops skal være:
for(n1=0; n1 < 100; n1++)

Du glemet at sætte box_tilstand[box_nr] til 1 når du tilføjer en box.

Når du flytter boxene skal y tælles op ikke ned.

Jeg har indsat et delay for at få det til at gå lidt langsommere.

Nogle af boxene rammer uden for banen, du skal nok sætte box_x[] til noget i stil med:
box_x[box_nr] = 9 + rand()%32;



Takker takker!


Jeg har rettet nogle små ting i koden og det virker fint!

Men point systemet burde da ikke være så indviklet. Jeg har skrevet denne simple kode:

int point = 0;

if (box_y[n1] > 48)
{
point + 10;
}
gotoxy (45, 2); cout << "Point: " << point;

Det er sådan at hvis box_y bliver større end punkt 48 på y koordinatet, så skal point pluses med 10. Det virker bare ikke!

Jeg tror det er pga. at jeg definerer point til at være 0 fra start, men hvis jeg fjernet nullet, så tildeler computeren automatisk point til at være 70 :-/

-----------------
Der findes intet der så let slår fejl, som tanker!



Jeg går ud fra at du tester på om box'en er aktiv inden du tester?

I øvrigt er det vel:
point += 10;

Jeg ved ikke hvor de 70 point er fra.



Jeg går ud fra at du tester på om box'en er aktiv inden du tester?

I øvrigt er det vel:
point += 10;

Jeg ved ikke hvor de 70 point er fra.



Hmm, hvad mener du helt? Point systemet skal bare kunne fungere på den måde, at når box_y når ned til y = 48, så skal den kunne pluse 10 til variablen point...

Håber du forstår mig nu!


-takker igen!


Der findes ingenting der så let slår fejl, som tanker



point + 10;

Giver ingen mening; man lægger 10 til point og sender resultatet ud i den store void.

point += 10;

Betyder lægge 10 til point. Det er det samme som:

point = point + 10;



Det virker bare ikke... Nu har jeg prøvet alle metoder, computeren kan simpelthen ikke forstå det!

----------------
Der findes ingenting der så let slår fejl, som tanker



<< < 12 > >>
t