Le projet Ajul

CS-108

1. Introduction

Le projet de cette année, nommé Ajul, consiste à réaliser une version électronique du jeu de société Azul. Ajul permet à 2, 3 ou 4 joueurs de s'affronter dans une partie, chacun des joueurs pouvant être soit un humain, soit une « intelligence artificielle ».

La figure 1 ci-dessous montre une partie d'Ajul en cours entre une joueuse nommée Anne et un joueur nommé Boris. Les différents éléments de l'interface graphique ont été numérotés pour faciliter la description qui suit.

ajul-numbered-gui;64.png
Figure 1 : L'interface graphique de Ajul (cliquer pour agrandir)

L'interface graphique est composée de deux parties distinctes1 :

  • à gauche, la partie commune à tous les joueurs, constituée des 5 fabriques 1 — la deuxième depuis le haut, à gauche, étant actuellement vide, les quatre autres contenant chacune 4 tuiles colorées — et la zone centrale 2 — contenant 2 tuiles colorées et le marqueur de premier joueur,
  • à droite, les plateaux personnels des deux joueurs, encadrés et dans lesquels se trouvent leur nom et score actuel 3, leurs 5 lignes de motif 4, leur ligne plancher 5 et leur mur 6.

Notez que pour ne pas alourdir inutilement l'image, seuls les éléments du plateau personnel d'Anne ont été numérotés, ceux de Boris étant similaires.

Une partie d'Ajul se joue au moyen de tuiles colorées, de cinq couleurs différentes (, , , et ). Il existe 20 tuiles de chaque couleur, pour un total de 100 tuiles. En plus de ces tuiles, un marqueur de premier joueur (1) détermine qui commence chacune des manches, comme expliqué plus bas.

Au début d'une partie, 4 tuiles colorées choisies aléatoirement sont disposées sur chacune des fabriques, et le marqueur de premier joueur est placé sur la zone centrale. Le but des joueurs est d'obtenir un maximum de points en remplissant petit à petit les cases de leur mur au moyen des tuiles colorées.

Pour ce faire, lorsque c'est à son tour, un joueur s'empare de toutes les tuiles d'une couleur donnée se trouvant soit sur l'une des fabriques 1 soit sur la zone centrale 2. Il place ensuite ces tuiles sur l'une des lignes de motif 4 de son plateau personnel, en s'assurant qu'une ligne donnée ne contient que des tuiles de la même couleur. Les lignes de motif ont une capacité limitée — la première pouvant accueillir une tuile, la seconde deux, etc. — et il est donc possible que les tuiles dont un joueur s'est emparé ne puissent pas toutes être placées sur la ligne de motif choisie. Dans ce cas, les tuiles excédentaires sont placées sur sa ligne plancher 5. Chaque tuile se trouvant sur la ligne plancher pénalise le joueur à la fin de la manche, de 1 point pour les deux premières tuiles, 2 points pour les trois suivantes, et de 3 points pour les deux dernières.

Lorsqu'un joueur s'empare de toutes les tuiles d'une couleur donnée se trouvant sur une fabrique, les éventuelles autres tuiles qui s'y trouvent sont déplacées vers la zone centrale. Lorsqu'il s'empare de toutes les tuiles d'une couleur donnée se trouvant sur la zone centrale, et que celle-ci contient le marqueur de premier joueur, il le prend et l'ajoute à sa ligne plancher. En échange de la pénalité ainsi obtenue, ce joueur débutera la manche suivante s'il y en a une.

Quand la totalité des fabriques et la zone centrale sont vides, la manche se termine. À ce moment-là, les lignes de motif des joueurs sont parcourues de haut en bas, et lorsque l'une d'entre elles est pleine, la tuile la plus à droite est déplacée dans la case du mur de même couleur, les éventuelles autres tuiles étant sorties du plateau. Lorsqu'une tuile est ainsi ajoutée au mur, elle rapporte un nombre de points qui dépend du nombre d'autres tuiles déjà présentes sur le mur et auxquelles elle est connectée horizontalement ou verticalement. Une fois les points ainsi obtenus ajoutés au score des différents joueurs, les éventuelles pénalités dues aux tuiles se trouvant sur leur ligne plancher en sont déduites, et ces tuiles sorties du plateau — sauf le marqueur de premier joueur, qui est replacé dans la zone centrale.

