[C++] Wer kennt das spiel craps??

BodyLove

Commodore
Registriert
Apr. 2003
Beiträge
4.481
Wer kennt das spiel craps??

ich wollte mal das spiel craps, mit C++ programmieren. alles voll logisch, und ist durchdacht. für diejenigen die das Spiel nicht kennen, hier eine kleine Anleitung:

Man würfelt mit 2 würfeln.
wenn man im ersten wurf, eine 7 oder eine 11 gewürfelt hat, hat man gewonnen.
falls man eine 2 , 3 oder eine 12 würfelt, hat man verloren.
alle anderen zahlen muss man sich merken. diese zahl nennen wir mal playerspoint. danach würfelt man solange, bis man diesen playerspoint nochmal würfelt, und man verliert, bis man eine 7 würfelt. kapisch??:)


eigentlich ganz simpel. ich wollte dies via c++ simulieren, habe auch einen prog darüber geschrieben, aber es funktioniert nicht.:mad:

es muss ein einfacher blöder fehler sein, wie allzuoft, aber ich habe es nicht gefunden. rein vom logischen Schema her, stimmt alles.

siehe:

#include <iostream>
#include <math.h>
#include <stdio.h>
#include <ctime>
using std::cout;
using std::cin;
using std::endl;

int main()
{

int wuerfel1,wuerfel2,runde,playerspoint, zahl, zahl1;
int spielgewonnenbeim[21];
for(int zaehler=0; zaehler<=20; zaehler++)
spielgewonnenbeim[zaehler]=0;
bool spielaus=false;
bool playerwins=false;
zahl1=0;
zahl=0;

for(int durchlauf=1; durchlauf<=1000; durchlauf++)
{
srand(time(0));
wuerfel1=0;
wuerfel2=0;
runde=1;
playerspoint=0;
spielaus=false;
playerwins=false;
while(!spielaus)
{
wuerfel1 = 1 + (rand() % (6-1+1));
wuerfel2 = 1 + (rand() % (6-1+1));

if(runde==1 && (wuerfel1+wuerfel2==7 || wuerfel1+wuerfel2==11))
{
spielaus=true;
playerwins=true;
}
if(runde==1 && (wuerfel1+wuerfel2==2 || wuerfel1+wuerfel2==3 || wuerfel1+wuerfel2==12))
{
spielaus=true;
playerwins=false;
}
if(runde==1 && !spielaus)
{
playerspoint=wuerfel1+wuerfel2;
}
if(runde>1)
{
if(wuerfel1+wuerfel2==7)
{
spielaus=true;
playerwins=false;
}
if(wuerfel1+wuerfel2==playerspoint)
{
spielaus=true;
playerwins=true;
}
}
runde++;
}
if(playerwins)
{
zahl=zahl+1;
}
else
{
zahl1=zahl1+1;
//cout << zahl1;
}
}
cout << "Spieler hat " << zahl <<" mal gewonnen." << endl;
cout << "Spieler hat " << zahl1<<" mal verloren." << endl;

}



habt ihr einen rat??wäre für jeden rat, egal wie klein oder groß dankbar.

mfg BOdy
 
Hallo BodyLove,

nimm mal das srand(time(0)); aus der for-Schleife raus und setzt es davor. Durch die extrem schnellen Prozessoren heute, ist die Initialzahl bei deinem Programm immer die gleiche und deshalb kommt es zum immer gleichen Würfelergebnis in jedem der 1000 Durchläufe.

Dein Programm sollte wie folgt aussehen:

Code:
#include <iostream.h>
#include <math.h>
#include <stdio.h>
#include <ctime.h>
using std::cout;
using std::cin;
using std::endl;

void main(void)
{

	int wuerfel1,wuerfel2,runde,playerspoint, zahl, zahl1;
	int spielgewonnenbeim[21];
	
	for(int zaehler=0; zaehler<=20; zaehler++) {
		spielgewonnenbeim[zaehler]=0; }
		
	bool spielaus=false, playerwins=false;
	zahl1 = zahl = 0;

	srand(time(0));
	for(int durchlauf=1; durchlauf <= 1000; durchlauf++)
	{
		wuerfel1 = wuerfel2 = 0;
		runde = 1;
		playerspoint = 0;
		spielaus = playerwins = false;
		
		while(!spielaus)
		{
			wuerfel1 = 1 + (rand() % (6-1+1));
			wuerfel2 = 1 + (rand() % (6-1+1));

			if(runde == 1 && ((wuerfel1 + wuerfel2) == 7 || (wuerfel1 + wuerfel2) == 11)) {
				spielaus = playerwins = true;
			}
			
			if(runde == 1 && ((wuerfel1 + wuerfel2) == 2 || (wuerfel1 + wuerfel2) == 3 || (wuerfel1 + wuerfel2) == 12)) {
				spielaus=true;
				playerwins=false;
			}
	
			if(runde == 1 && !spielaus) {
				playerspoint = (wuerfel1 + wuerfel2);
			}
	
			if(runde > 1)
			{
				if((wuerfel1 + wuerfel2) == 7) {
					spielaus=true;
					playerwins=false;
				}
				else if((wuerfel1 + wuerfel2) == playerspoint) {
					spielaus = playerwins = true;
				}
			}
			runde++;
		}

		if(playerwins) {
			zahl += 1;
		}
		else {
			zahl1 += 1;
		}
	}
	
	cout << "Spieler hat " << zahl  << " mal gewonnen." << endl;
	cout << "Spieler hat " << zahl1 << " mal verloren." << endl;
}


Ciao
 
nein, tatsache, mein gott, es lag nur an dem schrott. da denkt man, neues system ist von vorteil, und nun das. das hat mich 4 std meines lebens gekostet. mein gott, eine blamage.:watt:

danke dir s.giny. wär wirklich nicht darauf gekommen. hatte eigentlich gedacht, dass bei der initialisierung, die werte nicht mehr auf null gesetzt sind, und deswegen alle gleich bleiben.

danke. ciao
 
Zurück
Oben