JEUX VIDEOS

Transcription

JEUX VIDEOS
JEUX VIDEOS
Développement d'un Puzzle-Quest like
Énoncé : Le but de ce projet est le développement d'un jeu similaire à Puzzle-Quest (ou Ironcast). Ce jeu est un
jeu hybride mélangeant un système de match-3 (CandyCrush) avec des éléments de combat issus de jeux de rôle
(comme des alignements rouges provoquant des dégâts, des bleus donnant de l'armure, etc.). Dans un premier cycle
de développement, il sera nécessaire de développer un moteur de jeu (un match-3) ainsi que la mécanique de
combat (contre un punching bag). Dans un second cycle, il sera question de proposer l'intelligence artificielle de
l'ennemi (devant être paramétrable) et d'enrichir le système de combat.
Liens utiles :
• Puzzle Quest (Wikipedia)
• Puzzle Quest 2 (Editeur)
• Ironcast (Editeur)
Développement d'un Manic Shooter
Énoncé : Le but de ce projet est le développement d'un Manic Shooter. Ce jeu d'arcade consiste à piloter un
vaisseau et survivre le plus longtemps possible en affrontant des vagues successives d'adversaires. La première
phase de ce projet consiste à développer un prototype du jeu en insistant sur l'aspect dynamique du jeu
(défilement de l'écran, des projectiles, etc.). Pour cela, il est possible d'utiliser la bibliothèque Pygame. La seconde
partie du projet consistera à améliorer l'expérience de jeu, en intégrant des bonus et des adversaires présentant
différents comportements, un générateur de niveaux, etc.
Liens utiles :
• Shoot 'em up (Wikipedia)
•
Pygame (Bibliothèque)
Défier l'ordinateur sur Sokoban
Énoncé : Sokoban est un jeu vidéo de puzzle dans lequel le joueur contrôle un personnage dans un entrepôt
constitué de cases. Il doit alors ranger des caisses sur des cases cibles sachant que le personnage ne peut se déplacer
que dans les quatre directions et pousser une seule caisse à la fois. Comme le personnage ne peut pas tirer de caisse,
il est possible de se retrouver bloqué après un mouvement mal choisi. Ce projet a pour objectif de réaliser un jeu de
Sokoban en permettant à un utilisateur de jouer en parallèle d'une intelligence artificielle et de comparer ses
performances. Dans un premier temps, il s'agit de réaliser un jeu jouable pour un humain avec importation de
niveaux. Pour cela, des formats de données (comme .xsb, .sok ou .stb) dédiés peuvent être utilisé. Bien entendu,
une interface graphique devra être réalisée avec l'aide, par exemple, de la bibliothèque Pygame. Une fois ce travail
préliminaire fini, il conviendra de proposer une fonctionnalité de résolution automatique de niveau (comme
l'agorithme A*) et de permettre de faire jouer humain et ordinateur en parallèle. Enfin, une dernière étape
consiste à rendre anytime l'algorithme de l'intelligence artificielle : cette dernière est obligée de jouer dès que
l'humain fait un mouvement.
Liens utiles :
• Sokoban (Wikipedia)
• Algorithme A* (Wikipedia)
• Pygame (Bibliothèque)
• Algorithme anytime (Wikipedia)
OPTIMISATEURS
Le Castor Affairé
Énoncé : Le but du problème du castor affairé est d'écrire sur une sortie standard (ruban, écran ou variable) la plus
grande valeur possible. Afin de rendre ce petit jeu de programmation intéressant il existe deux contraintes : (1) le
programme doit pouvoir s'arrêter (ne pas posséder de boucle infinie) ; (2) la taille du programme est limitée (cette
taille est une donnée du problème). Ce problème a été pensé initialement sur machine de Turing qui est une
machine à états fonctionnant à l'aide de rubans infinis. Dans ce cas, la taille du programme est un nombre d'états.
Toutefois, il est aussi possible d'utiliser une machine RAM qui est une machine utilisant des instructions proches
de l'assembleur où, cette fois, la taille correspond à un nombre maximal d'instructions. Dans un premier temps il
est nécessaire d'implémenter un émulateur de la machine que vous comptez utiliser. Puis dans un second
d'implémenter une méthode permettant de générer des programmes et d'optimiser ceux-ci afin d'améliorer le
score du castor affairé.
Liens utiles :
• Castor affairé (Wikipedia)
• Machine de Turing (Wikipedia)
• Machine RAM (Wikipedia)
Optimisateur de WarGame
Énoncé : Le but de ce projet est fournir un outil permettant d'aider à construire une armée efficace pour un jeu de
figures tel que Warhammer dans une limite de points d'armée donnée. Dans un premier temps, il faudra développer
un moteur de combat entre deux armées avec des règles fortement simplifiées (quelques unités de base,
affrontement des armées en ligne sur un échiquier, dégâts fixes, pas d'obstacles, etc.). Dans un second temps, il
s'agira de proposer un générateur automatique d'armée respectant une limite de points. Dans la dernière étape, il
faudra proposer une méthode (construction aléatoire, système à base de règle ou encore algorithme génétique)
permettant d'obtenir une armée performante.
Liens utiles :
• Argad (Règles génériques)
•
Algorithmes génétiques (Wikipedia)
Solveur de Ricochet Robots
Énoncé : Le principe du jeu de société Ricochet Robots est de trouver en moins d'une minute la séquence de
mouvement qui permettra à un robot donné (parmi quatre) d'atteindre un objectif désigné sur une case du
plateau de jeu. Cependant, les robots ne peuvent que se déplacer en ligne droite jusqu'à rencontrer un obstacle. Le
but de ce projet est de développer un programme permettant de trouver une solution optimale pour toute situation
du jeu. Dans un premier temps, il s'agira de développer le moteur du jeu (cf. règles) puis d'implanter un
algorithme de résolution naïf, appelé A*. Cependant, le problème est trop complexe pour être résolu dans de
bonnes conditions. Dans un second temps, il s'agira alors de proposer des méthodes d'optimisation de
l'algorithme, par exemple en utilisant des tables de transposition. Enfin, s'il reste du temps, il pourra être
intéressant de réaliser une interface graphique permettant à un utilisateur de sélectionner un objectif.
Liens utiles :
• Ricochet Robots (Règles du jeu)
• Plateau de jeu (Image)
• Algorithme A* (Wikipedia)
• Tables de transposition (Wikipedia)
LOGICIELS
Interpréteur de programmes chimiques
Énoncé : La programmation chimique (aussi appelée paradigme de programmation par réécriture de multiensembles) est un paradigme de programmation dans lequel les données en entrée sont réécrites par des règles du
type remplacer A par B si C. Par exemple, un programme qui calcule le maximum d'un ensemble utilise la règle
remplacer les entiers x et y par x si x>y et un crible d’Ératosthène utilise remplacer les entiers x et y par x si y est
multiple de x. Le but de ce projet est d'écrire un interpréteur de programme chimique qui, à partir d'un langage
simple, permettent de spécifier des éléments et des règles de réaction deux à deux. Un premier jalon consistera à
définir le langage, réaliser un parser et un interpréteur simple. Dans un second temps, il s'agira d'interpréter de
manière parallèle des multi-ensembles (l'équivalent de sous-programmes). Enfin, il est demandé d'étendre le
langage pour utiliser des règles de dissolution (détruisant un sous-programme) et d'injection (produisant une
donnée sans un sous-programme).
Liens utiles :
• Programmation chimique et membranes (Thèse ; pages 11 à 19)
• Programmation chimique (Article scientifique)
• P-Systems (Wikipedia)
• Parallélisme en Python : Threading et Multiprocessing
Lecteur de musique augmenté
Énoncé : Le but de ce projet est la réalisation d'un lecteur de musique augmenté (comme par exemple Amarok).
Les fonctions élémentaires d'un tel logiciel sont la lecteur de pistes, d'albums ou de playlists et la gestion d'une
bibliothèque stockée localement. Ce lecteur sera augmenté par des fonctionnalités améliorant l'expérience
utilisateur comme par exemple : la création de playlists à contraintes (imposer un style, limiter les répétitions,
etc.), l'utilisation de service externes (last.fm, Wikipedia, etc.) et la gestion de statistiques d'écoute (nombres
d'écoutes, dernières écoutes, durées des écoutes, etc.).
Liens utiles :
• Amarok (amarok.kde.org)
• Last.fm (www.last.fm)
• Wikipedia (en.wikipedia.org)
• MusicBrainz (musicbrainz.org)
Logiciel de stéganographie
Énoncé : La stéganographie consiste à cacher un message secret à l'intérieur d'un autre message ayant lui-même
une signification. Le but de ce projet est de proposer un outil permettant de cacher et de décrypter automatiquement
un message au sein d'un texte. Pour cela, nous proposons dans un premier temps d'analyser et d'exploiter la
répartition des mots ou des caractères dans un texte. Par exemple, en français la lettre "E" est la plus fréquente.
Le message peut ainsi être caché en modifiant légèrement la fréquence d'apparition des différents caractères. Il est
important de conserver le sens du message original afin qu'un lecteur externe ne se doute pas qu'il existe un
message caché en utilisant un dictionnaire de synonymes. Au-delà du sens, il est important de conserver le style
original en maintenant le niveau de langage lors de l'utilisation de synonyme.
Liens utiles :
• Stéganographie (Wikipedia)
• Analyse fréquentielle (Cours simplifié)
• Dictionnaire de synonymes (http://www.synonymes.com/)