edit · history · print

Licence d'Informatique de Paris 6

L2

Module LI 260 - Projet de jeu à deux joueurs en Scheme


Notes du Module

  • Les notes finales du module 1ere session sont disponibles
  • Notes

Evaluation du module

  • Soutenance et épreuve écrite
    • Les deux créneaux retenus pour l'examen de LI260 sont le Mercredi 9 Juin de 16h à 18h et le Vendredi 11 Juin de 14h à 16h.
    • En Batiment 41 - Salle 316
    • Tous ceux qui peuvent doivent passer le 9 Juin. Seuls ceux qui ont un autre examen pendaznt le crénau réservé le 9 peuvent passer le 11.
    • Envoyez moi un mail confirmant que vous passez le 9 Juin ou le 11 en précisant dans ce dernier cas l'examen qui vous empêche de venir le 9.
  • Rapport
    • Vous devez m'envoyer votre rapport avant le samedi 5 Juin à Minuit.

  • Liste des etudiants m'ayant confirmé passer le 9 Juin

Grandsire Simon, Khamphet Alex, LOI Geoffrey, Thomas Coulaux, Selma Sadouk, Picot Rémi, mohamed darhobi, , flavie tononn, ahmed khallaf, Domtchueng Tchuenche wilfried, Bellacicco Damien, Sihame Aarab, Jules Fabry, Antoine FLINOIS, Ritchie Nithoo, Jules Fabry, darhobi mohamed, villet sabrina.

Heures de passage :

16h : Grandsire Simon, Khamphet Alex, LOI Geoffrey, Thomas Coulaux, Selma Sadouk, Picot Rémi, mohamed darhobi, flavie tonon

17h : ahmed khallaf, Domtchueng Tchuenche wilfried, Bellacicco Damien, Sihame Aarab, Jules Fabry, Antoine FLINOIS, Ritchie Nithoo

18h : Jules Fabry, darhobi mohamed, villet sabrina

  • Liste des etudiants passant le 11 Juin

Archives pour Tester vos algorithmes

  • Archives pour l'Othello (2eme version mise à jour Samedi 29 Mai à 20h30)
 ** avec mise à jour des champs scores et coups-joues de etat-de-jeu 
 ** avec la règle que si un joueur ne peut plus jouer, il passe et c'est à l'autre joueur de jouer
 ** Vous implementez les 2 joueurs
 ** Vous implementez 1 joueur
  • Archives pour l'Othello
 ** Vous implementez les 2 joueurs
 ** Vous implementez 1 joueur
 ** Fichier des en-tetes des fonctions de la librairie pour Othello
  • Archives pour l'awele
 ** Vous implementez les 2 joueurs
 ** Vous implementez 1 joueur

Transparents de cours et descriptifs des parties du projet

  • Cours 12
 ** Slides Cours 12
  • Rattrapage du cours du 10 Mai 2010
 ** Mercredi 12 Mai : 17h30-19h15 - Bat 31. Salle 304
 ** Slides Cours 11
  • Cours 9
 ** Slides Cours 9
  • Cours 8
 ** Slides Cours 8
  • Cours 7
 ** Slides Cours 7



 ** Code
  • Cours 6
 ** Enoncé Cours 6
  • Cours 5
 ** Slides Cours 5
  • Cours 4
 ** Slides Cours 4
  • Cours 2 et 3
 ** Etude de la partie 2 du Projet
  • Cours 1
 ** Slides Cours 1
  • Contenu des archives 2joueursVous
 Les archives suivantes contiennent :

 ** Lib.so : il s'agit d'une librairie que vous pouvez charger dans un programme scheme par l'instruction (load-extension "Lib.so")
 ** Lib_entetes.scm qui contient les en-têtes des fonctions implémentées dans Li.so
 ** Testeur2joueurs1partie.scm : Ce fichier execute une partie entre deux joueurs implémentés dans deux fichiers joueur1.scm et joueur2.scm qui sont chargés, avec Lib.so en début de fichier
 ** Testeur2joueursNparties.scm : Ce fichier execute N parties (défini en fin de fichier) entre deux joueurs implémentés dans deux fichiers joueur1.scm et joueur2.scm qui sont chargés, avec Lib.so en début de fichier.
  • Contenu des archives 1joueurVousContreAB
 Les archives suivantes contiennent :

 ** Lib.so : il s'agit d'une librairie que vous pouvez charger dans un programme scheme par l'instruction (load-extension "Lib.so")
 ** Lib_entetes.scm qui contient les en-têtes des fonctions implémentées dans Li.so
 ** Testeur2joueurs1partie.scm : Ce fichier execute une partie entre un joueur implémentés dans le fichier joueur1.scm chargé, avec Lib.so en début de fichier, contre un joueur artificiel de type Alpha-Béta.
 ** Testeur2joueursNparties.scm : Ce fichier execute N parties (défini en fin de fichier) entre un joueur implémentés dans le fichier joueur1.scm chargé, avec Lib.so en début de fichier, contre un joueur artificiel de type Alpha-Béta.
  • Archives pour l'Othello
 ** Vous implementez les 2 joueurs
 ** Vous implementez 1 joueur qui joue contre un joueur de type AlphaBeta
  • Archives pour l'awele
 ** Vous implementez les 2 joueurs
 ** Vous implementez 1 joueur qui joue contre un joueur ordinateur de type AlphaBeta
  • Cours Apprentissage
 ** Slides Cours Apprentissage
  • Cours 1
 ** Slides Cours 1
 ** Code
  • Apprentissage du stratège par apprentissage supervisé
 ** Slides
  • Apprentissage du stratège par exploration locale
 ** Slides
  • Résolution de problème par recherche dans un arbre
 ** Slides Cours 3

