IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SDL Discussion :

Comment fixer une cadence de tir sans géner le mouvement du missile ?


Sujet :

SDL

  1. #1
    Membre confirmé
    Homme Profil pro
    sans
    Inscrit en
    Mai 2023
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mai 2023
    Messages : 313
    Par défaut Comment fixer une cadence de tir sans géner le mouvement du missile ?
    EDIT : RESOLU !!!

    Salut !

    dans pygame, je rame sur un truc :

    je voudrais faire ceci :

    [CODE]""" Pour une classe de vehicule j'ai deux types de tir, dés que l'un des deux est utilisé, le tir est bloqué et un délai est effectué, mais le missile peut continuer à se mouvoir, et dés que le délai est terminé, alors le tir est à nouveau autorisé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        # Tire avec l'arme indiquée. Cette fonction est lancée par le vehicule selon un hazard.
        def Tire(self, arme) :
     
            if arme == 1 and self.Tir1==self.Cadence1:
                self.Arme = 1 # sélectionne l'arme 1
                # Crée 4 munitions
                for i in range(0,5) :
                    self.Munitions.append(py.Rect(self.Rect.left+16,self.Rect.bottom,6,10))
     
            elif arme == 2 and self.Tir2==self.Cadence2:
                self.Arme = 2 # sélectionne l'arme 2
                # Crée un missile.
                self.Missiles.append(py.Rect(self.Rect.left+16,self.Rect.bottom,10,20))


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
        # Lancée par la boucle de jeu, cette fonction donne le mouvement aux missiles et munitions du vaisseau.
        def Mouv_tirs(self) :
     
            print("Tir1 :",self.Tir1," Cadence 1 :",self.Cadence1) 
            if self.Arme == 1 and self.Tir1 > 0 :            
                self.Tir1 -= 1
                if self.Tir1 < 0 :
                    self.Tir1 = self.Cadence1
     
            elif self.Arme == 2 and self.Tir2 > 0 :
                self.Tir2 -= 1
                if self.Tir2 < 0 :
                    self.Tir2 = self.Cadence2
     
     
            if len(self.Munitions) > 0 : # Il y a une ou des munitions dans le chargeur Munitions.
                self.Tir1=self.Cadence1
                for munition in self.Munitions :
    etc...
    Je précise que cette version ne fonctionne pas, car je n'ai jamais de tirs au final ! Alors que j'ai mis une condition au tir et qu'elle est sensée etre réalisée.
    Je comprend pourquoi c'est parce que le moment du tir qui dépend du hazard ne s'accorde pas avec la valeur self.Tir1 par exemple qui est continuellement décrémentée puis remise à son max.
    Mais je sais pas comment faire pour régler ce problème !

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 251
    Billets dans le blog
    175
    Par défaut
    Bonjour,

    Je vous conseille la lecture de cet article : https://alexandre-laurent.developpez...boucle-de-jeu/
    Il est à noter que, la solution optimale est de passer le temps delta (le temps entre chaque itération de la boucle principale) à la fonction update. Ainsi, pour la fonction update du joueur (dans un programme orienté objet), ou la fonction gérant le joueur et son tir, vous pouvez connaître le temps qui s'est écoulé et donc déterminer si le joueur a le droit de tirer une nouvelle fois ou non.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 614
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 614
    Par défaut
    il faudrait peut-être décrire d'abord la trajectoire du missile

  4. #4
    Membre confirmé
    Homme Profil pro
    sans
    Inscrit en
    Mai 2023
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mai 2023
    Messages : 313
    Par défaut
    Salut Merci de vos conseil !

  5. #5
    Membre confirmé
    Homme Profil pro
    sans
    Inscrit en
    Mai 2023
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mai 2023
    Messages : 313
    Par défaut
    Pardon, voir mon premier message !!!

  6. #6
    Membre confirmé
    Homme Profil pro
    sans
    Inscrit en
    Mai 2023
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mai 2023
    Messages : 313
    Par défaut
    RESOLU !!!

    Au lieu de mettre comme condition de tir, que self.Tir1 == self.Cadence1 , j'ai remplacé par la condition que la liste de munitions soit vide ! afin que le tir soit autorisé.

    c'est le compteur self.Tir1 qui arrivé à zéro, vide la liste de munitions. Ce qui va autoriser un nouveau tir.

  7. #7
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 603
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 603
    Par défaut
    Merci encore une fois pour le retour mais n'oublie pas le bouton en bas de page…

  8. #8
    Membre confirmé
    Homme Profil pro
    sans
    Inscrit en
    Mai 2023
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mai 2023
    Messages : 313
    Par défaut
    Citation Envoyé par Obsidian Voir le message
    Merci encore une fois pour le retour mais n'oublie pas le bouton en bas de page…
    Merci,

    je trouve jamais ce bouton oO

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment attacher une base de données sans son fichier log
    Par callo dans le forum MS SQL Server
    Réponses: 16
    Dernier message: 05/06/2014, 11h03
  2. Réponses: 0
    Dernier message: 30/05/2008, 22h20
  3. Réponses: 2
    Dernier message: 11/01/2007, 15h56
  4. Comment fixer une date dans un champ !
    Par LATHIOS dans le forum Access
    Réponses: 8
    Dernier message: 17/06/2005, 19h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo