Séparé les classes dans des fichiers
This commit is contained in:
1 parent
644e05e72a
commit
5307ef055a
3 files changed
+14
-73
No files matched your search
@@ -1,59 +1,2 @@
|
|||||||
# Écarté
|
# É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
@@ -4,7 +4,7 @@ require_relative "terminal_ui"
|
|||||||
|
|
||||||
class Game
|
class Game
|
||||||
attr_reader :player1, :player2, :dealer, :non_dealer,
|
attr_reader :player1, :player2, :dealer, :non_dealer,
|
||||||
:upcard, :trump_suit, :round_winner
|
:upcard, :trump_suit, :trick_winner
|
||||||
|
|
||||||
def initialize(player_name1, player_name2)
|
def initialize(player_name1, player_name2)
|
||||||
@deck = Deck.new
|
@deck = Deck.new
|
||||||
@@ -14,7 +14,7 @@ class Game
|
|||||||
@non_dealer = nil
|
@non_dealer = nil
|
||||||
@upcard = nil
|
@upcard = nil
|
||||||
@trump_suit = nil
|
@trump_suit = nil
|
||||||
@round_winner = nil
|
@trick_winner = nil
|
||||||
@ui = TerminalUI.new
|
@ui = TerminalUI.new
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -60,22 +60,20 @@ class Game
|
|||||||
@deck.cards
|
@deck.cards
|
||||||
end
|
end
|
||||||
|
|
||||||
def play_round
|
def play_trick
|
||||||
card1 = @ui.choose_card(player1)
|
lead_card = @ui.choose_card(player1)
|
||||||
card2 = @ui.choose_card(player2)
|
follow_card = @ui.choose_card(player2)
|
||||||
puts card1
|
|
||||||
puts card2
|
|
||||||
|
|
||||||
if card1.strength > card2.strength
|
if lead_card.suit != follow_card.suit && follow_card.suit != @trump_suit
|
||||||
@round_winner = @player1
|
@trick_winner = @player1
|
||||||
elsif card1.strength < card2.strength
|
elsif lead_card.suit == follow_card.suit && lead_card.strength > follow_card.strength
|
||||||
@round_winner = @player2
|
@trick_winner = @player1
|
||||||
else
|
else
|
||||||
@round_winner = nil
|
@trick_winner = @player2
|
||||||
end
|
end
|
||||||
|
|
||||||
if @round_winner
|
if @trick_winner
|
||||||
@round_winner.add_point
|
@trick_winner.add_point
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -10,8 +10,8 @@ ui = TerminalUI.new
|
|||||||
game.determine_dealer
|
game.determine_dealer
|
||||||
game.deal
|
game.deal
|
||||||
# ui.debug_game(game)
|
# ui.debug_game(game)
|
||||||
game.play_round
|
game.play_trick
|
||||||
ui.display_trick_winner(game.round_winner)
|
ui.display_trick_winner(game.trick_winner)
|
||||||
|
|
||||||
game.change_dealer
|
game.change_dealer
|
||||||
game.deal
|
game.deal
|
||||||
|
|||||||
Reference in new issue
Block a user