Séparé les classes dans des fichiers

This commit is contained in:
julien committed 2026-10-06 15:31:20 +02:00
1 parent 644e05e72a
commit 5307ef055a
3 files changed
+14 -73

No files matched your search

-57
View File
@@ -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
+12 -14
View File
@@ -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
+2 -2
View File
@@ -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