| | Système de rechargement | |
| | Auteur | Message |
---|
RegelePisicilor Pas mal
Messages : 34 Projet Actuel : Du shoot, du shoot et encore du shoot!
Action plateformer typé arcade sur écran fixe, dans lequel le joueur doit éliminer, room après room, chaque ennemi qui se présente à lui!
| Sujet: Système de rechargement Mar 9 Fév 2016 - 19:44 | |
| Salut à toutes et à tous! Je voudrais introduire dans mon jeu un système de rechargement avec un nombre de munitions limitées. Je pensais réussir facilement, mais il s'avère que je coince sur un truc. Mon code est le suivant: - Code:
-
// Dans create
nbMunitions = 10;
// Dans Step
key_shoot = keyboard_check_pressed (ord('E')); shotup = keyboard_check(ord('W')); shotdown = keyboard_check(ord('S'));
// shot if (nbMunitions > 0) {
if (key_shoot) {
sound_play(snd_shoot);
if (shotup) { sprite_index = spr_charaUp; z=instance_create(x,y,obj_Bullet2) with(z){direction=90; speed=20} exit nbMunitions -=1; }
if (place_free(x,y)) {
if (shotdown) { sprite_index = spr_charaDown; z=instance_create(x,y,obj_Bullet2) with(z){direction=270; speed=20} exit nbMunitions -=1; } }
// shoot right and left
if (sprite_index = spr_charaDroite) { z=instance_create(x,y,obj_Bullet) with(z){direction=0; speed=20} exit nbMunitions -=1; }
if (sprite_index = spr_charaGauche) { z=instance_create(x,y,obj_Bullet) with(z){direction=180; speed=20} exit nbMunitions -=1; } } }
if (nbMunitions = 0) {
key_shoot = 0 } En réalité je ne sais pas quoi attribuer à la variable key_shoot lorsque le nombre de munitions est à zéro, pour le faire arrêter de tirer. J'étais au début parti sur une boucle while mais celle-ci faisait complètement planté le jeu au démarrage sans que je sache réellement pourquoi... Merci d'avance pour votre aide! PS: Mes excuses par avance pour la forme de mon code..! |
| | | Linky439 Utilisateur confirmé: Rang *****
Messages : 2643 Localisation : Sur le forum du CBNA...ou pas Projet Actuel : La Galaxie Scellée
| Sujet: Re: Système de rechargement Mar 9 Fév 2016 - 19:56 | |
| Petit conseil, lorsque tu fais une boucle while : prévoit toujours une condition pour sortir de la boucle au cas où elle tournerait sans fin Du genre - Code:
-
while <tacondition> and iter<1000 { ... iter+=1 } Bon j'ai juste fait avec un compteur d'itération, mais tu comprends l'idée globale ^^ Je vois pas pourquoi tu veux changer la valeur de key_shoot quand tu n'as plus de munition ? Selon ton code, pour tirer, il faut que nbMunitions>0 ET que key_shoot vaille 1. Ceci dit, si tu veux mettre key_shoot à 0 quand nbMunitions est nul (ou négatif), tu peux écrire ceci : - Code:
-
key_shoot = ( keyboard_check_pressed(ord('E')) )*(nbMunitions>0) La partie (nbMunitions>0) vaut 1 si la condition est vérifiée, et 0 sinon _________________ Cliquez pour accéder aux topics dédiés ! |
| | | RegelePisicilor Pas mal
Messages : 34 Projet Actuel : Du shoot, du shoot et encore du shoot!
Action plateformer typé arcade sur écran fixe, dans lequel le joueur doit éliminer, room après room, chaque ennemi qui se présente à lui!
| Sujet: Re: Système de rechargement Mar 9 Fév 2016 - 20:31 | |
| Oui ma condition d'arrêt dans ma boucle while, c'est qu'à chaque fois que je tirai, la variable nbMunitions était décrémentée de 1 et une fois arrivée à 0, je voulais que même en appuyant sur la touche de tir on ne puisse plus le faire (tirer, autrement empêcher la création de balle et de son de tir quelque soit la direction).
En fait le problème que j'ai, c'est que je ne sais pas arrêter la création de munition ou le son de tir quand la variable nbMunition tombe à zéro.
Donc grosso modo ce que j'ai c'est que si la variable munition est supérieure à 0 on peut tirer, mais une fois le chargeur vide, je voudrais que cela cesse, jusqu'à ce que par exemple:
if (nbMunitions ==0 ) {
if (keyboard_check_pressed(ord('K'))) {
nbMunition = 10; } }
Je sens que c'est un truc tout con, vraiment idiot mais... je bloque!
|
| | | Linky439 Utilisateur confirmé: Rang *****
Messages : 2643 Localisation : Sur le forum du CBNA...ou pas Projet Actuel : La Galaxie Scellée
| Sujet: Re: Système de rechargement Mar 9 Fév 2016 - 21:13 | |
| Attention à la boucle while : je vais te dire comment ça se comporte. Le jeu se lance, exécute tout le code jusqu'à arriver à la boucle while. Là il va rentrer dedans, et n'en ressort qu'une fois que la condition n'est plus vérifiée ! Entre temps, le jeu n'execute rien qui soit en dehors de la boucle, ce qui inclus notamment le fait de tirer En gros, le jeu se lance, mais ton code ne sort jamais de ta boucle while puisque tes munitions ne descendent jamais, d'où le plantage En fait, je viens de voir ton problème. Ton code est correct pour moi, mais lorsque tu tires, tu as mis exit avant de mettre nbMunitions-=1. Donc, le code arrive à exit, il sort de tout le execute code et ne décrémente jamais nbMunitions Pour ça que tu peux tirer en continue je pense _________________ Cliquez pour accéder aux topics dédiés ! |
| | | RegelePisicilor Pas mal
Messages : 34 Projet Actuel : Du shoot, du shoot et encore du shoot!
Action plateformer typé arcade sur écran fixe, dans lequel le joueur doit éliminer, room après room, chaque ennemi qui se présente à lui!
| Sujet: Re: Système de rechargement Mar 9 Fév 2016 - 21:24 | |
| Merci pour cet éclairage concernant la boucle while, je ne l'avais absolument pas envisagé de cette façon!
Et bien concernant 'exit', le problème était bien lié à ça, j'aurais du y penser plus tôt..!
Dernière petite chose... Lorsque le nombre de munition tombe à zéro j'aimerais pouvoir recharger en appuyant sur une touche quelconque, mais je remarque qu'avec le code suivant cela ne fonctionne pas:
if (nbMunitions = 0 ) {
if (keyboard_check_pressed(ord('C'))) {
nbMunition = 10; } }
Une dernière petite idée pour cela? |
| | | Linky439 Utilisateur confirmé: Rang *****
Messages : 2643 Localisation : Sur le forum du CBNA...ou pas Projet Actuel : La Galaxie Scellée
| Sujet: Re: Système de rechargement Mar 9 Fév 2016 - 21:42 | |
| Tu as oublié un 's' à la fin de nbMunitions ? Pour le problème du exit, n'oublie pas d'utiliser le mode debug pour pouvoir visualiser en plein jeu tes variables, tu aurais pu voir que les munitions ne descendaient pas et voir que le problème était dans ce coin ^^ _________________ Cliquez pour accéder aux topics dédiés ! |
| | | Contenu sponsorisé
| Sujet: Re: Système de rechargement | |
| |
| | | | Système de rechargement | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |