Karten mischen
-
Hallo!
Um die Programmiersprache C++ zu erlernen versuche ich zur Zeit begleitend zu den Vorlesungen an der Uni ein kleines Spiel zu programmieren.
Ich habe eine Klasse 'Karte' erzeugt und daraus 84 Objekte gebildet. Diese Objekte liegen in einem Array in sortierter Form vor, da sie so erzeugt wurden und auch so erzeugt werden sollen.
--- 1 ---
Ich habe mir einige Gedanken dazu gemacht, wie ich den Kartenstapel mischen kann. Bin aber dann eher Züfallig auf den Befehl random_shuffle der STL gestoßen. Dieser Befehl leistet meineserachtens nach ganau das, wonach ich suche. Nun versuche ich schon seit einigen Stunden das Array zu mischen. Dummerweise schaffe ich es nicht, denn der Compiler (MS VC++ 6.0) liefert immer Fehler.
Zuerst habe ich die STL Header aus dem Netz geladen und versucht die algo.h zu inkludieren. Ich erhalte aber 102 Fehler, obwohl ich nur das Headerfile inkludiere.
Nach weiteren Recherchen habe ich herausgefunden, daß die STL schon in VC++ enthalten ist und den Header <algorithm> inkludiert. Die Funktion versuche ich wie folgend aufzurufen: std::random_shuffle(start, end) leider mit dem Ergebnis hier:
error C2039: 'random_shuffle' : Ist kein Element von 'std'--- 2 ---
Die Spielkarten werden selbstverständlich auch irgendwann an Spieler verteilt. Falls aber nun beim geben der Kartenstapel ausgeht, muss neu gemischt werden. Dabei sollen aber nur die Karten gemischt werden, die bereits ausgespielt wurden. Nicht die, die sich noch in der Hand der Spieler befinden. Wie kann ich das ein- und auschecken einer Karte verwirklichen? Ich konnte leider noch nicht experimentieren, tendiere aber dazu die Karten in zwei Stacks (Deck und Gespielt) zu verpacken. Die STL bietet da ja auch eine Lösung.
Kann ich dann auch nur die Mitgleider des Stacks (Gespielt) mischen?
Vielen Dank im vorraus,
Stefan Böhland
-
Dein 'Array' sollte auch ein STL Container sein (vector,list etc.).
und evtl. hilft dir wenn du using namespace std; unter die Header hinzufügst...
Devil
-
mal eben zusammengeklickt..
ohne gewähr, da morgens ..#include <iostream> #include <algorithm> #include <functional> #include <ctime> using namespace std ; int main() { const int SIZE = 8 ; int Numbers[SIZE]; Numbers[0] = 4 ; Numbers[1] = 10; Numbers[2] = 70 ; Numbers[3] = 30 ; Numbers[4] = 10; Numbers[5] = 69 ; Numbers[6] = 96 ; Numbers[7] = 100; //damit immer unterschiedlich, noch eingefügt und eingerückt long sek; time (&sek); int rateZahl=0 ; srand (sek); cout << "Vor random_shuffle\n" << endl ; cout << "Numbers { " ; for(int i = 0; i < SIZE; i++) cout << Numbers [i] << " " ; cout << " }\n" << endl ; random_shuffle(Numbers, Numbers+SIZE) ; cout << "Nach random_shuffle\n" << endl ; cout << "Numbers { " ; for(i = 0; i < SIZE; i++) cout << Numbers [i] << " " ; cout << " }\n" << endl ; }