Spiel geht bei mir nicht
-
Hallo,
ich habe mal eine Frage! Wir sollten für die Schule ein Programm schreiben "Würfelspiel".....
Das Programm habe ich geschrieben, allerdings habe ich nie ein Gewinner sondern immer unentschieden????Vielleicht könnt Ihr mir ja weiterhelfen
Quellcode
*.h
#ifndef PLAYERH #define PLAYERH class Player { private: int Score; public: void gamble(); int getscore(); }; #endifQuellcode
*.cpp
#include <iostream.h> #include <string.h> #include "Player.h" #include <time.h> void Player::gamble() { time_t t; int augen; int i; srand((unsigned) time(&t)); score=0; for(i=0;i<5;i++) { augen=rand()%6+1; cout<<augen<<','; score=score+augen; } cout<<'Punktestand:'<<score<<endl; } int Player::getscore() { return Score; }; Quellcode #pragma argsused #include "Player.h" #include <conio.h> #include <iostream.h> int main(int argc, char* argv[]) { Player s1,s2; cout<<'erster Spieler'; s1.gamble(); cout<<'zweiter Spieler'; s2.gamble(); if(s1.getscore() > s2.getscore()) { cout<<'erster Spieler gewinnt'; } if(s1.getscore() < s2.getscore()) { cout<<'zweiter Spieler gewinnt'; } if(s1.getscore() == s2.getscore()) { cout<<'unentschieden'; } return 0; }Aufgabenstellung:
Simulation eines Würfelspiels jeder Spieler würfelt 2x und die augen werden aufsummiert.... der die höchste punktzahl hat gewinnt
wir sollten das mit gamble() und getscore() machenDanke schon mal für eure Hilfe....
-
Zuerst einmal pack deinen Code in C/C++ Tags, dann kann man das besser lesen.
Hast du schon mal den Debugger benutzt, d.h. kriegst du immer dieselben Zufallswerte.
Die Initialisierung der Zufallswerte mittels srand solltest du auch nur einmal am Anfang deines Programmes machen (z.B. Anfang der main-Funktion).
Es reicht dafür auch 0 als Parameter zu übergeben:srand((unsigned) time(0));bzw. besser in C++
srand(static_cast<unsigned int>(time(0)));P.S. Du schreibst, daß die Summe von 2 Würfelergebnissen berechnet werden soll, verwendest aber 5 in der Schleife.
-
srand(static_cast<unsigned int>(time(0)));
damit gehts leider auch nicht

sorry hab die aufgabenstellung falsch beschrieben
es wird simuliert, dass jeder spieler 5x würfelt nicht zweimal....
-
Wo hast du "score" deklariert ?
"score" != "Score".
Auf Groß- und Kleinschreibung achten !
Falls ich mich geirrt haben sollte, dann liegt das sicher daran, dass du keine Code-tags verwendet hast....
Grüße
Blue
-
nein ich bekomme immer andere zufallswerte
aber bei player 1 und zwei jeweils die gleichenerster Spieler 5,3,2,4,8 Punktestand 22
zweiter Spieler 5,3,2,4,8 Punktestand 22unentschieden
-
das mit Score
habe ich abgeändert
bei erster und zweiter Spieler habe ich habe ich auch die Hochkomma's (') durch Anführungszeichen (") ersetzt
........
mit code-tags habe ich noch nichts gemacht, das hatten wir in der Schule auch noch nicht gemacht...bin doch noch ein Anfänger
-
es geht bei mir
danke für eure hilfe

-
Code-Tags ist kein C++-Programmier-Konzept sondern eine tolle Funktion dieses Forums.
Damit kannst du deinen C++-Code auch hier im Forum farblich so darstellen wie in den meisten C++-IDEs.
Nehmen wir besipielsweise deinen ersten Post. Da wo dein Code drin steht. Drücke da einmal auf "editieren". Mit "editieren" kannst du vergangene Beiträge nachträglich korrigieren.Unter den Smilies solltest du jetzt den Button "C/C++" sehen.
Wenn du den drückst erscheint folgendes Konstrukt : "[ cpp ][ /cpp ]".
Zwischen den beiden geklammerten Ausdrücken musst du deinen Code einfügen.Dann bekommst du z.B. folgendes:
real Vec::angleRadian(const Vec& a,const Vec& b){ real result; result = acos(dot(a,b)/(magnitude(a)*magnitude(b))); return result; }Grüße
Blue
-
Ich würde mal vermuten, daß der srand()-Aufruf an der falschen Stelle steht - die beiden gamble()-Aufrufe folgen so dicht hintereinander, daß der Zufallsgenerator für beide Spieler mit dem selben Wert initialisiert wird (mit sehr viel Glück und gutem Timing könntest du es schaffen, dort verschiedene Werte zu erhalten ;). srand() benötigst du genau einmal am Start des Programms, danach kann der Zufallsgenerator alleingelassen werden.
Edit:
Blue5teel schrieb:
Drücke da einmal auf "editieren". Mit "editieren" kannst du vergangene Beiträge nachträglich korrigieren.
Er nicht - er ist nur Gast. Aber ich war mal so frei, dort oben die CPP-Tags einzufügen.