Zahlenraten mit Multiplayer
-
Hallo Leute,
Ich hab vor kurzem mit C++ Zahlenraten programmiert.
Es ist eine Konsolenanwendung.
Es hat alles super geklappt, aber jetzt wollte ich einen Multiplayermodus einfügen. Das Programm funktioniert auch, aber am Ende werden immer beide Spieler als Gewinner ausgegeben
kann mit da wer helfen???
Würd mich echt freuen, da ich mit diesem Programm schon an meine Grenzen stoße
Und um das schonmal im Voraus zu sagen:
ich kann eigentlich noch NIX
#include "stdafx.h" #include "iostream" #include "windows.h" using namespace std; #pragma comment (lib, "winmm.lib") int Singleplayer (int Level); int Multiplayer (int Level); int WaehleLevel (int Level); int TesteHighscore (int Punkte, int Highscore); int Spieler1; int Spieler2; int Gewinner; int Gewinner2; void ZeigeInfos (); int main () { char Auswahl; int Level = 5; int Highscore = 100; srand (timeGetTime ()); do { cout << "Zahlenraten - Menue" << endl; cout << "-------------------" << endl; cout << "(S)ingleplayer" << endl; cout << "(M)ultiplayer" << endl; cout << "(L)evel waehlen" << endl; cout << "(H)ighscore anzeigen" << endl; cout << "(I)nfo" << endl; cout << "(B)eenden\n\n"; cout << "Auswahl: "; cin >> Auswahl; switch (Auswahl) { case ('s'): case ('S'): { int Punkte; Punkte = Singleplayer (Level); Highscore = TesteHighscore (Punkte, Highscore); } break; case ('m'): case ('M'): { int Punkte; Punkte = Multiplayer (Level); Highscore = TesteHighscore (Punkte, Highscore); } break; case ('l'): case ('L'): { Level = WaehleLevel (Level); } break; case ('h'): case ('H'): { cout << "Der aktuelle Highscore liegt bei "; cout << Highscore << " Punkten\n\n"; } break; case ('i'): case ('I'): { ZeigeInfos (); } break; case ('b'): case ('B'): { cout << "Spiel beendet." << endl; } break; default: { cout << "Falsche Eingabe!\n\n"; } } } while (Auswahl != 'b' && Auswahl != 'B'); cout << "Bis zum nächsten Mal" << endl; return 0; } void ZeigeInfos () { cout << "Zahlenraten V1.1" << endl; cout << "Copyright Andreas Lemburg"; cout << "\n\n"; } int WaehleLevel (int Level) { int NeuerLevel; do { cout << "Aktueller Level: " << Level << endl; cout << "Neuer Level (1 - 10): "; cin >> NeuerLevel; if (NeuerLevel < 1 || NeuerLevel > 10) { cout << "Ungueltiger Level-Wert" << endl; } } while (NeuerLevel < 1 || NeuerLevel > 10); return NeuerLevel; } int Singleplayer (int Level) { int Zufallszahl; int GerateneZahl = 0; int Bereich = Level*10; int Versuche = 0; int Punkte = 0; Zufallszahl = (rand()%Bereich)+1; cout << "\nDie gesuchte Zahl liegt zwischen 1 und "; cout << Bereich << endl; while (GerateneZahl != Zufallszahl) { cout << "Dein Tipp: "; cin >> GerateneZahl; Versuche++; if (GerateneZahl < Zufallszahl) cout << "Die gesuchte Zahl ist groesser" << endl; if (GerateneZahl > Zufallszahl) cout << "Die gesuchte Zahl ist kleiner" << endl; } cout << "\nGeschafft ! " << endl; cout << "Du hast die Zahl nach " << Versuche; cout << " Versuchen erraten !\n\n"; Punkte = Bereich - Versuche + 1; Punkte *= Level; if (Punkte < 0) Punkte = 0; cout << "Punkte: " << Punkte << endl; return Punkte; } int Multiplayer (int Level) { int Zufallszahl; int GerateneZahl = 0; int GerateneZahl2 = 0; int Bereich = Level*10; int Versuche = 0; int Punkte = 0; Zufallszahl = (rand()%Bereich)+1; cout << "\nDie gesuchte Zahl liegt zwischen 1 und "; cout << Bereich << endl; while (GerateneZahl != Zufallszahl) { cout << "Tipp von Spieler1: "; cin >> GerateneZahl; cout << "Tipp von Spieler2: "; cin >> GerateneZahl2; Versuche++; { if (GerateneZahl < Zufallszahl) cout << "Die gesuchte Zahl ist groesser als der Tipp von Spieler1" << endl; if (GerateneZahl > Zufallszahl) cout << "Die gesuchte Zahl ist kleiner als der Tipp von Spieler1" << endl; else if (GerateneZahl = Zufallszahl) goto Gewinner; } { if (GerateneZahl2 < Zufallszahl) cout << "Die gesuchte Zahl ist groesser als der Tipp von Spieler2" << endl; if (GerateneZahl2 > Zufallszahl) cout << "Die gesuchte Zahl ist kleiner als der Tipp von Spieler2" << endl; else if (GerateneZahl2 = Zufallszahl) goto Gewinner2; } } Gewinner: { if (GerateneZahl = Zufallszahl) cout << "Spieler1 hat gewonnen!!!" << endl; cout << "Die Zahl wurde nach " << Versuche; cout << " Versuchen erraten!\n\n"; } Gewinner2: { if (GerateneZahl2 = Zufallszahl) cout << "Spieler2 hat gewonnen!!!" << endl; cout << "Die Zahl wurde nach " << Versuche; cout << " Versuchen erraten!\n\n"; } Punkte = Bereich - Versuche + 1; Punkte *= Level; if (Punkte < 0) Punkte = 0; cout << "Punkte: " << Punkte << endl; return Punkte; } int TesteHighscore (int Punkte, int Highscore) { if (Punkte > Highscore) { cout << "Glueckwunsch. Neuer Highscore !\n\n"; Highscore = Punkte; } else { cout << "Leider kein neuer Highscore\n\n"; } return Highscore; }
-
soll ich vllt nochmal alles kommentieren?
wofür die intecher sind und so?
-
else if (GerateneZahl = Zufallszahl)
Das ist eine Zuweisung, kein Vergleich. Kommt häufiger vor.
Und jedes mal wenn Du Goto benutzt, stribt ein Kätzchen.
-
was muss ich also ändern?

