Mastermind Programm (Farbüberprüfung schlägt immer fehl!)
-
Hi Leute!
Bin neu in der Programmierung und bin gerade dabei ein kleines Eingabespiel zu machen: Der Computer generiert 4 Farben und man muss versuchen diese Kombi herrauszufinden ....ich habe mir nach der Generierung noch eine Schleife eingebaut, die mir zur Probe die 4 Farben nach Programmstart noch einmal ausgibt.
Das Problem dabei ist, dass er manchmal nur eine Farbe, manchmal 3 Farben oder auch überhaupt keine Farben ausgibt....Bitte um Hilfe
Code:
#include <iostream> #include <string> #include <cmath> #include <cstdlib> #include <ctime> using namespace std; const int anzahlSteine = 4; int main() { string stein[anzahlSteine]; string geraten[anzahlSteine]; int treffposundfarbe = 0; int treffarbe = 0; cout << endl; cout << "*********Wilkommen beim MASTERMIND!!!!**********" << endl; cout << "******** Schaffst du es ,4 Farben zu *********" << endl; cout << "******* erraten????????? ********" << endl; cout << endl; time_t t; // Zufallsgenerator aktivieren srand ( time(&t) ); int n=0; for (int i = 0; i < anzahlSteine; i++) // zu ratende Kombination { n = rand()%6 +1; switch(n) { case 1: stein[i] = "weiss"; break; case 2: stein[i] = "schwarz"; break; case3: stein[i] = "blau"; break; case4: stein[i] = "rot"; break; case5: stein[i] = "gelb"; break; case6: stein[i] = "gruen"; break; } } for (int i = 0; i<anzahlSteine;i++) //Überprüfung der generierten Farben! { cout << stein[i] << endl; }Wäre nett, wenn sich das jemand ansieht ....den ganzen Code hab ich hier nicht gepostet(wusste nicht ob das hier auch gewünscht wird
)LG
-
Sind die fehlenden Leerzeichen bei "case3" bis "case6" eigentlich Absicht? Wenn ja, solltest du dort jeweils hinter dem "case" ein Leerzeichen einfügen.
(was du dort hast, sind keine case-Marken, die von switch() angesprungen werden, sondern Anweisungs-Label für goto).PS: Ich würde auf das switch() verzichten

string farben[] = { "weiß", "schwarz", "blau", "rot", "gelb", "grün" }; ... for (int i = 0; i < anzahlSteine; i++) // zu ratende Kombination { n = rand()%6; stein[i] = farben[n]; }
-
Omg!.....ja das war der Fehler....ich hab anscheinend beim schreiben das space vergessen....jez funzt es nämlich .....sry aber ich war so verbissen irgendwo anders den Fehler zu finden, dass ich da nicht geschaut habe ...aber naja beim nächsten mal mach ichs nicht mehr! ...Danke

PS:Danke für den Tipp mit switch() ..is doch viel weniger schreiberei

-
H4rdstyl3 schrieb:
Omg!.....ja das war der Fehler....ich hab anscheinend beim schreiben das space vergessen
Da sieht man den Vorteil von vernünftigem Syntax-Highlighting - bei deinem Beitrag dort oben fällt doch recht schnell ins Auge, daß "case 1" in blau geschrieben wurde, "case3" aber nicht

PS:Danke für den Tipp mit switch() ..is doch viel weniger schreiberei

Und als Ergänzung: Wenn du dieses Feld weiterverwenden und auswerten willst, solltest du lieber mit den int-Werten arbeiten als mit den Strings.