AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  Connexion  

Partagez | 
 

 Système de rechargement

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
RegelePisicilor
Pas mal
avatar

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!

MessageSujet: Système de rechargement   Mar 9 Fév 2016 - 18: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..!
Revenir en haut Aller en bas
Linky439
Utilisateur confirmé: Rang *****
avatar

Messages : 2612
Localisation : Sur le forum du CBNA...ou pas
Projet Actuel : La Galaxie Scellée

MessageSujet: Re: Système de rechargement   Mar 9 Fév 2016 - 18: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 Wink
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 Smile

_________________
Cliquez pour accéder aux topics dédiés !
   
Revenir en haut Aller en bas
RegelePisicilor
Pas mal
avatar

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!

MessageSujet: Re: Système de rechargement   Mar 9 Fév 2016 - 19: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!


Revenir en haut Aller en bas
Linky439
Utilisateur confirmé: Rang *****
avatar

Messages : 2612
Localisation : Sur le forum du CBNA...ou pas
Projet Actuel : La Galaxie Scellée

MessageSujet: Re: Système de rechargement   Mar 9 Fév 2016 - 20: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 Wink
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 Wink

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 Wink
Pour ça que tu peux tirer en continue je pense Smile

_________________
Cliquez pour accéder aux topics dédiés !
   
Revenir en haut Aller en bas
RegelePisicilor
Pas mal
avatar

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!

MessageSujet: Re: Système de rechargement   Mar 9 Fév 2016 - 20: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?
Revenir en haut Aller en bas
Linky439
Utilisateur confirmé: Rang *****
avatar

Messages : 2612
Localisation : Sur le forum du CBNA...ou pas
Projet Actuel : La Galaxie Scellée

MessageSujet: Re: Système de rechargement   Mar 9 Fév 2016 - 20:42

Tu as oublié un 's' à la fin de nbMunitions ? Smile

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 !
   
Revenir en haut Aller en bas
Contenu sponsorisé




MessageSujet: Re: Système de rechargement   

Revenir en haut Aller en bas
 
Système de rechargement
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» kids2sit système pour un 2ème enfant
» [Système d'imposition] Imposition négative et taux fixe ?
» Recherche d'un emploi d'ingénieur système orienté Linux... En Italie
» Système politique Suisse
» L’effondrement du système pyramidal.

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Développement :: Entraide débutants-
Sauter vers: