Hallo, ich bin gerade dabei, ein Spiel zu entwickeln und versuche nun, um alles auszubalancieren, etwas zu schreiben, was mir die Wahrscheinlichkeiten für Sieg oder Niederlage eines Kampfes anzeigt. Das ist das erste Mal, dass ich überhaupt was mit c erstelle und hab mich durch eine Menge Probleme selber gekämpft, aber hier komme ich nicht weiter:
Ich lasse zwei Würfel durch eine random funktion + zeit würfeln. Das funktioniert und die Würfelergebnisse sind verschieden. Wenn ich das Ganze dann aber durch eine while() funktion
20 mal durchlaufen lasse, sind alle Würfel1-ergebnisse gleich und alle Würfel2-ergebnisse ebenso.
Liegt es daran, dass das Ganze so schnell durchläuft, dass die Zeit bei den Würfen die gleiche ist? Wie kann ich dass Problem beheben?
Ich poste mal alles, da ich nicht weiss, wo der Fehler liegt:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
main()
{
int g; /*gewonnen*/
int v; /*verloren*/
int x;
x=1; /*Schleifenvariable*/
g=0;
v=0;
while(x<20)
{
x=x+1;
int r; /*Würfelergebnis 1*/
int s; /*Würfelergebnis 2*/
int a; /*Einheit 1*/
int b; /*Einheit 2*/
int i;
time_t t;
time(&t);
srand((unsigned int)t); /* Zufallsgenerator initialisieren */
a=4;
b=4;
printf("\n Einheit 1 = %d",a);
printf("\n Einheit 2 = %d",b);
for ( i=0; i<1; i++ );
r=rand() % 6 + 1; /* Wuerfeln 1*/
printf("\n Wuerfel Einheit 1 = %d",r); /*Ergebnis*/
for ( i=0; i<1; i++ );
s=rand() % 6 + 1; /* Wuerfeln 2*/
printf("\n Wuerfel Einheit 2 = %d",s); /*Ergebnis*/
/*jetzt werden die Einheiten gekillt*/
if (r>s)
{
b=b-1;
printf("\nEinheit 2 wird gekillt");
g=g+1;
}
if (s>r)
{
v=v+1;
printf("\nEinheit 2 wird nicht gekillt");
}
/*Lebenspunkte werden angezeigt*/
printf("\n Einheit 1 = %d",a);
printf("\n Einheit 2 = %d",b);
} /*ende der while funktion*/
printf("\nGewonnen = %d",g);
printf("\nVerloren = %d",v);
getchar();
}
Ach ja, wie gesagt, das hier ist mein erster Kontakt, ich würde mich freuen, eine ausführliche Erklärung zu bekommen, da ich mittlerweise von der Sache fasziniert
bin und gerne verstehen möchte.
Ich lasse zwei Würfel durch eine random funktion + zeit würfeln. Das funktioniert und die Würfelergebnisse sind verschieden. Wenn ich das Ganze dann aber durch eine while() funktion
20 mal durchlaufen lasse, sind alle Würfel1-ergebnisse gleich und alle Würfel2-ergebnisse ebenso.
Liegt es daran, dass das Ganze so schnell durchläuft, dass die Zeit bei den Würfen die gleiche ist? Wie kann ich dass Problem beheben?
Ich poste mal alles, da ich nicht weiss, wo der Fehler liegt:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
main()
{
int g; /*gewonnen*/
int v; /*verloren*/
int x;
x=1; /*Schleifenvariable*/
g=0;
v=0;
while(x<20)
{
x=x+1;
int r; /*Würfelergebnis 1*/
int s; /*Würfelergebnis 2*/
int a; /*Einheit 1*/
int b; /*Einheit 2*/
int i;
time_t t;
time(&t);
srand((unsigned int)t); /* Zufallsgenerator initialisieren */
a=4;
b=4;
printf("\n Einheit 1 = %d",a);
printf("\n Einheit 2 = %d",b);
for ( i=0; i<1; i++ );
r=rand() % 6 + 1; /* Wuerfeln 1*/
printf("\n Wuerfel Einheit 1 = %d",r); /*Ergebnis*/
for ( i=0; i<1; i++ );
s=rand() % 6 + 1; /* Wuerfeln 2*/
printf("\n Wuerfel Einheit 2 = %d",s); /*Ergebnis*/
/*jetzt werden die Einheiten gekillt*/
if (r>s)
{
b=b-1;
printf("\nEinheit 2 wird gekillt");
g=g+1;
}
if (s>r)
{
v=v+1;
printf("\nEinheit 2 wird nicht gekillt");
}
/*Lebenspunkte werden angezeigt*/
printf("\n Einheit 1 = %d",a);
printf("\n Einheit 2 = %d",b);
} /*ende der while funktion*/
printf("\nGewonnen = %d",g);
printf("\nVerloren = %d",v);
getchar();
}
Ach ja, wie gesagt, das hier ist mein erster Kontakt, ich würde mich freuen, eine ausführliche Erklärung zu bekommen, da ich mittlerweise von der Sache fasziniert
bin und gerne verstehen möchte.