0% ont trouvé ce document utile (0 vote)
2 vues26 pages

Rapport Snakefinal

Le rapport présente un projet de développement d'un jeu Snake en C# réalisé par des étudiants de Polytech'Clermont-Ferrand. Il inclut une analyse du jeu avec des schémas UML, un guide pour l'utilisateur et un guide pour le programmeur, détaillant les fonctionnalités et le fonctionnement du jeu. Le projet a permis aux étudiants d'améliorer leurs compétences en programmation tout en étant ludique.

Transféré par

Havva Kané
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
2 vues26 pages

Rapport Snakefinal

Le rapport présente un projet de développement d'un jeu Snake en C# réalisé par des étudiants de Polytech'Clermont-Ferrand. Il inclut une analyse du jeu avec des schémas UML, un guide pour l'utilisateur et un guide pour le programmeur, détaillant les fonctionnalités et le fonctionnement du jeu. Le projet a permis aux étudiants d'améliorer leurs compétences en programmation tout en étant ludique.

Transféré par

Havva Kané
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Rapport du projet C#

Le Snake

VINCENT Benjamin Année universitaire 2011-2012


WISSON Thomas Encadré par M De Vaulx
GMM2
Page 2
Introduction

Dans le cadre de notre deuxième année en école d’ingénieurs à Polytech'Clermont-Ferrand


nous avons eu pour tâche la réalisation d'un projet informatique.
Notre objectif était de réaliser l’analyse à l’aide de schéma UML et la conception d’un snake
en utilisant le langage C#.

Dans ce dossier nous allons tout d’abord exposer l’analyse de ce jeu, puis un manuel
d’utilisateur et enfin un manuel du programmeur.

Page 3
Sommaire

Introduction ............................................................................................................................3
Partie I : Analyse du jeu ..........................................................................................................5
1. Les cas d’utilisation .....................................................................................................5
2. Les diagrammes de classe ............................................................................................6
3. Les diagrammes de séquence .......................................................................................7
4. Le diagramme de transition ........................................................................................ 13
Partie II : Le guide de l’utilisateur......................................................................................... 14
1. Présentation générale ................................................................................................. 14
2. Déroulement du jeu .................................................................................................... 14
Partie III : Le guide du programmeur .................................................................................... 19
1. La fonction : my_timer_Tick_ .................................................................................... 19
2. La fonction : topscore ................................................................................................ 20
3. La fonction : plateau ..................................................................................................21
4. La fonction : deplacer ................................................................................................ 23
Conclusion ........................................................................................................................... 26

Page 4
Partie I : Analyse du jeu

1. Les cas d’utilisation


 Acteur : L’utilisateur

 Cas d’utilisation pour l’utilisateur : _ Initialisation (lancement du jeu)


_ Choix du niveau
_ Déplacer les cases
_ Vérifier
_ Quitter

 Diagramme des cas d’utilisations :

Page 5
2. Les diagrammes de classe

Pour une meilleur visibilité, nous n’avons pas affiché toutes les classes qui hérite de la
classe case, les classes qui n’apparaissent pas sont : casebonustaille, casemalustaille,
casebonusvitesse, casemalusvitesse, casemur et caseproie. Leur représentation UML est la
même que celle de casevide.

Page 6
3. Les diagrammes de séquence

Nous avons choisi de traité le déplacement du serpent et la génération du plateau de jeu à chaque niveau dans ces diagrammes de séquence.

Déplacer le serpent
Cas où l'utilisateur gagne

Form1 Win plateau

Form1_KeyPress

Timers : stop
actualise()

Show ()

Sauvegarde ()

Bok_click ()

Dispose ()

Relancer ()

plateau
Timers : start
Déplacer le serpent
Cas où l'utilisateur perd

Form1 Perdu plateau

Form1_KeyPress
Topscore ()
Timers : stop
actualise()

Show ()

Affichetopscore ()

Bok_click ()

Dispose ()

Page 8
Déplacer le serpent
Cas où la partie reste en cours

Form1 Serpent plateau casecorp casetete

ALT

Form1_KeyPress
deplacer(direction) Etatpartie = -1

[obstacle]

Perdu

Ref
Type de case [autre types cases]

DeplacerSuivant
Direction () *

DeplacerSuivant
Direction ()

Page 9
Type de case

