Ich habe diesen Artikel über Qiita gefunden und BlackJack mit Ruby erstellt. Abschlussprüfungen von Anfängern sollten "Blackjack" | Qiita entwickeln
Mein Eindruck ist, dass ich gerade ein einfaches Spiel gemacht habe, aber es hat viel Spaß gemacht. Nachdem ich versucht hatte, BlackJack zu machen, hatte ich das Gefühl, ich könnte verschiedene andere Dinge als Spiele machen, also denke ich darüber nach, zu spielen, während ich den Code von BlackJack ein wenig mehr ändere und dann darüber nachdenke, was ich als nächstes machen soll.
Der gesamte Code ist auf Github veröffentlicht, sodass Sie ihn hier überprüfen können BlackJack Ruby | Ryutaro - Github
Die Regeln für Blackjack wurden basierend auf den im Artikel hier beschriebenen Regeln erstellt.
- Die erste Karte ist 52. Stellen Sie sicher, dass beim Zeichnen keine doppelten Karten vorhanden sind
- Zwei Spieler und Dealer. Spieler laufen, Händler laufen automatisch
- Zu Beginn der Ausführung ziehen der Spieler und der Dealer jeweils zwei Karten. Die gezogene Karte wird auf dem Bildschirm angezeigt. Kennen Sie jedoch nicht die zweite Karte des Händlers
- Danach zieht der Spieler zuerst die Karte. Wenn die Anzahl der Spieler 21 überschreitet, endet das Spiel an diesem Punkt
- Spieler können jedes Mal, wenn sie eine Karte ziehen, die nächste Karte ziehen
- Sobald der Spieler das Zeichnen beendet hat, zieht der Dealer weiter, bis seine Hand 17 oder höher ist.
- Ein Spiel, bei dem der Spieler und der Dealer mit dem Zeichnen fertig sind. Derjenige, der näher an 21 ist, gewinnt
- J, Q und K werden als 10 behandelt --A wird vorerst nur als "1" behandelt. Nicht auf "11" stellen
- Keine Verdoppelung, keine Trennung, keine Kapitulation, keine anderen Sonderregeln
#
class Card
#Vorbereitete Klassen Wir haben die folgenden 6 Klassen erstellt. Die Rolle jeder Klasse ist wie folgt. Eine Klasse, die die Kartennummer und Markierungen wie Diamanten und Herzen in einem Array vorbereitet. Sie erbt die Kartenklasse, die aus den vorbereiteten Karten ein Deck erstellt und diese mischt.
class Deck < Card
#Eine Klasse, die eine gemeinsame Verarbeitung in der Superklasse des Spielers und des Dealers durchführt
class PlayerBase
#Es erbt PlayerBase, wodurch eine spielerspezifische Verarbeitung erstellt wird.
class Player < PlayerBase
#Es erbt PlayerBase, wodurch ein Prozess für Händler erstellt wird.
class Dealer < PlayerBase
#Eine Klasse, die die für den Fortschritt des Spiels erforderliche Verarbeitung und Daten wie Hände und Decks enthält
class BlackJack
Da es viele Prozesse gab, die Spielern und Dealern gemeinsam waren, ermöglichte die Erstellung einer Superklasse namens "PlayerBase" die Wiederverwendung der Methoden, und ich denke, dass es einfach war, fortzufahren.
Ich war auch darüber besorgt und googelte viele Male Dinge wie "Ruby Instance Method Class Class Method Difference".
Infolgedessen habe ich mit einem leicht abstrakten Urteil entschieden, dass "im Grunde genommen mit einer Instanzmethode erstellt wird, und wenn Sie der Meinung sind, dass die Verwendung mit einer Instanzmethode etwas schwierig ist, machen wir sie zu einer Klassenmethode".
** Klassenmethode ** Beispiel
class Card
class << self
def numbers
no = [1, 2, 3, 4, 5, 6, 7 ,8 ,9 ,10, 11, 12, 13]
end
def suit
suit = ["Diamant", "Herz", "Verein", "Spaten"]
end
end
end
** Instanzmethode ** Beispiel
class PlayerBase
def create_hand(deck)
deck.pop(2)
end
# .
# .
# .
Der Datenspeicherort ist der problematischste Ort. Zuerst dachte ich: "Weil es die Hand eines Spielers ist, lassen Sie es uns in der Player-Klasse verwalten, und weil es die Hand eines Dealers ist, lassen Sie es uns in der Dealer-Klasse verwalten. Es ist ein gemeinsames Deck, also eine PlayerBase-Klasse." Da zu diesem Zeitpunkt viele problematische Dinge wie das Erstellen von zwei Decks auftraten, wurde beschlossen, alle Daten in der BlackJack-Klasse beizubehalten.
Ich werde einen weiteren Artikel über den detaillierten Code schreiben. Diesmal schrieb ich meine Eindrücke und Nöte auf.
Recommended Posts