diff --git a/ecarte_traditionnel.pdf b/ecarte_traditionnel.pdf new file mode 100644 index 0000000..7201a18 Binary files /dev/null and b/ecarte_traditionnel.pdf differ diff --git a/script.rb b/script.rb index 750fc13..f8dd5a5 100644 --- a/script.rb +++ b/script.rb @@ -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