Projet informatique : le Trois pour dix

Université de Nice Sophia-Antipolis

Enseignant : Pierre Crescenzo



Ce projet consiste à programmer un jeu nommé Trois pour dix. Ce jeu est difficile. Non pas qu'il soit très difficile de jouer ou de gagner des points, mais il est complexe de compter les points et de se souvenir de toutes les combinaisons qui ont déjà marqué un point. L'ordinateur est donc ici bienvenu.

Dates et consignes générales

Respectez les contraintes de date et les consignes générales qui vous ont été données par l'enseignant qui vous a attribué ce projet. Ne réalisez que les objectifs et variantes précisés par l'enseignant, les autres ne sont considérés comme bonus que si tous les objectifs et variantes demandés sont complets et correctement réalisés.

Règles du jeu

  1. Le plateau de jeu est constitué d'un damier carré de n (3 ≤ n ≤ 20) cases de côté, la taille est choisie par les joueurs en début de partie.
  2. Il y a deux joueurs. Le premier choisit un chiffre c (1 ≤ c ≤ 8) et le place dans une des cases vides. Le second fait de même et ainsi de suite…
  3. Le but est pour chaque joueur, à la fin du jeu, quand le plateau est plein, d'avoir fait le maximum de lignes de trois cases consécutives dont le total fait 10.
  4. À chaque fois qu'un joueur joue, il faut déterminer le nombre de groupes de trois cases consécutives, comprenant celle qui vient d'être jouée, dont le total fait 10 et compter un point pour ce joueur par groupe ainsi détecté. Il est évidemment possible de placer un chiffre qui permet de gagner plus d'un point (s'il permet, en même temps, de faire plusieurs groupes de trois cases consécutives totalisant 10).
  5. Mais attention : au cours d'une partie, chaque case peut être utilisée quatre fois au plus pour faire un point : horizontalement, verticalement, en diagonale montante et en diagonale descendante. Elle ne peut pas être utilisée deux fois dans la même direction !

Objectifs

  1. Réalisez une interface textuelle permettant de jouer.
  2. Réalisez une interface graphique permettant de jouer.
  3. Programmez la détection de fin de partie.
  4. Programmez les tests permettant de vérifier la validité du placement d'un chiffre sur le plateau.
  5. Programmez le comptage des points et la désignation du gagnant.
  6. Programmez un joueur automatique.
    1. Le joueur automatique est stupide : il place un chiffre au hasard dans une case vide au hasard.
    2. Le joueur automatique est peu habile : dès qu'il détecte la possibilité de faire au moins un point, il place le chiffre adéquat sans chercher plus loin. S'il ne trouve rien d'évident, il agit comme le joueur stupide.
    3. Le joueur automatique est un peu plus habile : il place le chiffre qui lui fait faire le plus de points lors de ce tour. S'il trouve plusieurs meilleures solutions possibles, il en choisit une au hasard. S'il ne trouve aucune solution, il agit comme le joueur stupide.
    4. Le joueur automatique est intelligent : il détermine une stratégie (à vous de l'établir) pour gagner. Il peut pour cela prendre en compte non seulement le tour courant mais aussi placer opportunément des chiffres pour faire des points les tours suivants ou encore essayer de limiter les points marqués par son adversaire.
    5. Le joueur automatique est aléatoire : il prend, au hasard, l'un des comportements possibles.
    6. Le joueur automatique est peu décidé : il prend, au hasard, l'un des comportements possibles et en change de temps en temps.
  7. Faites jouer différents joueurs automatiques entre eux et faites des statistiques sur leurs résultats pour mettre en évidence leurs qualités et faiblesses.
  8. Programmez le jeu en réseau.
  9. Programmez la possibilité d'avoir des chiffres déjà posés en début de partie.
  10. Ajoutez une base de données au jeu. Elle peut avoir plusieurs usages comme :
    1. Programmez la sauvegarde d'une partie pour pouvoir la reprendre plus tard.
    2. Programmez la sauvegarde du déroulement d'une partie et la possibilité de la revoir plus tard, pour pouvoir l'étudier.
    3. Programmez la sauvegarde des choix de chiffre d'une partie, pour pouvoir en refaire avec les mêmes chiffres dans le même ordre.
    4. Programmez la sauvegarde des choix de case d'une partie, pour pouvoir en refaire avec les mêmes cases dans le même ordre.
    5. Programmez un historique pour chaque joueur. Cet historique offre la possibilité d'étudier le déroulement de ses propres parties ou de celles des autres joueurs, d'évaluer son évolution ou encore de classer les joueurs entre eux.
    6. Utilisez les parties sauvegardées comme base de connaissances, pour améliorer les capacités du joueur automatique intelligent.

Variantes

Il est possible de composer certaines variantes.

  1. Modifiez la règle de comptage des points.
    1. Chaque case peut servir sans limitation pour marquer un point.
    2. Chaque case ne peut servir qu'une seule fois pour marquer un point.
    3. Chaque case ne peut servir qu'une seule fois par joueur pour marquer un point.
    4. Chaque case ne peut servir qu'une seule fois par direction et par joueur pour marquer un point.
    5. Permettez aux joueurs de choisir parmi les règles de comptage possibles, en début de partie.
  2. Modifiez le mode de jeu.
    1. Ne permettez de jouer un chiffre que dans une case adjacente à une case non vide. Seul le premier joueur, lors du premier tour, est entièrement libre.
    2. Imposez, par un choix aléatoire ou prédéterminé, la case à utiliser : les joueurs ne doivent choisir que le chiffre à jouer.
    3. Imposez, par un choix aléatoire ou prédéterminé, le chiffre à jouer : les joueurs ne doivent choisir que la case dans laquelle ils jouent.
    4. Permettez qu'il y ait plus de deux joueurs.
    5. Permettez des parties par équipes (deux contre deux, par exemple).
  3. Modifiez les paramètres essentiels du jeu.
    1. Changez le nombre de cases consécutives (3) permettant de marquer un point.
    2. Changez le total à atteindre (10) pour marquer un point.
    3. Changez l'intervalle des nombres (1 à 8) à placer dans chaque case.
    4. Permettez aux joueurs de choisir parmi les paramètres essentiels possibles, en début de partie.
  4. Considérez que les cases vides contiennent déjà un nombre (exemple : 0 ou 1) qui compte pour faire marquer des points. Plusieurs options s'offrent ensuite à vous pour ces cases vides qui ont permis de marquer au moins un point : soit elles sont désormais immuables et ne sont donc plus considérées comme vides, soit elles peuvent recevoir un nouveau nombre qui peut lui-même donner des points.

Tout n'est pas dit : l'intérêt d'un projet est de découvrir, expérimenter, créer, comprendre, innover… en un mot réfléchir ! J'ai inventé ce jeu. Si vous voulez me proposer des améliorations ou de nouveaux objectifs ou variantes, écrivez-moi.


XHTML 1.1 validé ! CSS 2 validé ! GNU's Not Unix Debian GNU/Linux Optimisé pour tout navigateur ! Contre les brevets logiciels !

URI : http://www.crescenzo.nom.fr/Projets/trois-pour-dix.html conforme à XHTML 1.1 et à CSS 2.1
Contact et maintenance : Pierre Crescenzo
Création : 2004/11/23
Dernière modification : 2009/04/24