Projet Javass – Introduction

Introduction

Le but du projet de cette année, nommé Javass, est d'écrire un programme permettant de jouer à une variante du célèbre jeu de Jass. Le Jass est un jeu de cartes très populaire en Suisse — où il est souvent qualifié de sport national — et dans d'autres pays limitrophes, et est proche de la belote et d'autres jeux similaires.

Il existe de nombreuses variantes du Jass, et les règles exactes de celle mise en œuvre dans le cadre de ce projet seront présentées petit à petit, mais une introduction rapide suit.

Le Jass se joue à quatre joueurs, répartis en deux équipes de deux et placés autour d'une table en alternant les équipes, c-à-d de manière à ce que chaque joueur soit entouré des deux joueurs adverses. Les joueurs utilisent un jeu de 36 cartes, chacune d'entre elles possédant une couleur (ou enseigne) et un rang qui l'identifient. Il existe quatre couleurs différentes — pique (♠), cœur (♥), carreau (♦) et trèfle (♣) — et neuf rangs — 6, 7, 8, 9, 10, valet, dame, roi et as.

Une partie se déroule en un certain nombre de tours, jusqu'à ce qu'une équipe ait accumulé un certain nombre de points — généralement 1000 —, moment auquel elle est déclarée gagnante.

Au début de chaque tour, les 36 cartes du jeu sont distribuées aléatoirement aux joueurs, qui en reçoivent donc 9 chacun, qu'ils ne montrent à personne. Une couleur parmi les quatre est désignée comme étant l'atout, ce qui confère des caractéristiques particulières aux cartes de cette couleur : elles sont plus fortes que celles des autres couleurs, et peuvent rapporter plus de points.

Un tour de jeu consiste en une succession de 9 plis. Au début de chaque pli, un joueur déterminé pose une carte de sa main sur la table. Les joueurs suivants en font de même, dans l'ordre, mais en respectant certaines règles. En gros, un joueur peut soit suivre en jouant une carte de la même couleur que la première, soit couper en jouant une carte d'atout.

Lorsque tous les joueurs ont posé une carte, l'équipe qui a posé la carte la plus forte remporte le pli, et tous les points des cartes qui le composent. Le joueur ayant posé la carte la plus forte est celui qui pose la première carte du pli suivant.

L'image ci-dessous montre le second pli du premier tour d'une partie de Jass. C'est au joueur humain (Ola) de jouer et, selon les règles, il ne peut poser que son dix ou sa dame de pique, raison pour laquelle ces cartes sont mises en évidence.

javass-screenshot.png

Figure 1 : Une partie de Ja(va)ss en cours

Vue d'ensemble du projet

Javass permet à un joueur humain d'affronter trois autres joueurs dans une partie de Jass. Chacun de ces trois joueurs peut être soit :

  1. un joueur simulé par l'ordinateur, soit
  2. un joueur humain jouant sur son propre ordinateur.

Afin que plusieurs joueurs humains puissent jouer ensemble à une même partie, il est nécessaire que leurs ordinateurs soient connectés au même réseau. Pour permettre ce jeu en réseau, Javass est composé de deux parties distinctes, nommées le serveur et le client.

Le serveur est la partie du programme qui arbitre le jeu de Jass et se charge de distribuer les cartes, mémoriser les points obtenus par les équipes, etc. De plus, il gère le ou les joueurs simulés, s'il y en a, ainsi que l'interface graphique du joueur humain jouant sur l'ordinateur sur lequel il fonctionne.

Le client est quant à lui la partie du programme qui gère l'interface graphique du ou des joueurs humains jouant sur des ordinateurs distants, chaque copie du client étant responsable d'un seul joueur.

Par exemple, lors d'une partie opposant une équipe composée de deux joueurs humains à une autre équipe composée d'un joueur humain et d'un joueur simulé, Javass s'exécute sur un total de trois ordinateurs :

  1. un ordinateur exécute le serveur, qui gère la partie dans son ensemble, le joueur simulé et l'interface avec un premier joueur humain,
  2. les deux autres ordinateurs exécutent chacun une copie du client, qui se charge de l'interface avec le joueur humain qui leur est associé.

Cette situation est présentée graphiquement dans la figure ci-dessous, sur laquelle les flèches représentent la communication entre les différents ordinateurs.

client-server.png

Figure 2 : Organisation d'une partie de Jass à trois joueurs humains

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. la première partie est composée des étapes 1 à 6,
  2. la seconde partie est composée des étapes 7 à 11,
  3. la troisième partie est composée de l'étape 12, qui est une étape bonus optionnelle et (presque) totalement libre.

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 : 90 points (18 points par rendu),
  • rendu intermédiaire : 80 points,
  • rendu final : 110 points,
  • test final : 20 points.

Un rendu testé est un rendu qui est évalué automatiquement au moyen de tests unitaires. Il y a 5 rendus testés 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 des correcteurs, et les points attribués en fonction de la qualité du programme. L'efficacité, la concision et l'élégance du code sont pris en compte dans cette évaluation.

Le test final consiste en un test non automatisé (contrairement aux tests unitaires) du bon fonctionnement du projet complet.