J'ai trouvé cet article sur Qiita, j'ai donc créé BlackJack avec Ruby. Les examens de fin d'études des débutants devraient développer le "Blackjack" | Qiita
J'ai l'impression que je viens de faire un jeu simple, mais c'était très amusant. Après avoir essayé de faire BlackJack, j'avais l'impression que je pouvais faire diverses choses autres que des jeux, alors je pense à jouer tout en changeant un peu plus le code de BlackJack et en réfléchissant à ce que je devrais faire ensuite.
Tout le code est affiché sur Github afin que vous puissiez le vérifier ici BlackJack Ruby | Ryutaro - Github
Les règles du blackjack ont été créées sur la base des règles décrites dans l'article ici.
--La carte initiale est 52. Assurez-vous qu'il n'y a pas de cartes en double lors du dessin --Deux joueurs et revendeurs. Les joueurs courent, les croupiers courent automatiquement
- Au début de l'exécution, le joueur et le croupier tirent chacun deux cartes. La carte dessinée s'affiche à l'écran. Cependant, je ne connais pas la deuxième carte du croupier
- Après cela, le joueur pioche la carte en premier. Rafale si le nombre de joueurs dépasse 21, le jeu se termine à ce point
- Les joueurs peuvent choisir de piocher la carte suivante à chaque fois qu'ils tirent une carte
- Une fois que le joueur a fini de dessiner, le croupier continuera à dessiner jusqu'à ce que sa main atteigne 17 ou plus.
- Un jeu où le joueur et le croupier finissent de dessiner. Le plus proche de 21 victoires --J, Q et K sont traités comme 10 --A est traité uniquement comme "1" pour le moment. Ne pas régler sur "11"
- Pas de double, pas de scission, pas de reddition, pas d'autres règles spéciales
--A propos de la classe à préparer
J'ai créé les 6 classes suivantes. Le rôle de chaque classe est le suivant.
#Une classe qui prépare les numéros de cartes et les marques telles que les diamants et les cœurs dans un tableau
class Card
#Il hérite de la classe Card, une classe qui crée un deck à partir des cartes préparées et le mélange.
class Deck < Card
#Une classe qui effectue un traitement commun dans la super classe du joueur et du croupier
class PlayerBase
#Il hérite de PlayerBase, qui crée un traitement spécifique au joueur.
class Player < PlayerBase
#Il hérite de PlayerBase, qui crée un processus dédié aux concessionnaires.
class Dealer < PlayerBase
#Une classe qui contient le traitement nécessaire à la progression du jeu et des données telles que les mains et les decks
class BlackJack
Comme il y avait de nombreux processus communs entre les joueurs et les concessionnaires, la création d'une super classe appelée PlayerBase
a permis de réutiliser les méthodes, et je pense que c'était facile de procéder.
J'étais inquiet à ce sujet aussi et j'ai recherché plusieurs fois des choses comme "la différence de méthode de classe de méthode d'instance ruby".
En conséquence, j'ai décidé avec un jugement légèrement abstrait que "créer essentiellement avec une méthode d'instance, et si vous sentez que c'est un peu difficile à utiliser avec une méthode d'instance, faisons-en une méthode de classe".
** Méthode de classe ** Exemple
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", "cœur", "club", "bêche"]
end
end
end
** Méthode d'instance ** Exemple
class PlayerBase
def create_hand(deck)
deck.pop(2)
end
# .
# .
# .
L'emplacement de stockage des données est l'endroit le plus gênant. Au début, j'ai pensé: "Parce que c'est une main de joueur, c'est une classe de joueur, et parce que c'est une main de croupier, c'est une classe de croupier. C'est une classe de PlayerBase parce que c'est un deck commun." Comme il y avait beaucoup de choses gênantes telles que la création de deux decks à ce moment-là, il a été décidé de conserver toutes les données dans la classe BlackJack.
J'écrirai un autre article sur le code détaillé. Cette fois, j'ai noté mes impressions et mes difficultés.
Recommended Posts