Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/cdlm/kata-uno
Uno card game rule checker, as an OO design & Ruby programming exercise
https://github.com/cdlm/kata-uno
Last synced: 4 days ago
JSON representation
Uno card game rule checker, as an OO design & Ruby programming exercise
- Host: GitHub
- URL: https://github.com/cdlm/kata-uno
- Owner: cdlm
- Created: 2017-01-27T11:57:35.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2017-01-27T12:58:23.000Z (almost 8 years ago)
- Last Synced: 2024-12-18T21:36:12.839Z (23 days ago)
- Language: Ruby
- Homepage:
- Size: 47.9 KB
- Stars: 2
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.markdown
Awesome Lists containing this project
README
# Uno rules checker, in Ruby
A simple little reference implementation for a programming assignment.
The problem statement follows (in french).[![Build Status](https://travis-ci.org/cdlm/kata-uno.svg?branch=master)](https://travis-ci.org/cdlm/kata-uno)
- - -
# Un arbitre pour le jeu Uno
Vous devez implémenter une librairie de classes permettant de vérifier le déroulement d'une partie de Uno (règles et cartes de base selon ).
## Spécification du format d'entrée
Le programme principal demandé doit accepter comme unique argument le nom d'un fichier texte respectant le format de l'exemple suivant :
6 players
Alice
Bob
Carol
Dave
Erin
Frank
7 red
5 red Alice
5 green Bob
+2 green Carol
skip green Erin
reverse green Alice
joker blue Frank
+4 yellow ErinLa première ligne indique le nombre N de joueurs de la partie (ici, N=6) suivi du mot `players`.
Les N lignes suivantes spécifient les prénoms ou pseudonymes des joueurs, dans l'ordre de jeu (un mot chaque).
La ligne suivante `7 red` indique la première carte retournée dans la défausse, et marque ainsi le début de partie.
Le reste des lignes du fichiers contiennent deux ou trois mots, indiquant :- premier mot :
un type de carte défaussée (`0` à `9`, `+2`, `skip`, `reverse`, `joker`, ou `+4`) ou `draw` si le joueur pioche volontairement- second mot (omis après draw) :
une couleur parmi `red`, `green`, `blue`, `yellow`, précisant la couleur annoncée pour le `joker` et le `+4`, et la couleur de la carte jouée pour les autres.- dernier mot :
le nom ou pseudonyme du joueur ayant joué cette carte.## Spécification du format de sortie
Le programme doit à l'exclusion de toute autre chose, ré-afficher les lignes lues, en insérant entre elles des lignes commençant par un signe dièse, donnant les diagnostics de l'arbitre après chaque carte défaussée :
6 players
Alice
Bob
Carol
Dave
Erin
Frank
7 red
# Alice to play
5 red Alice
# Alice 6 cards left
# Bob to play
draw Bob
# Bob 8 cards left
# Carol to play
+2 green Carol
# Carol 6 cards left
# Dave 9 cards left
# Erin to play
skip green Erin
# Erin 6 cards left
# Alice to play
reverse green Alice
# Alice 5 cards left
# Frank to play
joker blue Frank
# Frank 6 cards left
# Erin to play
+4 yellow Erin
# Erin 5 cards left
# Dave 13 cards left…et ainsi de suite :
- nombre de cartes restant dans la main du joueur ayant défaussé,
- nombre de cartes dans la main de l'éventuel joueur ayant dû piocher,
- nom du joueur suivant.Quand un joueur défausse sa dernière carte, le diagnostic indique la fin de partie :
(déroulement de la partie)
# Alice to play
1 blue Alice
# Alice 0 card left
# Alice winsDans le cas d'une défausse illégale, le programme affiche un diagnostic indiquant l'erreur, puis continue l'analyse du fichier comme si le joueur avait repris sa carte en main :
(18 premières lignes identiques au premier exemple)
# Erin to play
skip green Erin
# Erin 6 cards left
# Alice to play
2 green Frank
# wrong player
# Alice to play
reverse green Alice
# Alice 5 cards left
# Frank to play
2 blue Frank
# wrong card
# Frank to playLes diagnostics d'erreur peuvent être :
# wrong player
# wrong cardSi un joueur a gagné la partie, les éventuelles lignes de défausse suivantes causent toutes le diagnostic `wrong player`.