diff --git a/docs/rapports/rapport-final/figures/Menu_principale.png b/docs/rapports/rapport-final/figures/Menu_principale.png new file mode 100644 index 0000000..1016e35 Binary files /dev/null and b/docs/rapports/rapport-final/figures/Menu_principale.png differ diff --git a/docs/rapports/rapport-final/figures/ball_1.png b/docs/rapports/rapport-final/figures/ball_1.png new file mode 100644 index 0000000..2637cf2 Binary files /dev/null and b/docs/rapports/rapport-final/figures/ball_1.png differ diff --git a/docs/rapports/rapport-final/figures/block.png b/docs/rapports/rapport-final/figures/block.png new file mode 100644 index 0000000..ee71277 Binary files /dev/null and b/docs/rapports/rapport-final/figures/block.png differ diff --git a/docs/rapports/rapport-final/figures/block_blue.png b/docs/rapports/rapport-final/figures/block_blue.png new file mode 100644 index 0000000..79d6303 Binary files /dev/null and b/docs/rapports/rapport-final/figures/block_blue.png differ diff --git a/docs/rapports/rapport-final/figures/block_caisse.png b/docs/rapports/rapport-final/figures/block_caisse.png new file mode 100644 index 0000000..030139c Binary files /dev/null and b/docs/rapports/rapport-final/figures/block_caisse.png differ diff --git a/docs/rapports/rapport-final/figures/block_dead.png b/docs/rapports/rapport-final/figures/block_dead.png new file mode 100644 index 0000000..fd3b96a Binary files /dev/null and b/docs/rapports/rapport-final/figures/block_dead.png differ diff --git a/docs/rapports/rapport-final/figures/block_end_2.png b/docs/rapports/rapport-final/figures/block_end_2.png new file mode 100644 index 0000000..0814630 Binary files /dev/null and b/docs/rapports/rapport-final/figures/block_end_2.png differ diff --git a/docs/rapports/rapport-final/figures/block_gravity_south.png b/docs/rapports/rapport-final/figures/block_gravity_south.png new file mode 100644 index 0000000..6a0abc7 Binary files /dev/null and b/docs/rapports/rapport-final/figures/block_gravity_south.png differ diff --git a/docs/rapports/rapport-final/figures/block_polarity.png b/docs/rapports/rapport-final/figures/block_polarity.png new file mode 100644 index 0000000..4ea2c65 Binary files /dev/null and b/docs/rapports/rapport-final/figures/block_polarity.png differ diff --git a/docs/rapports/rapport-final/figures/block_red.png b/docs/rapports/rapport-final/figures/block_red.png new file mode 100644 index 0000000..aa03480 Binary files /dev/null and b/docs/rapports/rapport-final/figures/block_red.png differ diff --git a/docs/rapports/rapport-final/figures/block_selection.png b/docs/rapports/rapport-final/figures/block_selection.png new file mode 100644 index 0000000..1e01865 Binary files /dev/null and b/docs/rapports/rapport-final/figures/block_selection.png differ diff --git a/docs/rapports/rapport-final/figures/editeur.png b/docs/rapports/rapport-final/figures/editeur.png new file mode 100644 index 0000000..fe41885 Binary files /dev/null and b/docs/rapports/rapport-final/figures/editeur.png differ diff --git a/docs/rapports/rapport-final/figures/menu_editeur.png b/docs/rapports/rapport-final/figures/menu_editeur.png new file mode 100644 index 0000000..95293a8 Binary files /dev/null and b/docs/rapports/rapport-final/figures/menu_editeur.png differ diff --git a/docs/rapports/rapport-final/figures/menu_jouer.png b/docs/rapports/rapport-final/figures/menu_jouer.png new file mode 100644 index 0000000..89c4e9a Binary files /dev/null and b/docs/rapports/rapport-final/figures/menu_jouer.png differ diff --git a/docs/rapports/rapport-final/parts/develop.tex b/docs/rapports/rapport-final/parts/develop.tex index df0417a..8b75030 100644 --- a/docs/rapports/rapport-final/parts/develop.tex +++ b/docs/rapports/rapport-final/parts/develop.tex @@ -33,11 +33,10 @@ partie du projet. \section{Niveaux du jeu} -Tout d'abord, il fallut définir le format des fichiers de niveaux, -puis lire et écrire le format. Afin de pouvoir créer des niveaux +Tout d'abord, il fallut définir le format des fichiers de niveaux. Pour cela, nous avons au préalable fait des recherches sur les normes de base, puis nous avons listé tout ce qu'il fallait sauvegarder dans le niveau. Il fallut ensuite lire et écrire le format. Afin de pouvoir créer des niveaux plus facilement, mais également permettre aux utilisateurs de jouer à leurs propres niveaux, nous avons choisi de créer un éditeur de -niveau en mode graphique. Cela nous prit plus de temps que prévu, +niveaux en mode graphique. Cela nous prit plus de temps que prévu, c'est pourquoi il nous restait peu de temps pour la création de niveaux. Nous avons donc réfléchi à des niveaux courts mais demandant de la réflexion afin de les rendre intéressants @@ -58,8 +57,6 @@ envoyait sur un autre menu (choix de niveaux). Interface de l'éditeur ? -Menus pause, gagné, perdu ? - \section{Univers graphique} Nous avons décidé d'ajouter des musiques au jeu afin de le rendre diff --git a/docs/rapports/rapport-final/parts/intro.tex b/docs/rapports/rapport-final/parts/intro.tex index f4ec3a1..79d50bb 100644 --- a/docs/rapports/rapport-final/parts/intro.tex +++ b/docs/rapports/rapport-final/parts/intro.tex @@ -1 +1,97 @@ \chapter{Introduction} + +\subsection {Généralités} +Dans le cadre du module Projet C.M.I du second semestre de licence 1, +nous avons développé en équipe un jeu vidéo nommé "Skizzle". +Notre équipe est composée de trois personnes, Mattéo Delabre, Maëlle Beuret + et Rémi Cérès. +\\ + +L'objectif principal de ce projet est la création d'un jeu vidéo fonctionnel. Le jeu utilise les bases d'algorithmies apprises au premier semestre ainsi que nos connaissances et +recherches personnelles.\\ +La création de ce jeu nous a permis d'acquérir des notions de la gestion de projet, ainsi que le travail en collaboration et l'apprentissage de la +communication au sein d'une équipe. +\\ + +Le développement du projet s'est déroulé sur une période d'un mois et une semaine, +soit du vendredi 4 mars 2016 au lundi 11 avril 2016 inclus.\\ +Chaque vendredi, +lors de la séance de trois heures consacrée au projet C.M.I, un point était réalisé avec chaque membre de l'équipe. +Une repartition des tâches et des objectifs +à atteindre pour la semaine suivante étaient détérminés. De plus, durant la semaine nous avons communiqué afin de faciliter l'organisation, de nous coordonner et de nous entraider.\\ + +Les séances de C.M.I nous ont permises de résoudre les problèmes rencontrés. + +\subsection {Sujet} +Le projet a pour sujet la réalisation d'un jeu vidéo +fonctionnel en groupe ou en individuel.\\ +Le choix du jeu et du langage de programmation est libre; cela peut être une création ou bien un jeu existant.\\ + +Notre choix s'est porté sur un jeu avec un principe original inspiré des jeux de +plate-forme, de coopération et de réflexion. Nous l'avons appelé "Skizzle".\\ + +Il s’agit pour deux joueurs de faire traverser deux +balles à travers un niveau. +La conception du jeu s’appuie sur des éléments physiques pour proposer des +niveaux sous forme de casse-têtes, dans lesquels les deux participants doivent +s’entraider et réfléchir pour parvenir à la fin. + +%Skizzle est constitué d'une suite de niveaux dont le but est de tous les +%terminer. Chaque niveaux est composé de bloc pouvant avoir des interaction avec +%les balle ou sur la physique du jeu, comme par exemple modifié le sens de +%la gravité.\\ +%Le ou les deux joueurs contrôle chacun une balle qu'ils peuvent uniquement +%déplacer vers la droite et la gauche de l'écran. Tous les élément du jeux, +%c'est a dire les blocs et les balles peuvent être aimantés.\\ +% +%Dans chaque niveaux le ou les joueurs doivent réfléchir et d’entraidé en +%s’appuyant sur les différentes interaction possible avec la physique du jeu +%pour parvenir a la fin. +\subsection {Cahiers des charges} + + +\subsubsection{Généralités} + + Fonctionalités + \begin {itemize} + \item Divertir et faire réfléchir les utilisateurs, + \item Multi-plateformes (Linux, OS X, Windows). + \end {itemize} + Contraintes + \begin{itemize} + \item Interface pas adaptée au tactile, + \item Présence de deux joueurs. + \end {itemize} + +\subsubsection {Menu} + +\begin{itemize} + \item Permet à l'utilisateur de choisir son mode de jeu (éditer/jouer), + \item Permet d'afficher la liste des niveaux de maniere dynamique et automatique, + \item Possibilité d'utiliser aussi bien la souris que le clavier. +\end{itemize} + + +\subsubsection{Moteur physique} + +\begin{itemize} + \item Gestion de la force d'interaction coulombienne, + \item Gestion de la force de gravité, + \item Gestion de la force de frottement, + \item Gestion de la force de réaction et de collision. +\end{itemize} + + + +\subsubsection {Éditeur} + +\begin {itemize} + \item Permet de créer un niveau, + \item Permet de modifier un niveau existant, + \item Permet de placer tous les types d'objets, + \item Permet de placer la position initiale des joueurs, + \item Permet de modifier la polarité des objets, + \item Permet de sauvegarder un niveau modifié ou créé, + \item Permet de tester le niveau créé directement dans l'éditeur, + \item Permet de modifier la taille et la forme de la zone jouable. +\end {itemize} diff --git a/docs/rapports/rapport-final/parts/manuel.tex b/docs/rapports/rapport-final/parts/manuel.tex index 9354139..14e11ce 100644 --- a/docs/rapports/rapport-final/parts/manuel.tex +++ b/docs/rapports/rapport-final/parts/manuel.tex @@ -1 +1,191 @@ \chapter{Manuel d'utilisation} + +\subsection {Principe} +Deux joueurs doivent s'entraider pour faire avancer leur balle à travers +des niveaux. Pour cela les joueurs exploitent différents mécanismes +physiques. +\\ + +Le jeu est constitué de niveaux, chaque niveau +étant représentés par une grille de blocs en deux dimensions. Les blocs interagissent +avec les balles et la physique du jeu comme défini dans les sections \ref{OB}. +\\ + +Les joueurs valident un niveau en faisant parvenir leurs +balles sur un bloc d'arrivée. Ils terminent ainsi le niveau, le but étant de tous +les achever. + +\subsection {Menu de sélection} + +\subsubsection{Menu principal} + +Au lancement du jeu le menu principal apparait : + + +\begin{figure} [h] + \centerline {\includegraphics[width=13cm]{figures/menu_principale.png}} + \caption {Menu principal} + \label {fig:MP} +\end{figure} + +\noindent Ce menu [\ref{fig:MP}] se compose de quatre boutons:\\ +\begin {itemize} +\item \bf Le bouton jouer [\ref{fig:MJ}]\\ +\end {itemize} + +Il permet d'accéder au menu de sélection des niveaux + + +%\item règles du jeu : affiche les règles du jeu. +%\item Éditeur : permet de crée un nouveau niveau ou de modifier un niveau existant. +%\item Quitter : permet de quitter le jeu.\\ + +\newpage + +\begin{figure} [!h] + \centerline {\includegraphics[width=13cm]{figures/menu_jouer.png}} + \caption {Menu jouer} + \label {fig:MJ} +\end{figure} + +\noindent Ce menu [\ref{fig:MJ}] se compose de deux types de boutons : les boutons niveaux permettent aux joueurs de choisir un espace de jeu et +le bouton retour de revenir vers le menu principal [\ref{fig:MP}].\\ + +\begin {itemize} +\item \bf Le bouton règles du jeu. +\end {itemize} + +Ce bouton affiche les règles du jeu. +\\ +\\ + +\begin {itemize} +\item \bf Le bouton éditeur. +\end {itemize} + +Ce bouton permet de créer un nouveau niveau ou de modifier un niveau existant. + +\newpage + +\begin{figure} [!h] + \centerline {\includegraphics[width=13cm]{figures/menu_editeur.png}} + \caption {Menu éditeur} + \label {fig:ME} +\end{figure} + + +\noindent Ce menu [\ref{fig:ME}] se compose de trois types de boutons : Créer un nouveau niveau, éditer un niveau existant, + et retour qui renvoie vers le menu principal [\ref{fig:MP}].\\ + + + + +\noindent Les touches \Touche{$\uparrow$} , \Touche{$\downarrow$} ou +le passage de la souris sur un des boutons permettent la séléction d'un élément du menu. +le bouton sélectionné se souligne.\\ + +\noindent La touche \Touche{Enter} ou un clic avec la souris permettent de valider le choix.\\ + +\noindent Les touches \Touche{Backspace} et \Touche{Echap} permettent de revenir au menu précédent. \\ + +\subsection {Objets} + +\label {OB} + +\subsubsection{Balles} + +\noindent {\raisebox{-.4\height}{\includegraphics[width=23px]{figures/ball_1.png}} Les balles sont controlées par les joueurs. \\ + +\subsubsection{Polarité} + +\noindent {\raisebox{-.4\height}{\includegraphics[width=23px]{figures/block_blue.png}} Les objets de couleurs bleus repoussent tous ceux de la même couleur et attirent les objets de couleurs rouges. \\ + +\noindent {\raisebox{-.4\height}{\includegraphics[width=23px]{figures/block_red.png}} Les objets de couleurs rouges repoussent tous ceux de la même couleur et attirent les objets de couleurs bleus. \\ + +\subsubsection{Blocs} + +\noindent {\raisebox{-.4\height}{\includegraphics[width=23px]{figures/block.png}} Le bloc de base ne réalise aucune action particulière. \\ + +\noindent \raisebox{-.4\height}{\includegraphics[width=23px]{figures/block_caisse.png}} La caisse est un bloc qui peut être poussé. \\ + +\noindent \raisebox{-.4\height}{\includegraphics[width=23px]{figures/block_gravity_south.png}} Le bloc de gravité modifie le sens de la gravité lorsqu'un joueur ou une caisse rentre en collision avec lui. \\ + +\noindent \raisebox{-.4\height}{\includegraphics[width=23px]{figures/block_polarity.png}} Le bloc inverseur de polarité inverse la polarité de la balle qui rentre en collision avec lui. \\ + +\noindent \raisebox{-.4\height}{\includegraphics[width=23px]{figures/block_dead.png}} Le bloc de mort fait perdre la partie si un des deux joueurs rentrent en collision avec lui. \\ + +\noindent \raisebox{-.3\height}{\includegraphics[width=23px]{figures/block_end_2.png}} Le bloc d'arrivée fait gagner le joueur qui rentre en collision avec lui. \\ + + +\subsection {Jeux} + +\label {joué} + +Les joueurs ne peuvent déplacer leurs balles que vers la gauche ou la droite.\\ +Le joueur 1 utilise \Touche{$\rightarrow$} pour se déplacer vers la droite et \Touche{$\leftarrow$} pour se déplacer vers la gauche.\\ +Le joueur 2 utilise \Touche{D} pour se déplacer vers la droite et \Touche{Q} pour se déplacer vers la gauche.\\ + +Les joueurs peuvent mettre le jeu en pause avec la touche \Touche{Échap}, ou bien quitter le niveau en appuyant sur \Touche{Espace}. + +Un joueur peut mourrir de deux façons; soit en rentrant en collision avec un bloc de mort \raisebox{-.4\height}{\includegraphics[width=15px]{figures/block_dead.png}} soit en sortant de la zone jouable.\\ +\\ + +\subsection {Editeur} + +\begin{figure} [!h] + \centerline {\includegraphics[width=13cm]{figures/editeur.png}} + \caption {Éditeur} + \label {fig:ED} +\end{figure} + +\subsubsection {Gestion des objets} + +La séléction de l'objet s'éffectue dans la barre latérale droite de la fenêtre à l'aide de la souris. [\ref{fig:ED}] \\ +Un clic avec le bouton gauche de la souris permet de le placer sur un zone libre. +Le maintien du clic gauche permet de placer plusieurs objets à la fois.\\ + +Pour modifier la polarité d'un objet, le curseur doit être placé sur celui-ci. La touche \Touche{Ctrl} doit être enfoncée tout en faisant glisser la mollette de la souris, ou bien en faisant glisser deux doigts sur le pavé tactile vers le haut ou le bas. \\ +\\ + +La selection d'un objet se fait avec la touche \Touche{Ctrl} et un clic sur celui-ci. Une multi-sélection peut être réalisée en cliquant sur plusieurs objets tout en maintenant la touche \Touche{Ctrl} enfoncée. \\ +La réalisation d'une sélection rectangulaire est possible en maintenant la touche \Touche{Shift} et en faisant glisser la souris avec le clic gauche enfoncé sur la zone à sélectionner. \\ +Un objet sélectionné a des bordures rouges. [\ref{fig:BBS}]\\ + +\begin{figure} [!h] + \centerline {\includegraphics[width=25px]{figures/block_selection.png}} + \caption {Bloc de base sélectionné} + \label {fig:BBS} +\end{figure} + +La suppression d'un objet s'effectue en cliquant dessus avec le bouton droit de la souris. +Plusieurs objets peuvent être supprimés aprés leurs séléctions en appuyant sur la touche \Touche{Suppr}. + + +\subsubsection {Compte à rebours} + +Le compte à rebours se situe en haut au centre de le fenêtre. Durant la partie s'il arrive à 0, les joueurs meurent et la partie est perdue.\\ + +La valeur du compte à rebours peut être modifiée dans l'éditeur en cliquant sur les fléches se situant à coté. +Il est également possible de placer la souris sur ce dernier en faisant glisser la mollette ou deux doigts sur le pavé tactile vers le haut ou le bas. \\ + +\subsubsection {Zone de jeu} +La zone jouable est représentée dans l'éditeur par un polygone rouge [\ref{fig:ED}] composé de quatre points. + Chacun de ces points peuvent être déplacés en cliquant dessus afin de modifier la taille et la forme de la zone. + +\subsubsection {Gestion de la caméra} +Le déplacement de la caméra s'effectue en plaçant la souris vers une bordure de la fenêtre. +La molette de la souris peut être utilisée pour un défilement vertical ou horizontal si la touche \Touche{Shift} est enfoncée. +\\ + +il es possible également de faire glisser deux doigts sur le pavé tactile afin de déplacer la caméra dans la direction désirée.\\ + +\subsubsection {Commandes générales} + +Il est possible de tester le niveau à tout moment en appuyant sur la touche \Touche{Espace}. +Pour revenir à l'édition il faut appuyer de nouveau sur \Touche{Espace}.\\ +\\ + +Afin de sauvegarder le niveau il est necessaire de réaliser la combinaison de touches suivantes : \Touche{Ctrl} + \Touche {S}. (en mode édition).\\ +\\ + +Pour quitter l’éditeur et revenir au menu la touche \Touche{Échap} doit être utilisé. diff --git a/docs/rapports/rapport-final/parts/organisation.tex b/docs/rapports/rapport-final/parts/organisation.tex index 48e0831..f0c964b 100644 --- a/docs/rapports/rapport-final/parts/organisation.tex +++ b/docs/rapports/rapport-final/parts/organisation.tex @@ -6,7 +6,7 @@ Chaque membre du groupe a travaillé en autonomie. Les réunions lors des séanc prévues étaient consacrées aux explications sur le travail de chacun ainsi qu'à la répartition des tâches pour la semaine suivante. -Chacun d'entre nous était chargé de tâches spécifiques (voir figure 1). +Chacun d'entre nous était chargé de tâches spécifiques (voir figure 2.1). Certaines parties du développement nécessitaient plusieurs personne et étaient ainsi partagées entre certains membres du groupe. La conception et les tests des niveaux, le fond des menus ainsi que les décors furent