Skip to content
Snippets Groups Projects
Commit 57494395 authored by Ben Houcine's avatar Ben Houcine
Browse files

Ajout tardif du fichier .tex

parent bad2b258
No related branches found
No related tags found
No related merge requests found
main.tex 0 → 100644
\documentclass[]{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{graphicx}
\usepackage{hyperref}
\usepackage{xcolor}
\usepackage[francais]{babel}
\title{\textbf{Projet KingDomino}}
\author{Ben Houcine Elijah}
\date{\today}
\begin{document}
\maketitle
\newpage
\tableofcontents
\newpage
\chapter{Introduction}
\section{Début du projet}
Sans grande surprise, il n'y a rien à dire sur le début du projet. La lecture du document a pu être fastidieuse, il ne paraissait pas naturel pour moi de suivre une méthode aussi détaillée qui ne semblait pas laisser beaucoup de place à l'amélioration. De plus, l'occasion de découvrir de nouveaux environnements de travail a été une opportunité qui m'aura valu beaucoup de ralentissement dans mon projet.
\section{Objectifs}
Les quelques objectifs initiaux étaient les suivants:
\begin{itemize}
\item Apprendre à utiliser vim/vi
\item Créer un projet réellement unique
\item Découvrir de nouvelles utilisations de python
\end{itemize}
\section{Organisation et déroulement}
L'idée était assez simple, d'abord finir vite la partié guidée, puis travailler sur des idées personnels, ensuite finaliser le rapport et le projet. La partie guidée a été faite en 1 semaine environ. Les 2 mois suivants ont surtout servi à des recherches sur les polyominos dont je ferais part à la fin de ce rapport. Enfin, la troisième partie s'est retrouvé écourté par mon innatention, puisque je me suis retrouvé à confondre (jusqu'à la reception du mail) la date de passage pour la soutenance, et celle du rendu du projet.
\chapter{Partie guidée}
\section{Premiers fichiers}
Les quelques premiers ont constitués une excellente introduction, c'est avec un grand plaisir que j'ai rapidement complété chacun d'entre eux, encore une fois, peu de chose à dire ici, le rendu de mon projet sur git permet bien de voir son bon fonctionnement
\section{Imprévus}
\begin{itemize}
\item Mettre en place tout les outils nécessaires pour travailler s'est avéré bien plus compliqué que prévu. Même avec l'utilisation des machines virtuelle proposées par ISIMA. J'ai essayé quelques fois d'installer un second OS sur mon ordinateur personnel, sans succès
\item Comme je le craignais, travailler sur un code pré-fait apporte parfois beaucoup de confusion, ainsi, inverser les mots "up" et "top" est une erreur qui a été une perte de temps inutile.
\item Pour finir, la deadline pour le rendu s'est avérée être beaucoup plus tôt que je ne l'imaginais, je crains que cela ait laissé quelques marques sur ce projet.\\
\item De plus, une petite confusion entre les fonctions couronnes\_zone et score\_zones a créé un déséquilibre entre les deux, ou couronnes\_zone effectue directement le calcul du score. Comme illustrer ci dessous (à noter que ces captures d'écran ont étés effectués sur un logiciel à part afin de faciliter la visualisation)
\begin{figure}
\centering
\includegraphics[width=1\linewidth]{fonctions_zone.png}
\caption{couronnes\_zone et score\_zone}
\end{figure}
\end{itemize}
\chapter{Extensions}
\section{pygame et graphique}
Afin de faire fonctionner cette partie, il faut éxecuter le fichier G, cependant il est nécessaire de préalablement empêcher le fichier F d'éxecuter immédiatement la fonction main()
Une très mauvaise expérience. Après avoir découvert quelques jours avant le rendu final le temps qu'il restait, je me suis énormément investi dans l'apprentissage de ce module. C'est un échec. Bien que certaine fonctionnalité soient présentes, ce n'est pas jouable.
Il reste néanmoins important de noter l'utilisation d'une stratégie astucieuse pour l'affichage correcte des tuiles. Dans un premier temps, le livre de règles du jeu KingDomino a apporté toutes les ressources dont j'avais besoin. Par la suite, c'est un système de dossier qui permettait un bon affichage. Dans un dossier nommé "sprites" se trouvent différents dossiers, nommé selon la première lettre de chaque domino. Dans ces dossiers se trouvent des images numérotées selon le nombre de couronne, ainsi la tuile Y1 se trouvera via l'adresse ./sprites/Y/1.png
Voir code ci-dessous
\begin{figure}
\centering
\includegraphics[width=0.7\linewidth]{sprites.png}
\caption{Code pour récupérer les images}
\end{figure}
\newpage
\section{Autres extensions}
\subsection{Taille du royaume}
Afin de permettre une taille de royaume complétement différente, le seul réel problème est de garder un jeu équilibré. N'ayant pas réellement le temps de me poser la question de comment rajouter de nouvelle pièce, j'utilise plutôt un pogramme calculant le nombre de domino nécessaire, et créant autant de copies de la liste de base que nécessaire.
\subsection{Final Swap}
Voici un principe que j'espère innovant, ajoutant une actionà effectuer par chaque joueur en fin de partie. Bien qu'elle semble un peu légère, cette extension offre une toute autre dimension au jeu, puisque l'une des tuiles du plateau pourra être déplacé, ainsi sacrifier de l'espace afin de gagner une bonne tuile peut devenir une stratégie. Le programme qui l'accompagne est très explicite, ainsi je ne vois pas l'intérêt d'approfondir.
\subsection{Couleurs}
Son bon fonctionnement n'est pas garantie sur toutes les machines, mais cette drôle d'extension permet l'ajout de couleur directement à la console, une alternative minimaliste à une interface graphique, qui use des séquences d'échappement ANSI.
\newpage
\chapter{Polyominos}
\begin{figure}
\centering
\includegraphics[width=0.5\linewidth]{polylogo.png}
\caption{Logo pensé pour KingPolyomino (Ces objets ne sont pas des polyominos)}
\label{fig:enter-label}
\end{figure}
Dès le début de ce projet, l'idée d'un jeu de domino me paraissait bien simple, je me suis donc immédiatement pencher sur ce qui me semblait être l'étape suivante.
\section{Présentation}
Un polyomino est un assemblage de carrés dans un plan tous connecté par un côté entier. Il peut être amusant d'essayer d'en imaginer de toute les formes et de toutes les tailles. La plupart d'entre eux sont nommés, et certains sont parfois utiliés, comme les fameux tetrominos du jeu Tetris.
\begin{figure}
\centering
\includegraphics[width=0.5\linewidth]{polyominos_exemple.png}
\caption{Enter Caption}
\label{fig:enter-label}
\end{figure}
\newpage
\section{Problème}
Dans KingDomino, mplémenter des polyominos ne semble pas impossible, on pourrait s'imaginer une règle disant qu'un polyomino doit avoir au moins la moitié de ses cases identiques à un autre polyomino pour être valide, cependant, il reste des qestions :
\begin{itemize}
\item Quelle taille devrait faire le plateau ?
\item Combien de polyomino sont impossible à placer ?
\item Combien de polyominos devraient être créés dans un premier temps
\end{itemize}
La réponse est inconnue\\
C'est donc d'ici que m'ait venu une grande inspiration à me lancer dans le dénombrement de ces objets.
\section{Premières idées}
Généralement, les problèmes de dénombrement commence par la division de l'ensemble d'éléments recherchés en une somme de plus petits ensemble restreints. Il se trouve qu'il existe déjà quelques catégories, selon s'il un polyomino peut effectuer une rotation ou une réflexion par exemple. Je me suis intéressé aux polyominos libre, soit ceux qui sont différents les uns aux autres à la fois par rotation, translation et réflexion.
\section{Quelques pistes}
Ce problème m'a échappé, du moins je n'ai pas pu le résoudre avant d'avoir eu à rendre ce projet, cependant quelques pistes intéressantes restent à explorer, sans trop aller dans les détails, voici le modèle le plus prometteur:
\subsection{Polyominos construit via un triangle}
Puisque l'on s'intéresse aux polyominos libres, il ne suffit d'étudier qu'une seule diagonale parmis les 8 possibles afin de pouvoir produire les 7 autres. Et comme de nombreux problèmes de ce genre, construire en diagonale semble être un bon début, permeettant de suivre un axe de symmétrie. Ici, on part du carré le plus en bas. La question du nombre de polyominos constructible revient au dénombrement du nombre d'agencement, colonne par colonne, du nombre maximum de carrées pouvant s'y trouver, par exemple puor un ocotomino, on pourrait avoir 8 sur la première et 0 sur la deuxième, ou alors 4 sur la première, 3 sur la deuxième et 1 sur la troisième. La colonne n ne sera atteignable qu'avec un minimum de 2n+1 carrées. C'est un début. Ensuite, on peut s'interroger sur le nombre de "trou" que l'on peut placer parmis ces colonnes, soit le nombre de point ou la suppression d'un carrée de casse pas le polyomino. Ici, ce sont des coefficients binomiaux qui nous apporteront la réponse, sans aucun doute. cependant il reste le problème de trier des polyominos qui pourrait être à la fois libre et unilatéraux, qui fausseraient les calculs.
\begin{figure}
\centering
\includegraphics[width=0.5\linewidth]{polyominos_triangle.png}
\caption{Construction triangulaire}
\label{fig:enter-label}
\end{figure}
\subsection{Polyominos construit via une croix}
Par opposition, on cherche dans un second temps les polyominos qui n'apparaisse spécifiquement pas dans la première figure, c'est à dire ceux qui ont 4 éxtrémités de hauteur et de largeur différentes. Dans ce cas là il s'agira de trouver tout les carrées pouvant être reliés et le nombre de chemin qui passe de l'un des carrées existant à un nouveau carrés plus éloignés sans chevauchés ceux par lesquels on est déjà passé. Cette description qui parait complexe est en fait un problème relativement facile à résoudre à la main. En utilisant des calculs de combinaison, on peut déterminer le nombre de polyominos passant par une tuile donnée. Reste à savoir comment une formule mathématique pourrait également prendre en compte les limites à ne pas dépasser pour rester dans cette catégorie
\begin{figure}
\centering
\includegraphics[width=0.5\linewidth]{polymoinos_croix.png}
\caption{Polyominos en croix}
\label{fig:enter-label}
\end{figure}
\subsection{clotûre polyominos}
Voici un court résumé des recherches, je pourrais poser quelques chiffres et formules supplémentaires, mais cela me semble sans importance. Ce projet risque d'occuper encore beaucoup de mes années d'étude, et cette approche bien que farfelue est en réalité un choix cohérent face aux différents problèmes que d'autres modélisations peuvent apporter. Ces recherches n'auront pas étés vaines mais n'auront eus que peut d'intérêt pour ce projet.
\chapter{Conclusion}
\section{Résumé}
C'est sans doute un projet pour lequel mon temps n'a pas été investi au mieux, mais il aura été particulièrement enrichissant sur de nombreux points et m'aura permis une approche dans des conditions réelles d'IDE. J'espère qu'à défaut d'avoir un rendu impressionant, j'en aurais un étonnant.
\section{bibliographie}
\begin{itemize}
\item An Asymptotic Lower Bound On The Number Of Polyominoes - Vuong Bui
\item L'aide de mes camarades et de mon professeur.
\end{itemize}
\end{document}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment