Académique Documents
Professionnel Documents
Culture Documents
architecture des
circuits
microprogrammés
Ludovic Barbelin
Diem Ngo Année 2018-2019
2
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.
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
Initialisation
Programme principal
Fin
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 :
4 Année 2018-2019
5
2.1. Initialisation :
Début Initialisation
Ecran, joystick
Fin 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
Interruption
Scores
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ébut 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
Incrémentation de la position et du
score
Fin 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
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
Oui
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