2016-04-27 3 views
0

Also habe ich einen Beispielcode, um ein Kartenspiel für ein Mini-Poker-Spiel in zu erstellen. Aber ich verstehe nicht, wie die Anzüge und Gesichter bestimmt sind. Warum haben diese Arrays 2 Dimensionen? Ich weiß, dass [9] und [6] sind die Spalten des Arrays, aber ich verstehe nicht den Zweck von ihnen.Ein Pokerkartenspiel in C. Bitte erklären Sie Anzüge [4] [9] und Gesichter [13] [6]?

char suits[4][9]= {"Hearts","Diamonds","Clubs","Spades"}; 
char faces[13][6]= {"Ace","2","3","4","5","6","7","8","9", "10","Jack", 
       "Queen","King"}; 
+1

9 und 6 sind nur die (maximal) String Größen (unter Berücksichtigung +1 für den String-Terminator). 4 und 13 sind die Nummern von Anzügen und Rängen. Kann ich empfehlen, etwas aus [dieser Liste guter Bücher auf C] zu wählen (http://stackoverflow.com/q/562303/253056)? –

+0

Denken Sie darüber nach, was die Art von "Hearts" ist, was ist der erklärte Typ von Elementen von 'Suits'? – tobyodavies

+4

Persönlich hätte ich nur 'const char * suits [] = {....};' und eliminiert die Wahrscheinlichkeit, dass jemand einen zu kleinen Wert für die minderwertige Dimension eingibt. Das und ich sehe wenig Grund, jemand würde diese Zeichenfolgen während der Laufzeit des Programms * ändern * müssen. – WhozCraig

Antwort

6

Der erste Satz von eckigen Klammern ist die Anzahl der Elemente im ersten Array, der zweite eckige Klammer ist die maximale Länge des char Arrays (String). Die zweite Klammer in char suits[4][9] hat neun Leerzeichen, um Platz für das Nullzeichen \0 zu ermöglichen, das zum Beenden der Zeichenfolge verwendet wird.

Also das Array tatsächlich sieht wie folgt aus:

char suits[4][9] = { 
    {'H', 'e', 'a', 'r', 't', 's', '\0'}, 
    {'D', 'i', 'a', 'm', 'o', 'n', 'd', 's', '\0'}, 
    {'C', 'l', 'u', 'b', 's', '\0'}, 
    {'S', 'p', 'a', 'd', 'e', 's', '\0'} 
}; 
1

Wenn Sie:

char suits[4][9] 

es bedeutet, dass Ihr Array 4 Zeilen und die string, die in jeder Zeile platziert werden kann eine maximale Länge 9 haben und Subtrahieren der Endung '\0' Zeichen, maximal Länge 8. Ähnlich

,

char faces[13][6] 

bedeutet, dass das Array hat 13 Zeilen und die string, die in jeder Reihe angeordnet werden kann, eine maximale Länge haben 6 und Subtrahieren der Endung '\0' Zeichen, maximale Länge 5.

+0

Sorry, ich habe gerade gesehen, dass du deine Antwort aktualisiert hast, du hast das Nullzeichen nicht erwähnt, als ich meine Antwort gestartet habe. – Sarcoma

Verwandte Themen