000
29.03.2004, 16:55 Uhr
Fraenky
|
hi Leute! ich habe ein Probelm, denn ich bin wahrscheinlich zu doof, einen Sieger zu ermitteln. Also es wird gewürfelt und wer die Zahl richtig geraten hat, soll gewonnen haben; dazu gibt die Klasse Spiel mit der Funktion gewonnen():
C++: |
int CSpiel::gewonnen(int zahl_eing_m, int zahl_eing_c, int zzahl) { mzahl=zahl_eing_m; czahl=zahl_eing_c; int x; if(mzahl == zzahl) { // Mensch hat gewonnen x=1; } if(czahl == zzahl) { // Computer hat gewonnen x=2; } if(mzahl != zzahl && czahl != zzahl) { // Keiner hat gewonnen x=0; } return x; };
|
es werden also immer verschiedene x Werte zurückgeliefert, je nachdem wer gewonnen hat.. Mensch x=1, PC x=2, Keiner x=0
im Hauptprogramm wird dann per for Schleife, welche spieler[anzahl] durchläuft, ermittlet, wer gewonnen hat:
C++: |
for(i=0; i<anzahl; i++) { zahl_eing_m[i]=spieler[i].returnZahl(); sname[i]=spieler[i].returnName(); ix=Spiel[i].gewonnen(zahl_eing_m[i], zahl_eing_c, zzahl);
iy=ix; while(iy>0) { if(ix == 2)//wenn x gleich 1 ist hat der Computer gewonnen und die Schleife wird abgebrochen.. { cout << " Der Computer hat gewonnen!"; break; } if(ix == 1)//wenn x gleich 1 ist, hat ein Mensch gewonnen { cout << " " << sname[i]; cout << " hat gewonnen!" << endl; } if(ix == 0) // Keiner hat gewonnen { cout << " Keiner hat gewonnen!" << endl; } }//while }// for
|
so wenn aber zB der 1. Spieler gewonnen hat, so steht dort: Spieler 1 hat gewonnen! und dann wird aber die For Schleife weiter durchlaufen und wenn die beiden anderen (ich geh jetzt erstmal für 3 Spieler aus..) nicht gewonnen haben, steht dort zusätzlich Keiner hat gewonnen. Ich möchte aber nur das dort steht wer gewonnen hat und nicht wer nicht gewonnen hat.. Und wenn keiner gewonnen hat soll die Meldung nur einmal erschein und nicht spieler[anzahl] mal (hier 3..) also nur es hat der und der gewonnen.. Hab schon alles mögliche ausprobiert, aber irgendwie klappt nichts so wie ich es mir vorgestellt hab.. (ich dacht daran noch einen Wert in der for Schleife zu belegen: if(ix == 1) { //Mensch.. iy=-1; } und dann nach der for Schleife: if(iy == 0) { //keiner hat gewonnen.. } aber wenn der 2te Spieler gewonnen hat, wird die For schleife ja nochmal durchlaufen und wenn der 3te Spieler nicht gewonnen hat wird ja iy wieder zu Null und dann steht dort wieder Keiner hat gewonnen..)
Hoffe das ihr mich verstanden habt. Ist doch nur ein Logikfehler im Denken oder nicht?? Ich kanns mir irgendwie nicht vorstellen, wei ich die ganzen if Anweisungen platzieren soll und welche Variablen ich vergeben soll...
THX!!
MfG Fraenky -- Welcome to the real World.
www.fraenkysweb.de Dieser Post wurde am 29.03.2004 um 16:56 Uhr von Fraenky editiert. |