Quand les scores de tous les joueurs ont été ainsi mis à jour, la partie est terminée si au moins un joueur a rempli au moins une ligne horizontale de son mur. Sinon, la partie continue avec une nouvelle manche, que débute le joueur qui avait pris le marqueur de premier joueur à la manche précédente. Ces manches se déroulent de la même manière que la première décrite ci-dessus, si ce n'est que la présence d'une tuile d'une couleur donnée dans une ligne du mur d'un joueur lui interdit de placer des tuiles de cette même couleur dans la ligne de motif correspondante.

Lorsque la partie est terminée, les joueurs obtiennent encore des points bonus pour chaque ligne, colonne ou couleur pleine — c.-à-d. comportant 5 tuiles — de leur mur, et le joueur ayant le score le plus élevé remporte la partie.

Une partie d'Ajul peut se jouer à 2 (comme ci-dessus), 3 ou 4 joueurs. Lorsque le nombre de joueurs augmente, seul le nombre de fabriques change et passe de 5 (2 joueurs) à 7 (3 joueurs) ou 9 (4 joueurs).

Dans un soucis de simplicité, certains détails ont été omis dans la présentation des règles ci-dessus. Ils seront introduits dans le cadre des différentes étapes.

2. Organisation

Le projet se fait par groupes de 2 personnes au maximum. La formation de ces groupes est libre et peut changer au cours du semestre, pour peu que les directives concernant le plagiat soient respectées. En particulier, si deux personnes ayant travaillé en commun se séparent, elles doivent se partager le code et ne peuvent chacune l'emporter en totalité de leur côté.

La mise en œuvre du projet est découpée en 12 étapes hebdomadaires, regroupées en trois parties :

  1. les étapes 1 à 6,
  2. les étapes 7 à 11,
  3. l'étape 12, qui est optionnelle.

La première partie est très guidée, afin de vous permettre de bien démarrer, tandis que la seconde l'est moins, la troisième étant (presque) totalement libre.

3. Notation

Un total de 500 points est attribué durant le semestre, répartis ainsi :

  • projet : 300 points,
  • examen intermédiaire : 75 points,
  • examen final : 125 points.

Les 300 points attribués au projet sont répartis de la manière suivante :

  • rendus testés : 100 points (20 points par rendu),
  • rendu intermédiaire : 90 points,
  • rendu final : 90 points,
  • test final : 20 points.

Un rendu testé est un rendu qui est évalué automatiquement au moyen de tests. Il y a cinq rendus de ce type au cours du semestre, un pour chacune des étapes 2 à 6. Le nombre de points obtenus à un rendu testé est proportionnel au nombre de tests passés avec succès.

Le rendu intermédiaire, qui concerne les étapes 1 à 6, et le rendu final, qui concerne les étapes 7 à 11, sont quant à eux évalués par lecture de votre code, et les points attribués en fonction de la qualité du programme. L'efficacité, la concision et l'élégance du code sont prises en compte dans cette évaluation.

Le test final consiste en un test non automatisé — contrairement au test des étapes 2 à 6 — du bon fonctionnement du projet terminé.

Notes de bas de page

1

Les noms des différentes parties du plateau de jeu — fabrique, lignes de motif, mur, etc. — ont été repris du jeu de société, dans lequel les tuiles sont des carreaux de faïence — que l'on nomme catelles en Suisse — servant à décorer les murs d'un palais. Nous avons choisi de garder ces noms même si, dans notre version informatique du jeu, les tuiles sont de simples rectangles colorés.