# Zufalls Zahl [C++]



## Imod (24. September 2007)

Hey, Ich bins mal wieder ^^

Also in meinem Game werden wie bei Snake Punkte auf den Displaygeschireben die man dann einsammln kann,
und dann sollte mein Zufallsgenerator eine neue Zufallszahl erzeugen und dort weider den Punkt hinschireben.

Das Problem er macht nur einmal eine Zufallszahl und die bleibt dann immer gleich 


```
if (x == o & y == n)
         {
             const int x = 0, y = 50;
             int random;
             srand (time (NULL));
             random = (rand () % ((y + 1) - x)) + x;
             const int xlol = 0, ylol = 50;
             int random2;
             srand (time (NULL));
             random2 = (rand () % ((ylol + 1) - xlol)) + xlol;
             score++;
             level ++;
             o = random;
             n = random2;
```

Kann mir jemand helfen

Mfg Domi


----------



## Imod (24. September 2007)

p.s Beide Zahlen die am Schluss rauskommen müssen unter 50 sein da der Punkt sonst aus dem Spielfeld ist ^^


----------



## cesupa (24. September 2007)

Versuch mal 


```
srand(0);
```

Gruß
cesupa


----------



## Imod (24. September 2007)

cesupa hat gesagt.:


> Versuch mal
> 
> 
> ```
> ...



sorry geht net


----------



## Drache2 (24. September 2007)

o man.^^


```
rand()%50;
```

erzeugt eine Zufallszahl zwischen 0 und 50 (inklusive null. 50 nimmer)

und mit 
	
	
	



```
srand((unsigned)time(NULL));
```

schmeiste den Zufallsgenerator sozusagen an

dafor am besten noch time.h einbinden.


----------



## Imod (24. September 2007)

t thx 

Bleibt aber leider nicht im 50er bereich 

Aber das werd ich schon noch rausfinden hoff ich ^^

Mfg Domi


----------



## Imod (24. September 2007)

so habs  hab ein fehler im code gehabt darum gings net 

Hier die Lösung

:


```
if (x == o & y == n)
         {   
             loop :
             int random;
             srand((unsigned)time(NULL));  
             random = (rand()%20);
             const int xlol = 1, ylol = 50;
             int random2;
             srand((unsigned)time(NULL));  
             random2 = (rand()%20);
             score++;
             level ++;
             if (random < 24 && random2 < 24)
             {
             o = random;
             n = random2;
             }    
             if (random > 23 && random2 > 23)
             goto loop;
         }
```


----------



## lexz (25. September 2007)

Eine ganz kurze Anmerkung, schmeiß den goto-Befehl aus deinem Wortschatz. Ist antiquitiert und nicht schicklich. oO


----------



## Drache2 (25. September 2007)

Da hat lex recht. durch goto entseteht schnell unübersichtlicher spagetticode. und das ist wiederum extrem schlecht und zeigt einen schlechten Programierstil.
stattdessen besser while oder do while oder auch for schleifen nehemn.^^


----------

