diff --git a/.rubocop.yml b/.rubocop.yml deleted file mode 100644 index 3b64504..0000000 --- a/.rubocop.yml +++ /dev/null @@ -1,2 +0,0 @@ -AllCops: - NewCops: enable diff --git a/Gemfile b/Gemfile deleted file mode 100644 index 32e7af5..0000000 --- a/Gemfile +++ /dev/null @@ -1,5 +0,0 @@ -source "https://rubygems.org" - -group :development do - gem "rubocop", require: false -end diff --git a/Gemfile.lock b/Gemfile.lock deleted file mode 100644 index 9c8fa34..0000000 --- a/Gemfile.lock +++ /dev/null @@ -1,60 +0,0 @@ -GEM - remote: https://rubygems.org/ - specs: - ast (2.4.3) - json (3.0.2) - language_server-protocol (3.17.0.6) - lint_roller (1.1.0) - parallel (2.3.0) - parser (3.3.12.0) - ast (~> 2.4.1) - racc - prism (1.9.0) - racc (1.8.1) - rainbow (3.1.1) - regexp_parser (2.13.1) - rubocop (1.92.0) - json (>= 2.3) - language_server-protocol (~> 3.17.0.2) - lint_roller (~> 1.1.0) - parallel (>= 1.10) - parser (>= 3.3.0.2) - rainbow (>= 2.2.2, < 4.0) - regexp_parser (>= 2.11.3, < 3.0) - rubocop-ast (>= 1.49.0, < 2.0) - ruby-progressbar (~> 1.7) - unicode-display_width (>= 2.4.0, < 4.0) - rubocop-ast (1.50.0) - parser (>= 3.3.7.2) - prism (~> 1.7) - ruby-progressbar (1.13.0) - unicode-display_width (3.3.0) - unicode-emoji (~> 4.3) - unicode-emoji (4.3.0) - -PLATFORMS - ruby - x86_64-linux - -DEPENDENCIES - rubocop - -CHECKSUMS - ast (2.4.3) sha256=954615157c1d6a382bc27d690d973195e79db7f55e9765ac7c481c60bdb4d383 - json (3.0.2) sha256=8e6d7e7b11384c21230430cef90b71f14849a34a1f4452796670f7c981bd19df - language_server-protocol (3.17.0.6) sha256=5ef2c0c138f8267e1bc631d3328347d354f96724b0af22f2c79516120443b7f0 - lint_roller (1.1.0) sha256=2c0c845b632a7d172cb849cc90c1bce937a28c5c8ccccb50dfd46a485003cc87 - parallel (2.3.0) sha256=f75a3e904101ce6a1ccb6b8dc800cbafd42166d83330192438dcf29395167a6f - parser (3.3.12.0) sha256=21a6d7f755d5a24dfbdc6e6b772e4e879a52e7631a88bc5a3a134606052c9828 - prism (1.9.0) sha256=7b530c6a9f92c24300014919c9dcbc055bf4cdf51ec30aed099b06cd6674ef85 - racc (1.8.1) sha256=4a7f6929691dbec8b5209a0b373bc2614882b55fc5d2e447a21aaa691303d62f - rainbow (3.1.1) sha256=039491aa3a89f42efa1d6dec2fc4e62ede96eb6acd95e52f1ad581182b79bc6a - regexp_parser (2.13.1) sha256=5aedb6b7c35688f51e86eef17a15374dfd287c83f4ca644b2c5f3ec50a33b44b - rubocop (1.92.0) sha256=2af68041fb2e70bd9321d0479b49fad07f8008a3d0758c83347b4917128c56e0 - rubocop-ast (1.50.0) sha256=b9ca88300da0803ee222ad20cdb30494c0a784eed06fdc35d254b06d662788db - ruby-progressbar (1.13.0) sha256=80fc9c47a9b640d6834e0dc7b3c94c9df37f08cb072b7761e4a71e22cff29b33 - unicode-display_width (3.3.0) sha256=4b7aa66a4b11db50f6f7e98411215cd0dd10eaecb665d36eec5bcacb3fa0b613 - unicode-emoji (4.3.0) sha256=11c02fa73290378c066bb0562cd4c87d8e1b706fbbe0059ca12746a4244de8ce - -BUNDLED WITH - 4.0.20 diff --git a/bin/ecarte b/bin/ecarte index 7af7ee5..220bbe6 100755 --- a/bin/ecarte +++ b/bin/ecarte @@ -1,9 +1,9 @@ #!/usr/bin/env ruby -require_relative "../lib/game" +require_relative '../lib/game' # Crée une partie. -game = Game.new("Alice", "Bob") +game = Game.new('Alice', 'Bob') game.determine_dealer game.deal diff --git a/lib/card.rb b/lib/card.rb index 4049fe2..fab450c 100644 --- a/lib/card.rb +++ b/lib/card.rb @@ -18,16 +18,15 @@ class Card @value.to_i else case @value - when "ace" + when 'ace' 11 - when "jack" + when 'jack' 12 - when "queen" + when 'queen' 13 - when "king" + when 'king' 14 end end end end - diff --git a/lib/deck.rb b/lib/deck.rb index dbbffde..43fe484 100644 --- a/lib/deck.rb +++ b/lib/deck.rb @@ -1,4 +1,4 @@ -require_relative "card" +require_relative 'card' # Représente un paquet de cartes et gère son contenu. class Deck @@ -6,8 +6,8 @@ class Deck def initialize @cards = [] - values = ["7", "8", "9", "10", "ace", "jack", "queen", "king"] - suits = ["hearts", "diamonds", "clubs", "spades"] + values = %w[7 8 9 10 ace jack queen king] + suits = %w[hearts diamonds clubs spades] suits.each do |suit| values.each do |value| @@ -26,4 +26,3 @@ class Deck @cards.pop end end - diff --git a/lib/game.rb b/lib/game.rb index 7a8280f..fd846d6 100644 --- a/lib/game.rb +++ b/lib/game.rb @@ -1,11 +1,11 @@ -require_relative "deck" -require_relative "player" -require_relative "terminal_ui" +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, :stock + :upcard, :trump_suit, :trick_winner def initialize(player_name1, player_name2) @deck = Deck.new @@ -24,8 +24,8 @@ class Game @deck.shuffle while @dealer.nil? - card1 = @deck.cards[rand(2..30) - 1] - card2 = @deck.cards[rand(2..30) - 1] + card1 = @deck.cards[rand(1..29)] + card2 = @deck.cards[rand(1..29)] if card1.strength > card2.strength @dealer = @player1 @@ -73,12 +73,10 @@ class Game else follow_card.suit == lead_card.suit end + elsif follow_player.hand.any? { |card| card.suit == @trump_suit } + follow_card.suit == @trump_suit else - if follow_player.hand.any? { |card| card.suit == @trump_suit } - follow_card.suit == @trump_suit - else - true - end + true end end @@ -95,13 +93,12 @@ class Game lead_player.play(lead_card) follow_player.play(follow_card) - if lead_card.suit != follow_card.suit && follow_card.suit != @trump_suit - @trick_winner = lead_player - elsif lead_card.suit == follow_card.suit && lead_card.strength > follow_card.strength - @trick_winner = lead_player - else - @trick_winner = follow_player - end + @trick_winner = if (lead_card.suit != follow_card.suit && follow_card.suit != @trump_suit) || + (lead_card.suit == follow_card.suit && lead_card.strength > follow_card.strength) + lead_player + else + follow_player + end @trick_winner.add_point @ui.display_trick_winner(@trick_winner) @@ -133,9 +130,6 @@ class Game @player1 elsif @player1.score < @player2.score @player2 - else - nil end end end - diff --git a/lib/player.rb b/lib/player.rb index e52ea4c..806a35c 100644 --- a/lib/player.rb +++ b/lib/player.rb @@ -28,4 +28,3 @@ class Player @score += 1 end end - diff --git a/lib/terminal_ui.rb b/lib/terminal_ui.rb index 469b543..83b634d 100644 --- a/lib/terminal_ui.rb +++ b/lib/terminal_ui.rb @@ -1,17 +1,16 @@ # 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}" end - print "Choose a card: " + print 'Choose a card: ' choice = gets.chomp.to_i until choice.between?(1, player.hand.length) - print "Invalid choice. Choose a card: " + print 'Invalid choice. Choose a card: ' choice = gets.chomp.to_i end @@ -25,7 +24,7 @@ class TerminalUI # Affiche un avertissement si le coup joué ne respecte pas les règles. def display_wrong_card - puts "You cannot play this card." + puts 'You cannot play this card.' end # Affiche le joueur ayant remporté le pli. @@ -52,7 +51,7 @@ class TerminalUI puts "Trump suit: #{game.trump_suit}" puts - puts "Stock:" + puts 'Stock:' puts game.stock.length puts end diff --git a/test/card_test.rb b/test/card_test.rb deleted file mode 100644 index e69de29..0000000 diff --git a/test/deck_test.rb b/test/deck_test.rb deleted file mode 100644 index e69de29..0000000 diff --git a/test/game_test.rb b/test/game_test.rb deleted file mode 100644 index e69de29..0000000 diff --git a/test/player_test.rb b/test/player_test.rb deleted file mode 100644 index e69de29..0000000 diff --git a/test/terminal_ui_test.rb b/test/terminal_ui_test.rb deleted file mode 100644 index e69de29..0000000