diff --git a/README.md b/README.md index bbb62e6..5410679 100644 --- a/README.md +++ b/README.md @@ -1,59 +1,2 @@ # Écarté -## Étape 1 — Jeu local - -Objectif : pouvoir jouer une partie complète à deux dans le même terminal. - -- [x] Prototype « bataille simplifiée » -- [ ] Implémenter les règles complètes de l’Écarté - -``` -1. Le non-donneur examine sa main -2. Il choisit : - - jouer sans écarter - - ou proposer un écart - -3. S'il propose : - le donneur accepte ou refuse - -4. Si le donneur refuse : - on joue immédiatement avec les mains actuelles - -5. Si le donneur accepte : - - le non-donneur écarte d'abord - - il reçoit autant de cartes du talon - - le donneur écarte ensuite - - il reçoit autant de cartes - -6. Le non-donneur peut alors proposer de nouveau - -7. On recommence jusqu'à ce que : - - le non-donneur décide de jouer sans proposer, - - ou le donneur refuse, - - ou le talon ne permette plus l'échange demandé -``` - -## Étape 2 — Jeu en réseau local - -Objectif : permettre à deux joueurs de jouer depuis deux terminaux différents. - -- [ ] Séparer le moteur de l’interface -- [ ] Créer le serveur et le client Ruby -- [ ] Jouer une partie complète sur le réseau local - -## Étape 3 — Jeu par Internet - -Objectif : permettre à deux joueurs de jouer à distance. - -- [ ] Adapter le serveur au fonctionnement sur Internet -- [ ] Gérer plusieurs parties et les reconnexions -- [ ] Déployer le serveur sur le VPS - -## Étape 4 — Finitions - -Objectif : améliorer le confort et la robustesse du jeu. - -- [ ] Améliorer l’interface terminal -- [ ] Améliorer la gestion des erreurs et interruptions -- [ ] Ajouter les fonctions de confort - diff --git a/lib/game.rb b/lib/game.rb index 8080859..7b9fbd5 100644 --- a/lib/game.rb +++ b/lib/game.rb @@ -4,7 +4,7 @@ require_relative "terminal_ui" class Game attr_reader :player1, :player2, :dealer, :non_dealer, - :upcard, :trump_suit, :round_winner + :upcard, :trump_suit, :trick_winner def initialize(player_name1, player_name2) @deck = Deck.new @@ -14,7 +14,7 @@ class Game @non_dealer = nil @upcard = nil @trump_suit = nil - @round_winner = nil + @trick_winner = nil @ui = TerminalUI.new end @@ -60,22 +60,20 @@ class Game @deck.cards end - def play_round - card1 = @ui.choose_card(player1) - card2 = @ui.choose_card(player2) - puts card1 - puts card2 + def play_trick + lead_card = @ui.choose_card(player1) + follow_card = @ui.choose_card(player2) - if card1.strength > card2.strength - @round_winner = @player1 - elsif card1.strength < card2.strength - @round_winner = @player2 + if lead_card.suit != follow_card.suit && follow_card.suit != @trump_suit + @trick_winner = @player1 + elsif lead_card.suit == follow_card.suit && lead_card.strength > follow_card.strength + @trick_winner = @player1 else - @round_winner = nil + @trick_winner = @player2 end - if @round_winner - @round_winner.add_point + if @trick_winner + @trick_winner.add_point end end diff --git a/main.rb b/main.rb index ec18a99..ef4d766 100644 --- a/main.rb +++ b/main.rb @@ -10,8 +10,8 @@ ui = TerminalUI.new game.determine_dealer game.deal # ui.debug_game(game) -game.play_round -ui.display_trick_winner(game.round_winner) +game.play_trick +ui.display_trick_winner(game.trick_winner) game.change_dealer game.deal