% Preamble
\documentclass[a4paper,12pt]{article}

% Packages
\usepackage[french]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{tabularx}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{eurosym}
\usepackage{epsfig}

% Title
\title{Technologie Internet 2 : Python.}
\author{D.Moreaux}

% Document
\begin{document}
\maketitle
\section{Introduction}
Le but de ce projet est de réaliser une application web sous Python en utilisant le moteur Flask ainsi que les
templates Jinja2.

Différentes contraintes seront expliquées pendant le cours à propos de l'organisation du site et de certains patterns
de code à employer. Les contraintes présentées au cours seront considérées comme faisant partie de l'énoncé et devront
impérativement être respectées. Le but est d'amener à utiliser certaines techniques et outils.

Le projet doit impérativement être fonctionnel sur l'espace web sur endor.be qui sera fourni. Cet espace web est
hébergé sur un système de type Unix qui est donc case-sensitive (contrairement à Windows). Le serveur dispose des
bibliothèques Flask, psycopg2 et psycopg3. L'installation d'autres bibliothèques peut être demandée mais est sujette
à un accord préalable.

\section{Le projet}
Le programme à réaliser est une adaptation web du jeu "Hunt the Wumpus" tel qu'il existe sur le TI-99/4A. Des graphiques
sont proposés mais leur emploi n'est pas imposé et ils peuvent être remplacé par d'autres graphiques similaires.

Le joueur doit s'aventurer dans un labyrinthe de caves interconnectées afin de tuer le Wumpus, une créature
particulièrement vorace. Pour cela, il est armé d'un arc et d'une flèche magique, seule capable de tuer le Wumpus et
également capable de suivre les couloirs pour arriver à la cave qui suit.

Le Wumpus peut être repéré à deux cases de distance par les restes qu'il laisse autour de son repaire. Dans le jeu
original, ces restes sont matérialisés par des disques rouges au milieu de la cave. Les couloirs ne sont pas pris en
compte dans la distance de deux cases. Si le joueur arrive sur la case du Wumpus, il est immédiatement dévoré par ce
dernier.

Dans le labyrinthe peut aussi se trouver un ou plusieurs puit(s) de slime. Si le joueur s'aventure dans ces cases, il
tombe dans le puit et décède. Les cases adjacentes à ces puits sont colonisés par de la mousse et sont
représentées en vert dans le jeu d'origine.

Le complexe de cave sert aussi de refuge à des chauves-souris géantes. Si une chauve-souris est dérangée par le joueur,
à la seconde fois où il entre dans la cave où elle se trouve, elle emmènent le joueur dans une case au hasard, déjà
visitée ou pas, avant de choisir une nouvelle cave en espérant qu'elle soit plus calme. Elles n'amèneront jamais
le joueur dans le repère du Wumpus ou dans un puit de slime mais elles peuvent l'amener dans un couloir adjacent.

A son entrée dans le labyrinthe, le joueur ne connaît que la case dans laquelle il se trouve. Il devra donc explorer le
labyrinthe case par case pour trouver et tuer le Wumpus. Une fois que l'on a identifié la position du Wumpus, il
suffira de se positionner dans une case adjacente, de tirer la flèche et indiquer dans quelle direction on la tire. Si
le Wumpus est touché, il est tué et le joueur gagne. Si par contre le joueur s'est trompé, il a perdu sa flèche et la
partie est perdue.

Différents niveaux de difficulté existent. Selon le niveau, il y aura plus ou moins de couloirs présents et plus ou
moins de chauve-souris. Le tableau de jeu comporte 8x6 cases et 2 puits de slime. Au niveau facile, il n'y a qu'une
chauve-souris, aux niveaux moyens et difficile, il y en aura 2. Le nombre de couloirs sera tiré au hasard entre des
limites qui dépendent du niveau. Au niveau facile, il y aura en moyenne 32 cavernes et 10 couloirs (8-14), au niveau
moyen, 24 cavernes et 18 couloirs et au niveau difficile, 16 cavernes et 26 couloirs. Il sera nécessaire que toutes les
cases soient accessibles.

Il est également possible de prévoir un mode {\em blindfold} où on ne voit que la case dans laquelle on se trouve et
un mode {\em express} où les couloirs sont franchis automatiquement jusqu'à la cave destination.

Un formulaire de création de compte sera prévu et les statistiques des joueurs (victoire, tué par le Wumpus, tombé dans
un puit de slime) ainsi qu'un classement seront conservées dans une DB.

Une description du jeu peut être trouvée à la page

    {\tt https://4apedia.com/index.php?title=Hunt\_the\_Wumpus}.

\section{Technologies à employer}
Le plateau de jeu sera réalisé au moyen d'une table et de divisions dans lesquelles on pourra préciser une image de
fond. Des CSS pourront être appliqués au moyen de classe CSS mais le fichier HTML devra éviter les attributs
{\tt STYLE="..."}.

Le rôle du Javascript sera limité à des animations ou éventuellement au contrôle du son mais ne devra en aucun cas être
utilisé pour faire des appels directs au serveur (fetch, XMLHttpRequest,\dots). Les appels de pages pourront être
réalisés au moyens de liens ou de formulaires.

Côté serveur, on utilisera une application Flask, avec des templates Jinja2 pour les pages. Le mécanisme de page de
Base devra être utilisé.



\end{document}