Vous êtes sur la page 1sur 12

TP Projet en

architecture des
circuits
microprogrammés

Ludovic Barbelin
Diem Ngo Année 2018-2019
2

Table des matières


1. Introduction :..................................................................................................................................2
2. Structure de base :.........................................................................................................................3
2.1. Initialisation :..........................................................................................................................4
2.2. Programme Principal..............................................................................................................5
2.3. Interruption............................................................................................................................6
2.4. Déplacement..........................................................................................................................7
2.5. Poser/exploser bombe...........................................................................................................9
3. Conclusion :..................................................................................................................................12

Index des Figures :

Figure 1 Image du jeu Bomberman sur NES...........................................................................................3


Figure 2 Image du jeu sur DSPIC33.........................................................................................................4
Figure 3 Algorithme principal.................................................................................................................4
Figure 4 Algorithme d'initialisation........................................................................................................5
Figure 5 Algorithme du programme principal........................................................................................7
Figure 6 Algorithme d'interruption........................................................................................................7
Figure 7 Algorithme de déplacement.....................................................................................................9
Figure 8 Algorithme de la Bombe.........................................................................................................10

2 Année 2018-2019
3

1. Introduction :

Les ressources d'un microcontrôleur étant limitée par rapport à celle d'un ordinateur, nous nous
orienterons sur un jeu en 2 dimensions avec un mode de déplacement de type case par case.

Pour ce projet, nous avons choisi le jeu ‘’Bomberman’’. Dans le jeu que nous avons
programmé, le joueur doit vaincre un ennemi. Pour cela, il dispose d’une bombe qui servira à
détruire les murs et à tuer son adversaire. Certains éléments du décor seront indestructibles. La
bombe explose en croix et si le joueur ou l’ennemi se fait toucher par les flammes dégagées par la
bombe, il mourra et son personnage sera remplacé par une tête de mort.

Figure 1 Image du jeu Bomberman sur NES

Figure 2 Image du jeu sur DSPIC33

3 Année 2018-2019
4

2. Structure de base :
Afin de réaliser le programme nous allons utiliser une structure que nous pouvons visualiser
sur la figure-ci-dessous :

Début

Déclaration des variables

Initialisation

Programme principal

Fin

Figure 3 Algorithme principal

Ici nous pouvons distinguer un bloc initialisation qui nous servira à déclarer nos
variables, constantes, les textures et la carte initiale dont nous aurons besoin. Mais aussi, les sous-
fonctions que nous utiliserons de deux méthodes différentes :

 En faisant appel aux fichiers auxiliaires


 En écrivant directement la fonction.

Le bloc programme principal contiendra les instructions essentielles au fonctionnement du jeu.

4 Année 2018-2019
5

2.1. Initialisation :

Début Initialisation

Initialisation des périphériques

Ecran, joystick

Initialisation de l’horloge, timer

Validation des Interruption

Initialisation de la carte initiale, des


positions des joueurs, de la bombe
et des mémorisations des positions

Fin Initialisation

Figure 4 Algorithme d'initialisation

Dans cet organigramme, on peut voir ce que nous allons avoir besoin de déterminer le
fonctionnement des différents périphériques du microcontrôleur tel que le Joystick et l’écran. Nous
allons aussi devoir paramétrer différentes fonctions internes comme l’horloge et le timer.
Concernant le timer, celui-ci nous permettra d’effectuer des interruptions, ce qui représentera
l’essentiel du programme. Et enfin, nous déterminons tous les états initiaux de nos variables.

5 Année 2018-2019
6

2.2. Programme Principal

Début Programme Principal

Interruption

Scores

Début Programme Principal

Figure 5 Algorithme du programme principal

Dans le programme principal, nous effectuerons une boucle infinie afin que le jeu fonctionne
en continu. Dans cette boucle, nous gérerons l’affichage du score qui correspond aux nombres de
mouvement des joueurs. Ceux-ci seront comptés durant l’interruption qui elle s’effectue environ
toutes les demi secondes afin d’exécuter les instructions.

