"seöbstständige" Methode
-
Hey,
ich bin gerade dabei (zur Übung) ein Programm zu schreiben mit dem man Karten spielen kann.... nur dummerweise habe ich eine Methode entwickelt die es Urkomishc findet da extrem quer zu schiessen -.- .... und ich weiss nicht warum.... ich bastel schon seit Stunden daran rum komme aber nicht dazu den Fehler zu finden
ich hoffe ihr könnt helfen//hier die Klassen class Player; class Card { public: int priority; //Priority ist bei mir der Wert als 8,9,10,J,D,K,A (in Zahlen von 1 - 8) int color; // ich glaube color klärt sich von selbst public: Card(); //der Konstruktor void CardChange(int,int); //um den karten einen Wert zuordnen zu können void getCard(); //zur ausgabe dieser Karte }; class CardSetPoker { Card CardSet[31]; //das sortierte Set (also frisch nach dem erstellen) Card MixedCardSet[31]; //das gemischte Set (beim mischen tritt der Fehler auf public: int CardsRemains; //für das eigentliche Problem nicht wichtig.... gehört aber dennoch zu dem problem oO public: void setCardsRemains(); //damit ich KartRemains auf 31 setzen kann (da ich mit arrays arbeite, also auf einen array mit 32 Feldern zugreifen kann) void ConstructCardSet(); //Dies erstellt das sortierte Kartendeck und klappt fehlerfrei (die Ausgabe klappt) void getSet(); //zur Ausgabe von CardSet void getSetMod(); //zut Ausgabe von MixedCardSet void mixEmUp(); //meine Problemprozedur zum mischen der Karten };und hier die Methode
void CardSetPoker::mixEmUp() { int choicer = 0; int kartenUebrig = 31; int modloubrig = 32; srand (time(NULL)); for(int i = 0; i <= 31; i++) { choicer = rand()%modloubrig; MixedCardSet[i] = CardSet[choicer]; CardSet[choicer] = CardSet[kartenUebrig]; kartenUebrig--; modloubrig--; }; /* habe schon viel mit Ausgaben rumgespielt und kam soweit das ich erkennen konnte das erst beim VERLASSEN der for-Schleife MixedCardSet[i].priority auf 31 gesetzt wird UND das CardsRemains auf eine Randomzahl zwischen 1 und 7 gelegt wird.... beides ist mir unerklärlich. Besonders die Veränderung von CardsRemains , da ich nicht darauf zugreife oO*/ };
-
ein array der Größe 31 hat die indizes 0...30
und jetzt sie dir nochmal deine schleife an...
btw bieten sich für Farbe und Wert enums an...
-
danke oO... Mich ärgert es das ich das nicht selber gefunden habe....
nja denkfehler THX^^ habe jezz einfach die Klassenarrays auf [32] gesetzt.... jetzt wird auch lustiger weise CardsRemains nichtmehr auf einem beliebigen Wert gesetzt.... oO verstehe einer den Compiler.... nochmals vielen Dank
-
sieh dir doch einmal std::random_shuffle an. ist zum mischen von karten wie geeignet.
-
ich wüsste jetzt nicht wie ich diese Funktion benutzen könnte ohne meine Programmidee vollständig zu überdenken...... aber ich danke dir dennoch für den Link...
-
Das ist doch ganz einfach. Wenn wir mal annehmen, dass CardSet bereits bestückt ist.
std::copy(CardSet, CardSet + 31, MixedCardSet); // MixedCardSet füllen std::random_shuffle(MixedCardSet, MixedCardSet + 31); // mischen
-
Braunstein schrieb:
Das ist doch ganz einfach. Wenn wir mal annehmen, dass CardSet bereits bestückt ist.
std::copy(CardSet, CardSet + 31, MixedCardSet); // MixedCardSet füllen std::random_shuffle(MixedCardSet, MixedCardSet + 31); // mischenJud4s schrieb:
...ich bin gerade dabei (zur Übung) ein Programm...