Serpent plateau

ALT Nbproiemange ++

Action ()
[proie] casecorp
Apparitionproie ()
caseproie
Score

Action ()
casecorp
[malustaille]
Score

[bonustaille] reduction ()

[bonusvitesse]
Vitesse = 0

[malusvitesse]
Vitesse = 2

Page 10
Page 11
Page 12
4. Le diagramme de transition

Ce diagramme correspond à l’évolution de la vitesse du serpent au cours d’une partie.

vitesse est un entier attribut de serpent.


vitessechangee est un booléen attribut de serpent.

Page 13
Partie II : Le guide de l’utilisateur
Dans cette partie nous allons expliciter les règles et le fonctionnement de notre jeu, le snake.

1. Présentation générale

Le jeu consiste à diriger un serpent afin de lui faire manger les différentes proies qui
apparaissent de façon aléatoire sur le plateau de jeu tout en évitant les divers obstacles qui
seront sur sa route. Chaque proie rapporte des points et le but du jeu est d’avoir le plus de
point possible. Manger des proies fait grandir le serpent alors qu’entrer en contact avec des
obstacles comme des murs, les bords du plateau de jeu ou encore le corps du serpent termine
la partie.

En plus des proies et des murs le jeu comprend aussi des bonus et malus qui agissent sur
le serpent, il en existe de deux types, les bonus et malus dit de taille et ceux dit de vitesse. Les
bonus et malus de vitesse réduisent et augmentent respectivement la vitesse du serpent de
façon temporaire alors que les bonus et malus de taille réduisent et augmentent
respectivement la taille du serpent de façon permanente. Les bonus et malus apparaissent de
façon aléatoire sur le plateau de jeu et pendant un temps limité, néanmoins il n’y a toujours
qu’un seul malus ou bonus sur le plateau du jeu. Les malus rapportent des points au joueur.

Le jeu comprend plusieurs niveaux, la différence entre les niveaux se tient dans le nombre
de proies à manger, le nombre de mur présent ainsi que les points que chaque proie rapporte.
Il est possible de commencer à un niveau donné à condition d’avoir débloqué au préalable ce
niveau. Pour débloquer ce niveau il suffit d’avoir joué une fois dans ce niveau.

Le jeu nous permet aussi conserver nos scores, pour cela au début de chaque partie nous
entrons notre pseudo. Par défaut, le jeu nous propose toujours le dernier pseudo entré.

Nous pouvons aussi mettre la partie en cours sur pause et la reprendre à l’aide du bouton
P.
2. Déroulement du jeu

Lorsque le jeu débute nous sommes sur la page principale du jeu qui nous permet d’entrer
notre pseudo et le niveau auquel nous souhaitons démarrer notre partie. Si c’est la première
partie, seul le niveau 1 sera disponible. Une fois que nous avons entré ces deux informations
nous sommes prêt à démarrer le jeu, on clique alors sur le bouton commencer la partie.
Nous avons donc la fenêtre suivante :

Page 14
Entrer le nom du joueur

Entrer le niveau désiré

Détaille les touches utiles


Cliquer pour commencer
pour le jeu

Une fois que l’on clique sur le bouton la partie est lancée, attention le serpent se déplace
seul, si vous ne vous dépêchez pas, il ira contre le mur du plateau et vous aurez perdu !
Le serpent est représenté par des carrés, le carré bleu représente sa tête alors que le carré
rouge représente les éléments de son corps. Au début de chaque niveau le serpent commence
avec une tête et un élément du corps. Le nombre d’éléments du corps augmentera par la suite
après que vous ayez mangé des proies.
Pour déplacer le serpent il faut utiliser la touche « Q » pour aller vers la gauche (du
serpent) et la touche « D » pour aller vers la droite.
Détaillons maintenant la fenêtre de jeu.

Page 15
6 7

3 4

1 : Le champignon représente une proie


2 : Le terrier du serpent il sort par là à chaque nouveau niveau, le terrier est un obstacle, si le
serpent touche le terrier la partie est terminée
3 : Corps du serpent
4 : Tête du serpent
5 : Plateau de jeu, les cases en jaune représentent toutes les possibilités de déplacement du
serpent.
6 : Score du joueur
7 : Nombre de proies mangées depuis le début de la partie

Il y a un certain nombre de bonus et malus dans le jeu, représentés par les images suivantes :

