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

Programmation multimédia/Jeux Python Discussion :

Besoin d'un Coup de main : Pygame [Python 3.X]


Sujet :

Programmation multimédia/Jeux Python

  1. #21
    Candidat au Club
    Homme Profil pro
    En Art
    Inscrit en
    Mai 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : En Art
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2016
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    ça n'a pas marché, le laser n'apparait même pas.
    Par la suite, je vais devoir faire comment pour que le vaisseau tir en continu, à une certaine cadence de tir et, surtout, gerer les colisions avec le sol et le drone ?

  2. #22
    Membre régulier Avatar de fifafou
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2016
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Seine Maritime (Haute Normandie)

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

    Informations forums :
    Inscription : Janvier 2016
    Messages : 173
    Points : 92
    Points
    92
    Par défaut
    bizarre,peut être parce que je suis avec python 2
    sinon,j'ai reussi a detecter si le laser touche le drone avec une collision circulaire:
    Code complet : 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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    import pygame
    ##import winsound
    from pygame.locals import *
    import random
    from math import *
    continuer=1
    pygame.init()
    class laser():
        def __init__(self,pos):
            self.pos=pos
            self.imglaser=pygame.image.load("laser.jpg").convert()
            self.position_laser=self.imglaser.get_rect()
            self.position_laser=self.position_laser.move(pos,0)
            self.hauteur=0
        def update_laser(self):
            self.hauteur+=0.5
            self.position_laser[1]=self.hauteur
            fenetre.blit(self.imglaser,self.position_laser)
        def touche_drone(self,position_drone):
            return hypot(self.position_laser[0]-(position_drone[0]+50),self.position_laser[1]-(position_drone[1]+25))<50
    fenetre=pygame.display.set_mode((650,800))
    pygame.display.set_caption("Protegez la Ville : Utilisez les fleches pour diriger le drone.")
     
    ville=pygame.image.load("ville.jpg").convert()
    drone=pygame.image.load("drone.jpg").convert()
    position_drone=drone.get_rect()
    position_drone=position_drone.move(275,450)
    fenetre.blit(ville,(0,0))
    las=laser(random.randint(0,650))
    pygame.display.flip()
    while continuer:
        key=pygame.key.get_pressed()
        if key[K_RIGHT]:
            if position_drone[0]<550:position_drone=position_drone.move(3,0)
        if key[K_LEFT]:
            if position_drone[0]>0:position_drone= position_drone.move(-3,0)
        if las.touche_drone(position_drone):
            continuer=0
        fenetre.blit(ville,(0,0))
        fenetre.blit(drone,position_drone)
        for event in pygame.event.get():
            if event.type==QUIT:
                continuer=0
        las.update_laser()
        pygame.display.update()
    pygame.quit()
    chez moi,ça marche très bien

  3. #23
    Candidat au Club
    Homme Profil pro
    En Art
    Inscrit en
    Mai 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : En Art
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2016
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    Tout roule, en effet, mais c'est normal que le jeu se ferme au moment de l'interception ?
    Pour ce qui est de la colision avec la ville, j'vois comment faire.
    Ensuite, il ne restera plus qu'a faire en sorte que le vaisseau tire plusieurs fois et en continu.

  4. #24
    Membre régulier Avatar de fifafou
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2016
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Seine Maritime (Haute Normandie)

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

    Informations forums :
    Inscription : Janvier 2016
    Messages : 173
    Points : 92
    Points
    92
    Par défaut
    c'est normal,t'a juste a mettre ce que tu veux a la place de continuer=0(c'était pour qu'on voit) pour compter le nombre de lasers arretés
    du coup,j'ai stocké une liste de laser(l'interêt des classes),ensuite une boléen(True ou False)masque qui permet de ne plus afficher le laser et de ne plus gerer la collision pour faire comme s'il n'existait pas(si je l'avait supprimé,ça aurait changé la taille de la liste et fait des bugs) et puis quand les laser arrivent en bas,ça en recréé un en haut
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    import pygame
    ##import winsound
    from pygame.locals import *
    import random
    from math import *
    continuer=1
    pygame.init()
    class laser():
        def __init__(self,pos,posy):
            self.pos=pos
            self.imglaser=pygame.image.load("laser.jpg").convert()
            self.position_laser=self.imglaser.get_rect()
            self.position_laser=self.position_laser.move(pos,posy)
            self.hauteur=posy
            self.masque=False
        def update_laser(self):
            self.hauteur+=0.5
            self.position_laser[1]=self.hauteur
            if not(self.masque):fenetre.blit(self.imglaser,self.position_laser)
        def touche_drone(self,position_drone):
            if not(self.masque):
                return hypot(self.position_laser[0]-(position_drone[0]+50),self.position_laser[1]-(position_drone[1]+25))<50
            return False
    fenetre=pygame.display.set_mode((650,800))
    freq=100
    pygame.display.set_caption("Protegez la Ville : Utilisez les fleches pour diriger le drone.")
    score=0
    ville=pygame.image.load("ville.jpg").convert()
    drone=pygame.image.load("drone.jpg").convert()
    position_drone=drone.get_rect()
    position_drone=position_drone.move(275,450)
    fenetre.blit(ville,(0,0))
    pygame.display.flip()
    liste=[]
    for i in range(0,600,freq):
        liste.append(laser(random.randint(0,650),i))
    while continuer:
        key=pygame.key.get_pressed()
        if key[K_RIGHT]:
            if position_drone[0]<550:position_drone=position_drone.move(3,0)
        if key[K_LEFT]:
            if position_drone[0]>0:position_drone= position_drone.move(-3,0)
        fenetre.blit(ville,(0,0))
        fenetre.blit(drone,position_drone)
        for event in pygame.event.get():
            if event.type==QUIT:
                continuer=0
        if liste[0].hauteur>freq:
            liste.insert(0,laser(random.randint(0,650),0))
            liste.pop(-1)
        for las in liste:
            if las.touche_drone(position_drone):
                las.masque=True
                score+=1
            las.update_laser()
        pygame.display.update()
    print "score:",score
    pygame.quit()

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [webdesign] Je dois reconstituer un frame : besoin d'un coup de main
    Par dom J dans le forum Balisage (X)HTML et validation W3C
    Réponses: 24
    Dernier message: 21/08/2006, 00h24
  2. Besoin d'un coup de main avec print
    Par scaleo dans le forum Langage
    Réponses: 2
    Dernier message: 10/06/2006, 21h12
  3. C++ besoin d'un coup de main
    Par Invité dans le forum C++
    Réponses: 7
    Dernier message: 19/04/2006, 13h28
  4. Problème avec fwrite() : besoin d'un coup de main
    Par yopuke dans le forum Langage
    Réponses: 2
    Dernier message: 16/04/2006, 09h43
  5. besoin d'un coup de main pour une requête ;)
    Par Fabouney dans le forum Requêtes
    Réponses: 3
    Dernier message: 14/11/2005, 23h14

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