Home

Dossier ISN de Luc VAROQUI

image

Contents

1. tre gr ce la fonction config_son def config_son fichier_config open Config txt r On ouvre le fichier de configuration config fichier_config read On stock son contenu dans une cha ne de caract re if config 00 On agit en fonction de cette cha ne de caract re pygame mixer music set_volume 0 Permet de mettre le volume de la musique 0 Sound Effect 0 Permet de ne pas jouer les bruitages voir ci dessous elif config 11 pygame mixer music set_volume 1 Sound_ Effect 1 elif config 01 pygame mixer music set_volume 0 Sound_ Effect 1 elif config 10 pygame mixer music set_volume 1 Sound Effect 0 return Sound_Effect La variable Sound_ Effect est utilis dans la fonction place_bullet et permet de d cider ou non de la lecture du bruitage if Sound_Effect 1 laser stop laser play Lecture du son de tir Luc Varoqui TS Lyc e Louis Marchal VI Pistes d am liorations Nous avons r ussi r pondre notre cahier des charges minimal cependant beaucoup d am liorations peuvent tre imagin e e Cr ation d autre niveau e Cr ation d un mode Multijoueur avec 2 vaisseaux e Augmentation de la difficult du jeu par l ajout de tirs venant des envahisseurs e Cr ation d un syst me de meilleur score avec le nom de la personne VII Conclusion L option ISN m a particuli rement plu tout au long de l ann e j ai appris beaucoup de choses sur
2. Luc Varoqui TS Lyc e Louis Marchal Projet Informatique et Sciences du Num riques i Pr sentation du projet Cette ann e en Terminale S j ai pris part la sp cialit ISN au lyc e Louis Marchal Nous avons d abord appris le langage python gr ce diff rents TP bataille navale morpion et avons cr notre propre site Web luc varoqui org Nous avons ensuite du nous lancer dans un projet de groupe nous avons choisi avec mes deux acolytes Lucas Caletti et Robin Troesch de recr er un Space Invaders en hommage au jeu vid o mythique des bornes d arcades Le principe du jeu est simple le joueur contr le un vaisseau et doit tuer tous les envahisseurs avant que ces derniers n atteignent le bas de l cran Le joueur gagne des points en fonction du nombre de monstres qu il touche certains monstres poss dent un bouclier le d truire rapportera un point Un menu un syst me de meilleur score et d volution de la difficult sont galement pr sents Le jeu est organis comme ceci l int rieur de son dossier e Space_Invaders py qui est le menu est donc le fichier lancer pour d marrer le jeu Main_Game py qui est le jeu en lui m me lanc par Space_Invaders py Images o sont stock s toutes nos images boutons monstres joueur Sons o sont stock s tous les sons utilis s dans notre jeu Config txt dans lequel sont stock s le meilleur score et les diff rents param tres utilisateur Il Mode d emp
3. e de toutes les touches press es par l utilisateur Action en fonction des touches press es if keys K_a and keys K_ SPACE player rect x speed vaisseau shoot_again placebullet shoot_again elif keys K_d and keys K_SPACE player rect x speed_ vaisseau shoot_again placebullet shoot_again elif keys K_a player rect x speed vaisseau elif keys K_d player rect x speed_vaisseau elif keys K_SPACE shoot_again placebullet shoot_again Afin de se d placer et de tirer le joueur utilise les touches du clavier Q D et Espace Afin de r cup rer les touches sur lesquels appui le joueur et ensuite permettre une action on commence par r cup rer une liste de bool en comportant toute les touches du clavier on regarde ensuite quelle touches sont appuy s et l on agit en cons quence Le grand avantage de cette m thode par rapport celle des EVENT est que l on peut g rer l appui simultan sur les touches On peut donc se d placer et tirer en m me temps On peut noter que pour r cup rer la position de la touche Q on regarde dans l index K_a car pygame voit notre clavier comme un QWERTY Luc Varoqui TS Lyc e Louis Marchal G rer la cr ation des projectiles la fonction placebullet def placebullet delay bullet Bullet return shoot_ delay return delay Afin d viter que le joueur puisse tirer en continu j ai mis en place la variable shoot_again et la constante shoot_ delay shoo
4. ement Explosion D finition des fonctions Placebullet Affiche score Wait Bullet_traitement Monster_creation EET Variab Boucle d actions Pygame Gestion des appuis clavier V rification des conditions de perte ou de victoire Mise jour des objets Luc Varoqui TS Lyc e Louis Marchal V Strat gies et principes du programme Afin de pouvoir g rer plusieurs l ments identiques monstres projectiles de mani re simultan e Robin et moi avons choisi utiliser des Classes une classe est un moule partir duquel il est possible de cr er des objets Elles poss dent des propri t s et des m thodes Nativement pygame incorpore la classe Sprite qui poss de des propri t s et des m thodes adapt es aux besoins d un jeu vid o cr ation de groupes gestion d un Update Nous avons cr des classes h ritant de la classe Sprite c est dire b n ficiant automatiquement des propri t s et m thodes de cette derni re Nous y avons ajout des m thodes sp cifiques chaque objet et avons ainsi cr nos propres classes Player Bullet Invaders Il est noter qu un objet n est pas forc ment pr sent sur l interface graphique Pour cr er un nouvel objet il suffit de taper nom _ de l objet nom de la _classe Le grand avantage est que l on peut cr er une infinit d objets de m me nom A leur cr ation nous pla ons les objets dans des listes de Sprites all_sp
5. la programmation en python mais aussi sur d autres sujets touchant l informatique la cr ation de mon propre site web l encodage des caract res et des images Voulant devenir ing nieur en informatique cette option m a confort dans mon choix C tait l un de mes r ves d enfant de pouvoir cr er m on propre jeu vid o et ce projet a t pour moi la preuve qu avec l aide de mes deux acolytes nous en tions capable Le fait de travailler en groupe a t un vrai plus le point de vue des autres tant tr s int ressant et permettant de faire avancer les choses Aboutir un r sultat concret nous a fait particuli rement plaisir VIII Annexe Les codes sources des deux fichiers Python ainsi qu une vid o de d monstration sont disponibles sur mon site dans la section projet L adresse du site luc varoqui org
6. loi Afin de pouvoir lancer le jeu vous aurez besoin de e python 3 2 e pygame e l int gralit du dossier du jeu Le lancement du jeu se fait en lan ant le fichier Space_Invaders py ensuite vous pourrez naviguer dans le menu gr ce la souris Bruitages ON Musique ON Bruitages OFF Musique OFF Une fois en jeu Touche Action Barre d espace Tirer Q Se d placer gauche D Se d placer droite Luc Varoqui TS Lyc e Louis Marchal I R partition des t ches Lucas Caletti Lucas s est occup de toute la cr ation du menu Fonctions permettant de changer l tat des boutons au repos survol s cliqu s Disposition des boutons Gestion du changement de fen tre menu amp jeu Robin Troesch Gestion des monstres dans le jeu cr ation d placements affichage et explosions de ces derniers Gestion des scores et du stockage du meilleur score Moi Gestion du vaisseau d placements Fonctions permettant de tirer un projectile Premi re version de la gestion des collisions entre projectiles et vaisseau que Robin a modifi par la suite afin de pouvoir int grer les monstres bouclier Fonction wait permettant de mettre en pause le jeu Gestion des sons Conditions de victoires et de d faites Cr ation de toutes les images du jeu Luc Varoqui TS Lyc e Louis Marchal D finition des classes Player Bullet Envahisseurs RECT LimDeplac
7. rites list bullet_list Parcourir une liste permet d interagir avec tous les objets de cette liste en m me temps Luc Varoqui TS Lyc e Louis Marchal Un exemple de classe Class Bullet def __init__ self super __init__ Permet de lancer le constructeur de la classe Sprite self image bullet image On d finit l image assign un projectile self rect Rect 0 0 4 10 On d finit le rectangle du Sprite self rect x player rect x 45 On place le bullet au dessus du Vaisseau self rect y player rect y self add bullet_list all_sprites_list On ajoute le bullet aux listes n cessaires def update self self rect y 8 Fait monter le projectile de 8 pixels if self rect y lt 10 Enl ve le missile si il d passe le cadre de l cran self remove self kili e Le _init_ self correspond au constructeur elle est appel lorsque l on instancie un nouvel objet ici un projectiles e La m thode update self sera ex cut e chaque passage dans la boucle principale On update tous les objets d un seul coup gr ce all_sprites_list update Pour un projectile le update consiste faire monter ce dernier de 8 pixels De plus v rifie que le projectile n est pas en dehors de l cran s il l est on le supprime dans un souci d conomie de ressources syst mes Luc Varoqui TS Lyc e Louis Marchal G rer le contr le du personnage keys pygame key get_pressed R cup re la list
8. st me de point de vie en effet au d but on supprimait directement le monstre et le projectile sans prise en compte des monstres avec boucliers Luc Varoqui TS Lyc e Louis Marchal La gestion des sons Pour les bruitages de tirs du vaisseau nous avons utilis le module Mixer de pygame laser pygame mixer Sound Sons laser ogg Cr ation de l objet laser laser play Lecture du son de tir Pour la lecture de la musique le module Music tait plus adapt il permet en effet de cr er des listes de lectures et donc d enchainer automatiquement les musiques bien que dans notre projet nous n en diffusons qu une seule pygame mixer music load Sons unity wav On charge le morceau dans la Playlist pygame mixer music play On lance la lecture de la Playlist Nous avons galement int gr la possibilit de couper soit les sons soit les bruitages gr ce aux deux boutons en bas droite du menu Pour ce faire on stock l information dans un fichier texte Config txt on peut ensuite lire et modifi ce fichier en fonction des envies de l utilisateur L information est stock e sur 2 bits par exemple un 00 dans le fichier indiquera que ni les bruitages ni les sons ne doivent tre jou s alors qu un 11 indiqueront qu ils devront l tre Le premier bit correspond la variable Music et le deuxi me Sound_Effect Dans le jeu la configuration du son se fait au lancement de la fen
9. t_again se d cr mente chaque passage dans la boucle principale le joueur ne peut tirer que quand cette variable est inf rieure z ro Si le joueur est autoris tirer on cr er un objet Bullet et l on remet la variable shoot_again la valeur shoot_delay j ai choisi de mettre cette derni re dans une constante afin de pouvoir l adapter par la suite pour changer la cadence de tir du vaisseau Gestion des projectiles la fonction bullet traitement for bullet in bullet_ list Parcours de la liste de bullet monster_hit_list pygame sprite spritecollide bullet monster_list False for monster in monster_hit_list bullet kil Afin de traiter les projectiles on parcourt la liste des Bullet et l on traite ces derniers s par ment Gr ce Pygame j ai pu d tecter une collision entre un Sprite en particulier en l occurrence un Bullet et n importe quel Sprite d une Sprite List ici les Invaders La fonction retourne alors une autre Sprite List comportant tous les monstres en collisions avec le Bullet la plupart du temps il n y aura qu un monstre dans cette liste le cas d un Bullet touchant deux monstres simultan ment tant quasi impossible On parcourt cette liste et l on d truit le bullet qui est entr en collision avec un monstre bien s r si le bullet n est pas entr en collision avec un monstre la liste sera vide et il ne sera pas d truit Robin a ensuite modifi ma fonction afin d ajouter un sy

Download Pdf Manuals

image

Related Search

Related Contents

XEROX DOCUCOLOR 12  *2044079* 2044079  KitchenAid KHLU162MSS Kitchen Hood  Sun Enterprise 250 Server Owner`s Guide  VoiceMail Pro - Avaya Support  PRO-1 Parce que vos images méritent le meilleur. - Canon-Live  Quick Guide  Melissa 670-052 User's Manual  断熱 - 株式会社キクトウ  Programmer User`s Manual  

Copyright © All rights reserved.
Failed to retrieve file