6 Année 2018-2019
7

2.3. Interruption

Début Interruption

Test sur le
joystick ?

Déplacement Poser/Exploser une bombe

Début Interruption

Figure 6 Algorithme d'interruption

Selon l’action qu’on fait sur le joystick, il peut se passer différentes actions. Un déplacement
ou la pose d’une bombe ou son explosion. On attribue une entrée pour chaque déplacement. On
utilise la structure if, ce qui donne des priorités dans les déplacements. Lorsqu’on appuie sur le
joystick, on pose la bombe où on la fait exploser (La différence entre les deux se fera à l’aide d’un
test expliqué plus tard). On revient sur le test du joystick, lorsque le déplacement n’est pas possible.

7 Année 2018-2019
8

2.4. Déplacement

Début Déplacement

Non
Case disponible ? Retour Test Joystick

Oui

Mémorisation de la position du Joueur

Incrémentation de la position et du
score

Mettre à jour la carte

Fin Déplacement

Figure 7 Algorithme de déplacement

8 Année 2018-2019
9

On fait un test sur le joystick. Si la case n’est pas disponible à l’endroit, nous retestons l’appui
suivant. Sinon, à chaque déplacement, on mémorise la position du joueur et on incrémente sa
position actuelle d’un déplacement (en haut, en bas, à droite, à gauche) ainsi que le score. On met
ensuite à jour l’écran pour afficher la nouvelle position du joueur, ainsi qu’une mise à jour de la carte
(remise du sol).

9 Année 2018-2019
10

2.5. Poser/exploser bombe

Début Poser/Exploser Bombe

Non Oui
Bombe déjà
posé ?

Mémorisation de la position de la
bombe Explosion des éléments destructible

Chargement de la position
Mettre à jour la carte
précédente du joueur

Mettre à jour la carte Joueur dans la


zone
Non
d’explosion ?

Oui

Bombe posée Mort du joueur

Fin Poser/Exploser Bombe

Figure 8 Algorithme de la Bombe

10 Année 2018-2019
11

On fait un test pour savoir si oui ou non une bombe est déjà posée.
Si non, à l’appui de la touche, on assigne la position de la position du joueur à celle de la bombe, puis
on met à jour la carte en affichant la bombe, et le joueur se retrouve à la position précédente.

Si la bombe est posée, on fait exploser la bombe en croix en tenant compte des
objets indestructibles, pour cela nous testons simplement les cases adjacentes à la bombe. La carte
affiche alors une explosion. Par la suite, nous remplaçons les éléments du décors destructibles par
des cases dont le mouvement est possible.

Pendant l’explosion, on test pour savoir si oui ou non le joueur adverse se trouve dans la zone
d’explosion. Si oui, le joueur meurt et on met à jour la carte pour faire afficher une tête de mort sur
sa position. Si non, on revient au test de Poser/Exploser bombe

11 Année 2018-2019
12

3. Conclusion :

Ce mini projet nous a permis d’assimiler les différentes fonctions vues lors des précédents
Travaux Pratiques. Nous avons appris à les combiner entre eux afin d’obtenir le résultat suivant.

Photo

Il nous a aussi permis de mieux connaître le logiciel de programmation et de s’en servir afin
de corriger les éventuelles erreurs. Par exemple, nous avions une erreur lors de la lecture de
notre carte, ceux qui validaient la physique du jeu seulement sur la moitié de celle-ci. Ce projet
pourrait faire l’objet d’amélioration comme la participation d’un deuxième joueur, pour cela, il
suffirait de reprendre les commandes de contrôles du joueur et de les appliquer un autre
‘’joystick’’ et de mettre à jour les variables qui lui seraient propres. Il serait possible d’améliorer
le concept d’explosion de la bombe en augmentant la zone d’explosion sur toutes les cases
disponibles autour d’elle.

12 Année 2018-2019

Vous aimerez peut-être aussi