Ajoute les commentaires et la documentation RDoc
This commit is contained in:
1 parent
5cf2d683e7
commit
dbd8c51412
56 files changed
+3601
-17
No files matched your search
@@ -1,3 +1,4 @@
|
||||
# Représente une carte à jouer avec sa valeur et sa couleur.
|
||||
class Card
|
||||
attr_reader :value, :suit
|
||||
|
||||
@@ -6,10 +7,12 @@ class Card
|
||||
@suit = suit
|
||||
end
|
||||
|
||||
# Retourne une représentation de la carte sous forme de string.
|
||||
def to_s
|
||||
"#{@value} of #{@suit}"
|
||||
end
|
||||
|
||||
# Retourne la force de la carte sous forme d'integer.
|
||||
def strength
|
||||
if @value.match?(/\A\d+\z/)
|
||||
@value.to_i
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
require_relative "card"
|
||||
|
||||
# Représente un paquet de cartes et gère son contenu.
|
||||
class Deck
|
||||
attr_reader :cards
|
||||
|
||||
@@ -15,10 +16,12 @@ class Deck
|
||||
end
|
||||
end
|
||||
|
||||
# Mélange les cartes du paquet.
|
||||
def shuffle
|
||||
@cards.shuffle!
|
||||
end
|
||||
|
||||
# Retire et retourne la dernière carte du paquet.
|
||||
def draw
|
||||
@cards.pop
|
||||
end
|
||||
|
||||
+12
-2
@@ -2,6 +2,7 @@ require_relative "deck"
|
||||
require_relative "player"
|
||||
require_relative "terminal_ui"
|
||||
|
||||
# Gère le déroulement et les règles d'une partie d'Écarté.
|
||||
class Game
|
||||
attr_reader :player1, :player2, :dealer, :non_dealer,
|
||||
:upcard, :trump_suit, :trick_winner
|
||||
@@ -18,6 +19,7 @@ class Game
|
||||
@ui = TerminalUI.new
|
||||
end
|
||||
|
||||
# Simule une coupe pour déterminer quel joueur sera le donneur.
|
||||
def determine_dealer
|
||||
@deck.shuffle
|
||||
|
||||
@@ -35,12 +37,14 @@ class Game
|
||||
end
|
||||
end
|
||||
|
||||
# Échange les rôles de donneur et de non-donneur.
|
||||
def change_dealer
|
||||
old_dealer = @dealer
|
||||
@dealer = @non_dealer
|
||||
@non_dealer = old_dealer
|
||||
end
|
||||
|
||||
# Distribue les cartes et pose la retourne.
|
||||
def deal
|
||||
@player1.clear_hand
|
||||
@player2.clear_hand
|
||||
@@ -56,10 +60,12 @@ class Game
|
||||
@trump_suit = @upcard.suit
|
||||
end
|
||||
|
||||
# Retourne les cartes restantes dans le talon.
|
||||
def stock
|
||||
@deck.cards
|
||||
end
|
||||
|
||||
# Vérifie si le coup du second joueur respecte les règles.
|
||||
def valid_follow_card?(follow_player, lead_card, follow_card)
|
||||
if follow_card.suit == lead_card.suit
|
||||
true
|
||||
@@ -70,6 +76,7 @@ class Game
|
||||
end
|
||||
end
|
||||
|
||||
# Joue un pli.
|
||||
def play_trick(lead_player, follow_player)
|
||||
lead_card = @ui.choose_card(lead_player)
|
||||
follow_card = @ui.choose_card(follow_player)
|
||||
@@ -94,10 +101,12 @@ class Game
|
||||
@ui.display_trick_winner(@trick_winner)
|
||||
end
|
||||
|
||||
# Retourne l'autre joueur.
|
||||
def other_player(player)
|
||||
player == @player1 ? @player2 : @player1
|
||||
end
|
||||
|
||||
# Joue une partie.
|
||||
def play
|
||||
lead_player = @non_dealer
|
||||
follow_player = @dealer
|
||||
@@ -105,11 +114,12 @@ class Game
|
||||
5.times do
|
||||
play_trick(lead_player, follow_player)
|
||||
|
||||
lead_player = @trick_winner
|
||||
follow_player = other_player(lead_player)
|
||||
lead_player = @trick_winner
|
||||
follow_player = other_player(lead_player)
|
||||
end
|
||||
end
|
||||
|
||||
# Retourne le joueur ayant le meilleur score.
|
||||
def game_winner
|
||||
if @player1.score > @player2.score
|
||||
@player1
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
# Représente un joueur, sa main et son score.
|
||||
class Player
|
||||
attr_reader :name, :hand, :score
|
||||
|
||||
@@ -7,18 +8,22 @@ class Player
|
||||
@score = 0
|
||||
end
|
||||
|
||||
# Ajoute une carte à la main du joueur.
|
||||
def receive(card)
|
||||
@hand << card
|
||||
end
|
||||
|
||||
# Vide la main du joueur.
|
||||
def clear_hand
|
||||
@hand.clear
|
||||
end
|
||||
|
||||
# Retire une carte de la main du joueur.
|
||||
def play(card)
|
||||
@hand.delete(card)
|
||||
end
|
||||
|
||||
# Ajoute un point au joueur.
|
||||
def add_point
|
||||
@score += 1
|
||||
end
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
# Gère l'affichage et les saisies dans le terminal.
|
||||
class TerminalUI
|
||||
|
||||
# Demande au joueur de choisir une carte et la retourne.
|
||||
def choose_card(player)
|
||||
player.hand.each_with_index do |card, index|
|
||||
puts "#{index + 1}. #{card}"
|
||||
@@ -10,15 +13,18 @@ class TerminalUI
|
||||
player.hand[choice - 1]
|
||||
end
|
||||
|
||||
# Affiche un avertissement si le coup joué ne respecte pas les règles.
|
||||
def display_wrong_card
|
||||
puts "You cannot play this card."
|
||||
end
|
||||
|
||||
# Affiche le joueur ayant remporté le pli.
|
||||
def display_trick_winner(player)
|
||||
puts "#{player.name} wins the trick."
|
||||
puts
|
||||
end
|
||||
|
||||
# Affiche les informations de débogage.
|
||||
def debug_game(game)
|
||||
puts "Dealer: #{game.dealer.name}"
|
||||
puts "Non-dealer: #{game.non_dealer.name}"
|
||||
|
||||
Reference in new issue
Block a user