Quarto (édité par Gigamic) est un jeu de stratégie à deux joueurs. On trouve sur le site de l'éditeur la règle du jeu.
Le but de ce projet est d'écrire un programme qui permet de jouer à Quarto sur ordinateur. La règle sera la règle officielle, sauf qu'il n'est pas prévu qu'un joueur ne remarque pas qu'il a fait un "Quarto", puisque le programme devra le détecter et l'annoncer.
Dans l'archive quarto.zip, on trouvera un répertoire quarto qui contient des classes et des interfaces dont la documentation se trouve là. Vous ne devez pas modifier ces fichiers. L'archive possède aussi la définition d'une classe Main qui indique comment les différentes classes doivent être utilisées. Cette classe est incomplète et peut être modifiée.
Les deux premières interfaces peuvent être implémentées indépendamment du reste du programme. Vous pouvez choisir quel constructeur vous définissez et éventuellement ajouter des méthodes dans les classes qui n'apparaissent pas dans l'interface.
La classe qui implémente Game est le cœur du programme, lorsqu'on crée un objet Game, on doit créer les 16 objets Case (vides) avec leurs coordonnées et les 16 objets Piece avec leurs caractéristiques. La méthode start, celle-ci doit demander aux joueurs de choisir une pièce ou une case au bon moment et elle doit avertir l'affichage (Display) du déroulement du jeu afin que l'affichage se passe correctement. De plus, après chaque pièce posée, on doit tester si un alignement est réalisé et, le cas échéant, avertir l'affichage que la partie est finie. La méthode se termine alors.
La partie la plus compliquée du projet consiste à écrire une classe qui implémente Player et qui permet de simuler automatiquement un joueur. Vous pouvez tester le début de votre projet avant d'écrire cette classe, puisqu'une implémentation de Player est déjà fournie, qui utilise l'interface graphique pour demander à un utilisateur d'effectuer les actions. Dans votre implémentation de Player, vous êtes libre d'implémenter toute stratégie qui permettrait à votre programme d'être un bon joueur.