Bonus taille : réduit d’un la taille du corps du serpent


Malus taille : augmente d’un la taille du corps du serpent
Bonus vitesse : qui réduit la vitesse du serpent pendant 5 secondes

Malus vitesse : qui augmente la vitesse du serpent pendant 5 secondes.

Page 16
Une fois que vous aurez mangez un certain nombre de proies, une fenêtre apparait pour vous
signalez que vous avez fini le premier niveau et que vous passez au niveau suivant. Il vous
suffit de cliquer sur niveau suivant pour continuer à jouer.

Cliquer pour passer


au niveau suivant

Une fois que vous aurez cliqué, vous retrouvez une fenêtre similaire à ce que nous avons vu
précédemment, le serpent vient à nouveau de sortir de son terrier à vous de manger les
nouvelles proies !

Si vous touchez un obstacle (un mur, un bord du plateau, le terrier ou le serpent) le jeu se
termine, vous avez perdu. Vous avez alors une fenêtre qui s’affiche. Celle-ci est composée du
tableau des 10 meilleurs scores. Si votre score le permet vous apparaitrez peut être dans ce
tableau.
Pour quitter cette fenêtre cliquer sur le bouton ok pour revenir à la fenêtre principale. Vous
pouvez alors recommencer une nouvelle partie.

Page 17
Page 18
Partie III : Le guide du programmeur

Dans cette partie nous allons expliciter certaines parties délicates de notre code.

Afin de gagner du temps nous nous sommes permis de mettre une grande partie de nos
attributs en public.

1. La fonction : my_timer_Tick_

Cette fonction est une fonction de la classe Form1 qui correspond à la fenêtre de jeu.

 But : Cette fonction permet de déclencher chaque déplacement du serpent.

 Idée : On test l’état de la partie :

o Si le joueur gagne, on arrête le jeu, on affiche la fenêtre «Win» et on génère le


niveau suivant
o Si le joueur perd, on enregistre le score (s’il fait parti des 10 meilleurs), on
affiche la fenêtre « perdu » et on arrête la partie.
o Si la partie est toujours en cours, on déplace le serpent.

 Code :

Page 19
2. La fonction : topscore

Cette fonction est une fonction de la classe Form1 qui correspond à la fenêtre de jeu.

 But : Cette fonction permet d’enregistrer le score de l’utilisateur parmi les meilleurs
scores.

 Idée : On regarde les scores les uns après les autres en partant du dernier de façon à
récupérer la bonne place pour le score de l’utilisateur.

 Code :

Page 20
3. La fonction : plateau

Cette fonction est le constructeur de la classe plateau, qui prend en argument un niveau.

 But : Cette fonction permet générer le plateau de jeu à chaque niveau.

 Idée : Notre grille de jeu est un dictionnaire de cases référencées par des points qui
représente un plateau carré de 400 cases. On commence par placer le serpent (tête et
un élément de corps) en bas à gauche, puis on place les murs (s’il y en a dans le
niveau) et la première proie de façon aléatoire et enfin on complète toutes les autres
cases par des cases vides.

 Astuce : On ne place pas de mur sur le bord du plateau de façon à ne pas perdre dès le
début.

 Code :

Page 21
Page 22
4. La fonction : deplacer

Cette fonction est une fonction de la classe serpent, qui prend en argument un entier.

 But : Cette fonction permet le déplacement du serpent suivant la direction.

 Idée : Pour chaque déplacement cette fonction est appelée, on regarde alors le type de
la case où sera la tête après le déplacement (indiqué par la direction ), puis selon le
type de cette case on effectue l’action adéquate.

 Astuce : Pour le déplacement du serpent, on commence par déplacer la queue et on


remonte jusqu’à la tête ce qui permet de garder en tête la case suivante pour chacun
des éléments.

 Code :

Page 23
Page 24
Page 25
Conclusion

A l’aide de ce projet nous avons pu comprendre et expérimenter les différentes étapes


de la conception d’un logiciel, en commencer par l’analyse avec la partie UML. De plus la
programmation nous a permis d’améliorer nos connaissances du langage C#.

En plus d’être un projet pédagogique il est aussi ludique et nous a donné beaucoup de
liberté dans le code et dans la conception.

Page 26

Vous aimerez peut-être aussi