rand() probleem

Status
Niet open voor verdere reacties.

erikiej1

Gebruiker
Lid geworden
29 apr 2008
Berichten
138
Ik ben bezig met een (dom) spel met allegro. Je bent een stopje dat je moet besturen. De positie is elke keer anders. Dit doe ik met de fuctie "rand()". Bijvoorbeeld:

int posx = rand() % 1024 + 1; // posx is de rest+1 van een deling uit een willekeurig getal int posy = rand() % 768 + 1; // hetzelfde verhaal met posy

Het probleem is nu: Elke keer als ik het "spel" opstart, is de positie hetzelfde. De eerste keer is het bvb 318 x 645, dan is het de 2e keer dat ik het spel opstart ook zo. Kan iemand mij helpen? Alvast bedankt!:rolleyes:
 
Je moet de random functie initialiseren met een random seed. Dit doe je meestal met de tijd. Als je ergens in de code (voor de aanroep van rand) de volgende regel zet:
Code:
srand(time(NULL));

Zal de random functie wel elke keer een ander getal opleveren. (Let wel op dat je die regel maar een keer laat uitvoeren en dus niet voor elke aanroep van rand.)
 
Hoe?

Ik snap niet hoe je die functie dan moet aanroepen: Zo misschien?
posx = srand(time(NULL)) % 1024 + 1;
PS: Ik ga bijna op vakantie dus het kan zijn dat ik een poosje niet reageer....;)

EDIT:

Als ik het bovenstaande doe, dan zegt Dev-C++ als ik hem compile:

Void function not ignored as it ought to be.
 
Laatst bewerkt:
Gewoon zo:
Code:
...
srand(time(NULL));
...
int posx = rand() % 1024 + 1; // posx is de rest+1 van een deling uit een willekeurig getal
int posy = rand() % 768 + 1; // hetzelfde verhaal met posy
...

srand(time(NULL)); moet je gewoon een keer aanroepen (daarom zet ik hem altijd als een van de eerste regels in de main functie) om de rand() functie met een (bij elke nieuwe start veranderende) waarde te initialiseren.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan