Telechargé par Elisa Le Prettre

Dossier Bomberman de Amélie

publicité
BOMBERMAN
Informatique et Sciences du
Numérique
Amélie LE MOINE
Terminale Scientifique
Année 2015-2016
SOMMAIRE
1)
Introduction……………………………………..… [p.3]
2)
Présentation du projet……………………….. [p.3]
3)
Organisation du jeu……………………………. [p.4]
· Structure du projet
Ä Les conversions
Ä Les images
Ä Les évènements
Ä Le temps
Ä Le menu
Ä Les règles du jeu et les commandes
· Mode d’emploi
4)
Organisation du groupe………………………. [p.9]
· Répartition
· Stratégies et problèmes
5)
Conclusion……………..…………………………. [p.10]
6)
Annexe……………………………………………… [p.11]
-2-
1) Introduction
Cette année, en spécialité Informatique et Sciences du Numérique (ISN), nous avons formé
un groupe de trois, Adrien BOIS, Benjamin SCHERRER, et moi-même, afin de réaliser un
Bomberman. Nous voulions réaliser un jeu, à la fois simple, mais également amusant pour
l’utilisateur. Nous avons donc créé une version simplifiée du jeu, avec des graphismes, et les bases
du vrai Bomberman.
2) Présentation du projet
Le Bomberman est un jeu d’arcade et de réflexes, dans lequel chaque joueur doit faire
exploser son adversaire à l’aide de bombes. La stratégie consiste à éviter les explosions de
bombes, et progresser dans le labyrinthe pour se rapprocher de son adversaire et le faire exploser.
Le joueur faisant exploser son adversaire gagne la partie.
Ce jeu est codé en Python, avec l’utilisation de Numpy (bibliothèque, pour le tableau) et
Pygame (pour le graphisme).
Ce jeu est fait pour deux joueurs, qui jouent sur un même clavier, mais avec des
commandes différentes. Le joueur 1 joue avec les touches -q, d, z, s- et pose une bombe avec la
barre -espace-. Pour le joueur 2, ce sont les touches -←, ↑, →, ↓- qui sont utilisées, ainsi que le 5- pour poser une bombe.
-3-
3) Organisation du jeu
· Structure du projet
Notre programme est essentiellement composé de fonctions. En effet, chaque évènement
va entraîner une fonction, c’est-à-dire que le programme se résume à cela :
Ensuite, la fonction -menu ()- renvoi à d’autres fonctions au fur et à mesure des
évènements exécutés par les utilisateurs. Nous avons créé un seul programme avec toutes les
commandes nécessaires. Il doit être placé au même endroit que toutes les images utilisées dans le
programme. De plus, Pygame, Python, et Numpy doivent être installés sur l’ordinateur.
Pour réaliser notre programme, nous avons d’abord réalisé quelques fonctions essentielles.
Ä Les conversions
La fonction –conv(lig,col)- permet de convertir les coordonnées du tableau en coordonnées
sur la fenêtre. Nous avons créé un tableau de 15x15, et notre fenêtre fait 450x450 pixels. Cette
fonction multiplie donc chaque coordonnées du tableau par 30, afin d’avoir la position dans la
fenêtre. Par exemple, le point A (6 ; 12) dans le tableau, correspond dans la fenêtre, au point A
(180 ; 360). Ces coordonnées correspondent au coin en haut à gauche de l’image.
-4-
Ä Les images
Nous avons d’abord chargé toutes les images nécessaires au programme par exemple les images
des personnages, avec et sans la bombe, les images de briques…
Cette
partie
de
programme
parcourt
le
tableau,
convertit
les
coordonnées,
et
attribue
chaque chiffre à l’image
correspondante.
Par exemple, le numéro
5 est associé à l’image de la
bombe, ce qui signifie que
chaque fois qu’un -5- apparait
dans le tableau, une bombe
apparait dans la fenêtre, aux
coordonnées correspondantes.
-5-
Ä Les évènements
Les évènements correspondent à des actes de l’utilisateur, qui renvoient à une action dans
le programme, donc sur la fenêtre.
La commande -event.type- permet de préciser si l’action doit se réaliser lorsque la touche est
enfoncée, où lorsqu’elle est relâchée. Ensuite, on attribue aux touches du clavier choisies avec la
commande -event.key==K_LETTRE-, une action. Par exemple, si le joueur 1 presse la touche -d-,
son personnage ira à droite. S’il presse la touche -espace-, son personnage posera une bombe.
Cependant nous avons dû faire face à un problème de correspondance entre le clavier azerty, et le
clavier qwerty. Ainsi, la touche -a- correspond à la touche -q- sur notre clavier.
Ä Le temps
Pour la gestion du temps, nous avons importé un module qui représente le temps écoulé
(en secondes) depuis le 1er Janvier 1970. Ainsi, à chaque fois qu’une bombe est posée par l’un des
joueurs, une fonction enregistre le temps correspondant à la pose de la bombe. Au bout de deux
secondes, la bombe explose.
C’est la commande -import time- qui représente le temps écoulé (en secondes) depuis le 1er
Janvier 1970.
-6-
Ä Le menu
La fonction -menu ()- est la première fonction utilisée. Elle permet d’ouvrir une fenêtre
avec le menu du jeu. Deux options se présentent alors à l’utilisateur :
-soit il connait les règles et clique sur -jouer- directement (le jeu se lance alors)
-soit il veut se renseigner sur les règles et clique sur -instructionsLorsque le joueur clique sur l’un ou l’autre bouton, une nouvelle fenêtre s’ouvre alors.
Ä Les règles du jeu et les commandes
Les fonctions -instructions- et -contrôle- servent à présenter au joueur les règles du jeu, et
dirige l’utilisateur vers l’utilisation des commandes. Ce sont de simples fenêtres avec des boutons.
-7-
· Mode d’emploi
Pour pouvoir tester ce jeu, il faut d’abord installer Python, ainsi que Pygame et Numpy. Ensuite, le
schéma suivant explique comment l’utilisateur peut jouer.
Chaque action de l’utilisateur renvoie à un event, et celui-ci renvoie à une fonction
(déplacement du personnage, explosion de la bombe…)
Si la case adjacente droite n’est pas occupée par un quelconque obstacle, le joueur 1
peut aller à droite. Il en est de même pour les trois autres touches, pour les directions
haut, bas, et gauche. La bombe est posée sous le joueur, donc les cases adjacentes
peuvent être occupées.
Pour le joueur 2, le principe est exactement le même, mais avec des touches différentes.
-8-
4) Organisation du groupe
· Répartition
Pour réaliser ce projet, nous avons partagé le travail.
ü La création des différentes fenêtres
ü La création et le positionnement des briques
ü La création des personnages et leurs déplacements
ü La gestion du temps
ü L’explosion des bombes
Adrien
-gestion des
personnages
-gestion des
bombes
Benjamin
-gestion du temps
-gestion des
déplacements
Amélie
-création des
différentes
fenêtres
-gestion des
-gestion du
briques
placement des
incassables dans
briques
le labyrinthe
extérieures
-placement des briques cassables
Pour ma part, j’ai donc fait l’ensemble des fenêtres. Chaque fenêtre se code de la même
façon. En effet, il faut d’abord définir la position de la fenêtre sur la page (ici, elle est aux
coordonnées (750,150) -> en pixels). Ensuite les coordonnées (450,450) définissent la taille de la
fenêtre. Je donne ensuite le nom du fond que je souhaite mettre à ma fenêtre, en suite je nomme
la fenêtre (Bomberman ici). Il faut aussi penser à définir l’emplacement de l’image du fond, sinon
elle ne s’affiche pas (je la place tout en haut à gauche, c’est-à-dire à (0,0)). La commande pygame.display.flip()- permet de rafraîchir la fenêtre, et donc de placer tous les éléments
nécessaires.
Les fenêtres s’ouvrent au fur et à mesure que les fonctions sont utilisées. De plus, sur
certaines fenêtres, j’ai défini des boutons. Lorsque le joueur clique dans une certaine zone, une
fonction est parcourue et affiche une autre fenêtre.
-9-
Ainsi, lorsque l’utilisateur clique dans la bande allant de 0 à 40 pixels, la fonction -menu()est déclenchée. Pour la bande de 410 à 450 pixels, c’est la fonction -instruc_controle()- qui est
parcourue. La commande -MOUSEBUTTONDOWN- signifie que c’est lorsque le clic est enfoncé
que la fonction se lance (contrairement à -MOUSEBUTTONUP-). Enfin, la commande event.button==1- précise que c’est le clic gauche qui est en jeu.
· Stratégies et problèmes
Nous avons réparti le travail de façon à avoir plus de temps pour réaliser chaque élément
du jeu. Cependant, il reste quelques défauts à notre projet, que nous aurions retravaillé avec plus
de temps.
D’abord, les déplacements des personnages. Nous pensons que les personnages vont trop
vite par rapport à l’explosion des bombes. En effet, ils se déplacent de 30 pixels en 30 pixels, et
non pixels par pixels. Cela dit, nous avons essayé de contourner ce problème en augmentant le
nombre de briques non cassables. Ainsi, les personnages doivent slalomer davantage entre ces
briques, et donc leurs déplacements se voient ralentis.
Ensuite, nous avons un problème de fenêtre. Je me suis occupée de cette partie du jeu. J’ai
créé une fenêtre pour chaque action de l’utilisateur :
Ø le menu
Ø les instructions
Ø le contrôle
Ø le jeu
Ø la fin du jeu
Ainsi, lorsque le joueur veut fermer la fenêtre, il doit fermer toutes fenêtres, et cela prend du
temps et ce n’est pas esthétique.
5) Conclusion
Cette année d’ISN m’a permis d’acquérir de nombreuses compétences en informatique, et
en codage particulièrement. J’ai beaucoup aimé cette spécialité, car la préparation est très
motivante et c’est un concept différent de vrai cours uniquement théoriques. Le fait de pouvoir
manipuler le codage toutes les semaines est très intéressant, car cela m’a permis de développer
des automatismes. La création de notre jeu m‘a aussi beaucoup plu, je suis contente du résultat
auquel nous sommes parvenus en groupe.
-10-
Téléchargement