Commencé à intégrer les règle d'écarté

This commit is contained in:
julien committed 2026-10-05 22:43:11 +02:00
1 parent 9e942a3db0
commit 3c7ad236fc
2 files changed
+71 -53

No files matched your search

+71 -53
View File
@@ -8,8 +8,8 @@ class Card
@suit = suit
end
def display
puts "#{@value} of #{@suit}"
def to_s
"#{@value} of #{@suit}"
end
def strength
@@ -17,13 +17,13 @@ class Card
@value.to_i
else
case @value
when "jack"
11
when "queen"
12
when "king"
13
when "ace"
11
when "jack"
12
when "queen"
13
when "king"
14
end
end
@@ -35,7 +35,7 @@ class Deck
def initialize
@cards = []
values = ["7", "8", "9", "10", "jack", "queen", "king", "ace"]
values = ["7", "8", "9", "10", "ace", "jack", "queen", "king"]
suits = ["hearts", "diamonds", "clubs", "spades"]
suits.each do |suit|
@@ -55,7 +55,7 @@ class Deck
end
class Player
attr_reader :player_name, :score
attr_reader :player_name, :hand, :score
def initialize(player_name)
@hand = []
@@ -67,12 +67,6 @@ class Player
@hand << card
end
def display_hand
@hand.each do |card|
card.display
end
end
def play
@hand.pop
end
@@ -83,28 +77,59 @@ class Player
end
class Game
attr_reader :player1, :player2, :round_winner
attr_reader :player1, :player2, :dealer, :non_dealer, :upcard, :trump_suit, :round_winner
def initialize(player_name1, player_name2)
@deck = Deck.new
@player1 = Player.new(player_name1)
@player2 = Player.new(player_name2)
@dealer = nil
@non_dealer = nil
@upcard = nil
@trump_suit = nil
@round_winner = nil
end
def determine_dealer
@deck.shuffle
while @dealer.nil?
card1 = @deck.cards[rand(2..30) -1]
card2 = @deck.cards[rand(2..30) -1]
if card1.strength > card2.strength
@dealer = @player1
@non_dealer = @player2
elsif card2.strength > card1.strength
@dealer = @player2
@non_dealer = @player1
end
end
end
def change_dealer
old_dealer = @dealer
@dealer = @non_dealer
@non_dealer = old_dealer
end
def deal
@deck.shuffle
(1..16).each do
@player1.receive(@deck.draw)
@player2.receive(@deck.draw)
5.times do
@non_dealer.receive(@deck.draw)
@dealer.receive(@deck.draw)
end
@upcard = @deck.draw
@trump_suit = @upcard.suit
end
def stock
@deck.cards
end
def play_round
card1 = @player1.play
card2 = @player2.play
card1.display
card2.display
puts card1
puts card2
if card1.strength > card2.strength
@round_winner = @player1
elsif card1.strength < card2.strength
@@ -119,7 +144,7 @@ class Game
end
def play
(1..16).each do
5.times do
play_round
end
end
@@ -135,37 +160,30 @@ class Game
end
end
# Card
###############################################################################
# Tests
# card = Card.new("king", "hearts")
# puts card.value
# puts card.suit
# card.display
# puts card.strength
# Deck
# deck = Deck.new
# deck.shuffle
# card = deck.draw
# card.display
# Game
game = Game.new("Bob", "Alice")
# Instance du jeu
game = Game.new("Alice", "Bob")
game.determine_dealer
puts "The dealer is #{game.dealer.player_name}."
puts
game.deal
puts "Player 1 :"
game.player1.display_hand
puts "The stock has #{game.stock.length} cards."
game.change_dealer
puts "The dealer is #{game.dealer.player_name}."
puts
puts "Player 2 :"
game.player2.display_hand
puts
game.play
puts
winner = game.game_winner
if winner
puts winner.player_name
else
puts "Nobody wins"
end
game.deal
puts "The stock has #{game.stock.length} cards."
# Mise en place du jeu
# puts "#{game.player1.player_name} has :"
# puts
# puts "#{game.player2.player_name} has :"
# puts game.player2.hand
# puts
# puts "Upcard is #{game.upcard} so the trump suit is #{game.trump_suit}."
# puts
# puts "The stock has #{game.stock.length} cards :"
# puts
# puts game.stock