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é
|
||||
|
||||
## É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
|
||||
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
|
||||
|
||||
|
||||
Reference in new issue
Block a user