sry das ist neuland für mich^^
-
Das ist eine Zuweisung
if (GerateneZahl = Zufallszahl)das ein Vergleich
if (GerateneZahl == Zufallszahl)Das hast Du an mindestens 4 Stellen falsch gemacht.
-
also mache ich das alles zu == und es geht?
in der singleplayerfunktion hats auch mit = funktioniert...
aber ich versuchs mal xD
-
COOOL

es hat geklappt
thx
-
Kleiner Tip: Mach doch die Variable Zufallszahl als Konstante
und schreibe diese beim Vergleichen links hin.
Dann meckert dir der Compiler die Stellen anconst int Zufallszahl = (rand()%Bereich)+1; // und beim Vergleich: if (Zufallszahl = GerateneZahl) // <-- Mecker vom Compiler
-
Also ich muss ein Programm (Zahlenraten) morgen abgeben könnt ihr mir eines machen bitte.
Ihr dürft nur include =>(iostream, conio.h, time.h), srand(time(0)),cout,cin,if,
while, char antwort, antwort=toupper(_getche()),while (antwort!='N') und natürlich auch noch using namespace std. bittte bitte bitte bitte so schnell wie möglich ich währ euch dankebar!!!!!!!!!!!!!
-
ich bins nochmal könnt ihr dazu noch was schreiben das man 5 versuche (Leben )hat. Bittte Bittte
-
Dieser Thread wurde von Moderator/in Martin Richter aus dem Forum MFC (Visual C++) in das Forum C++ (auch C++0x und C++11) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
hariz17 schrieb:
Also ich muss ein Programm (Zahlenraten) morgen abgeben könnt ihr mir eines machen bitte.
Nein, das ist auch nicht der Sinn von diesem Forum. Und wenn, hättest du dies mit etwas mehr Vorlaufzeit in dem Projekteforum posten müssen (inkl. Nennung eines Betrags, den du bereit bist zu zahlen).
-
hariz17 schrieb:
Also ich muss ein Programm (Zahlenraten) morgen abgeben könnt ihr mir eines machen bitte.
Ihr dürft nur include =>(iostream, conio.h, time.h), srand(time(0)),cout,cin,if,
while, char antwort, antwort=toupper(_getche()),while (antwort!='N') und natürlich auch noch using namespace std. bittte bitte bitte bitte so schnell wie möglich ich währ euch dankebar!!!!!!!!!!!!!
Wie viel bist du bereit zu zahlen?
-
DocShoe schrieb:
hariz17 schrieb:
Also ich muss ein Programm (Zahlenraten) morgen abgeben könnt ihr mir eines machen bitte.
Ihr dürft nur include =>(iostream, conio.h, time.h), srand(time(0)),cout,cin,if,
while, char antwort, antwort=toupper(_getche()),while (antwort!='N') und natürlich auch noch using namespace std. bittte bitte bitte bitte so schnell wie möglich ich währ euch dankebar!!!!!!!!!!!!!
Wie viel bist du bereit zu zahlen?
Wahrscheinlich gar nix mehr, da er heute abgeben muss. Er sitzt vielleicht gerade in der Klasse und erklärt seinem Lehrer, wieso er die Aufgabe nicht lösen konnte. Es sei denn, er hat woanders einen Dummen gefunden, der ihm umsonst die Hausaufgaben macht. Hier hat er ja offensichtlich niemanden gefunden, trotz ausreichender Anzahl an Ausrufezeichen zum Ausdruck der großen Not und konsequenten Verzichts auf Leerzeichen, um dem geneigten Leser kostbare Zeit zu sparen.