Infos générales

Le projet consiste à développer un logiciel pour programmer un jeu à deux joueurs. Le module se décomposera en trois phases:

  • La première phase consistera à comprendre et développer les outils et algorithmes génériques intervenant dans la programmation de tout jeu à deux joueurs. Cela inclut notamment les algorithmes de recherche du typa alpha-béta et minimax.
  • Dans une deuxième phase, on s’intéressera à un jeu particulier (Othello-Reversi ou Awélé) pour lequel on adaptera ces outils génériques, à travers la configuration des algorithmes de recherche et la définition de fonctions d’évaluations pertinentes.
  • Enfin, dans une troisième phase on s’intéressera à perfectionner les programmes écrits par des techniques d’apprentissage automatique. L’idée est de faire jouer entre eux les programmes et d’exploiter les résultats des parties (victoires ou défaites) pour en améliorer automatiquement le comportement.

Le projet sera écrit en Scheme, un langage de programmation dérivé du langage fonctionnel Lisp, créé dans les années 1970 au MIT et devenu par la suite le langage de choix pour la recherche en intelligence artificielle.
----


Cours

Semaine 1

 * Slides Cours 1

Semaine 2

 * Slides Cours 2

Semaine 3

 * Etude de la partie 2 ci-dessous

Semaine 4

 * Slides Cours 4

Semaine 8

 * Slides Cours 8

TMEs

Semaines 1 à 3

 * Partie 1

 * Partie 2

Semaine 4 et 5

 * Partie 3

Testeurs


Pour versions 3 de plt-scheme (pas celle des salles machines de la fac)

Il y a deux fichiers scheme et deux librairies :

  • 1 fichier TestJeu2JAwele.scm pour tester deux joueurs à vous (un joueur contre un autre). Ce fichier utilise une librairie Lib2JoueursAwele.so

Vous devez écrire le code de saisie-coup1 dans un fichier joueur1.scm et le code de saisie-coup2 dans un fichier joueur2.scm

  • 1 fichier TestJeuABJAwele.scm pour tester votre joueur 1 contre mon joueur 2. Ce fichier utilise une librairie LibJoueurABAwele.so

Vous devez écrire le code de saisie-coup1 dans un fichier joueur1.scm

Idem mais pour l'Othello

  • NB : Que ce soit pour l'Othello ou l'awélé, la structure état de jeu utilisée dans ces librairies est la suivante (elle est différente de la votre)

(define-struct etatdejeu (nbgraines coups-joues scores joueur coup))

  • nbgraines est strictement identique à plateau dans votre srtucture
  • coups_joues n'est pas utilisés
  • scores est un cons de deux valeurs (different d'un list)
  • joueur est égal à 1 ou 2
  • coup n'est pas utilisé

==> il faut une fonction de conversion entre cette structure état de jeu et la votre au début de votre fonction saisie-coup1 et une fonction de conversion inverse à la fin de la fonction saisie-coup1.


Code scheme correspondant à un jeu à deux joueurs. Fonctionne quelle que soit la version de scheme.

=> Mais Vous devez programer les deux joueurs

  • ''Testeur Awele
  • ''Testeur Othello
  • NB : Ici, que ce soit pour l'Othello ou l'awélé, la structure état de jeu utilisée dans ces librairies est la suivante (elle est différente de la votre)

(define-struct etatdejeu (plateau coups-joues scores joueur coup))


edit · history · print
Page last modified on March 18, 2014, at 09:19 AM