Kartenverteilung

Home
Pro-Versionen
Windows Vista
Windows xp
Verschiedenes
Router
Kein Windows
Netzspiel
Mitspielerbilder
Lizenz-Probleme
Kartenverteilung
Freischalt-Code
Firewall
Alte Programme

Fragen und Antworten zur Kartenverteilung 

Es kommt immer wieder zu den gleichen Kartenverteilungen! Ist es nicht möglich, das Mischen der Karten anders zu gestalten? So ist es auf Dauer langweilig! 
Wahrscheinlich besitzen Sie einen uralten PC, der den Sprung ins neue Jahrtausend nicht geschafft hat und das Datum falsch anzeigt. Da das Mischen über einen Uhrzeit/Datum-gesteuerten Zufallsgenerator erfolgt, ergibt sich bei diesen alten PCs das von Ihnen beschriebene Problem. Abhilfe? Für manche PCs gibt es Bios-Updates, aber meistens hilft nur Ausmustern ... 

Seit vielen Jahren bin ich passionierter und wie ich glaube auch ganz guter Schafkopfer. Doch wie ist es möglich, dass die Anzahl der Laufenden in den Rufspielen unvergleichlich höher liegt als im wirklichen Spiel. Auch nehme ich wahr, dass ich überproportional viele Asse bekomme. Auf jeden Fall laufen die Karten nicht so wie am Schafkopftisch. 
Sie Glücklicher! 

Schade, dass Ihr Spiel zu einseitig programmiert ist und meist nur der Computer gewinnt. Am Anfang habe ich ja noch die Möglichkeit Spiele zu bekommen, aber das hört sofort auf, wenn die PcSpieler nach einer gewissen Zeit verlieren. Dann bekommt man kein einziges vernünftiges Spiel mehr. Dies habe ich bei offenen Spiel genau verfolgen können. 
Das Programm mischt nach folgendem Algorithmus: 
Zu Beginn einer Spielserie wird ein Zufallsgenerator über die Systemzeit des PC initialisiert. Danach nimmt das Mischprogramm 10000 mal 2 zufällige Karten aus dem Kartenstapel und vertauscht sie. Dann werden die Karten reihum verteilt. 
Wer es nicht glaubt, oder wer es sehen möchte, darf uns besuchen und die Prozedur am Bildschirm verfolgen ...
 
Ab und an haben wir eine heftige Diskusion bei uns. Es gibt etliche Leute bei uns (Skatklopper), die nicht mehr einladen, weil man dann nur schlechte Listen erspielt, während man als Mitspieler immer die guten Listen hat.
Was ist dran an der Sache ?
Natürlich ist nichts dran, und ich bin es jetzt leid, immer wieder zu erklären, wie gemischt wird und wie die Karten verteilt werden. Deshalb ist jetzt hier der Programm-Code (in C) abgedruckt:

 


#define MIX    10000 // Mischungen
#define KMAX      32 // Kartenanzahl
#define SPANZ      3 // Spieleranzahl
#define HAND      10 // Karten pro Spieler

// Der Kartenstapel (0 = Rückseite)
char szKarte[ KMAX + 1 ][ 3 ];

// Die Karten der Spieler -> 3 mal 10 (Index 0 ist unbenutzt)
char szBlatt[ SPANZ + 1 ][ HAND + 1 ][ 3 ];

int Zufall( int max )

// liefert eine Zufallszahl zwischen 1 und max
{
    int i;

    i = rand( ); // generates a pseudorandom number
    i = i - ( ( i / max ) * max ) + 1; 
    return i; 
}

void Mischen( void )

// mischt und verteilt die Karen
{
    char szMischPuffer[ 3 ]; 
    int i, j, k;

    if( !bWiederholen // Karten des letzten Spiels benutzen

     && !bImSpielUnterbrochen // geladene Karten benutzen

     && ( nSpielArt != MITSPIELEN ) ) // Bekommt Karten übers Netz
    {
        for( k = 0; k < MIX; ++k )

        // 10.000 mal zwei Karten aus dem Kartenstapel nehmen

        // und tauschen
        {
            i = Zufall( KMAX ); 
            j = Zufall( KMAX ); 
            strcpy( szMischPuffer, szKarte[ i ] ); 
            strcpy( szKarte[ i ], szKarte[ j ] ); 
            strcpy( szKarte[ j ], szMischPuffer ); 
        }
    }
    i = j = 1;
    if( !bImSpielUnterbrochen //  da sind sie schon verteilt

     || ( nSpielArt == MITSPIELEN ) ) // kommen übers Netz
    {
        while( j <= HAND )

        // zehn mal
        {
            for( k = 1; k <= SPANZ; ++k )

            // reihum jedem eine Karte geben
            {
                strcpy( szBlatt[ k ][ j ], szKarte[ i ] ); 
                ++i; // nächste Karte
            }
            ++j; 
        }

        // Karte 31 und 32 in den Skat
        strcpy( szOrigSkat[ 0 ], szKarte[ KMAX - 1 ] );
        strcpy( szOrigSkat[ 1 ], szKarte[ KMAX ] );
    }
}

 
Zuletzt bearbeitet: 04.06.2008