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 :

Placer une image aléatoirement pygame [Python 3.X]


Sujet :

Programmation multimédia/Jeux Python

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2020
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2020
    Messages : 51
    Points : 29
    Points
    29
    Par défaut Placer une image aléatoirement pygame
    Bonjour,

    j'ouvre ce topic car je créer un petit jeu sur pygame et j'aimerais savoir comment placer aléatoirement une image sur un terrain. J'aimerais que le placement se fasse de manière aléatoire. Je pense qu'il faut utiliser random.randint mais je ne suis pas sur.

    merci d'avoir pris le temps de me lire.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 049
    Points : 1 380
    Points
    1 380
    Par défaut
    coordonnées en pixels ou en indices ? dans les 2 cas random.randint fera l'affaire.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2020
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2020
    Messages : 51
    Points : 29
    Points
    29
    Par défaut
    les coordonnées sont en pixels. Mais comment on utilise random.randint avec pygame pour placer une image? Parce que je sais placer une image ça y a pas de soucis, mais je ne sais pas comment ni où intégrer random.randint.

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


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

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 860
    Points : 219 062
    Points
    219 062
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    Disons que vous savez placer une image avec un code ressemblant à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    drawImage(100, 100, image)
    (Qui place une image au coordonnées 100 ; 100.)

    Alors, vous pouvez écrire un code comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    x = 100
    y = 100
    drawImage(x, y, image)
    (Qui fait exactement la même chose.)

    Par conséquent, vous pouvez écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    x = randInt(0, 800)
    y = randInt(0, 600)
    drawImage(x, y, image)
    (Qui place une image a des coordonnées aléatoires générées par randInt.)


    (Attention, c'est du pseudo code. A vous d'adapter la syntaxe )
    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.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2020
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2020
    Messages : 51
    Points : 29
    Points
    29
    Par défaut
    Merci infiniment pour votre réponse.

    Je vais essayer ça rapidement et je mettrais un message en cas de réussite ou d'échec.

  6. #6
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 049
    Points : 1 380
    Points
    1 380
    Par défaut
    y a des zones d'exclusion ?

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2020
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2020
    Messages : 51
    Points : 29
    Points
    29
    Par défaut
    c'est à dire? des zones où l'images ne peut pas être générée? si c'est ça, oui.

  8. #8
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 049
    Points : 1 380
    Points
    1 380
    Par défaut
    Citation Envoyé par Goulthard Voir le message
    c'est à dire? des zones où l'images ne peut pas être générée? si c'est ça, oui.
    et du coup t'as fait comment ?

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2020
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2020
    Messages : 51
    Points : 29
    Points
    29
    Par défaut
    pour l'instant j'essaie de faire apparaitre l'image ^^' j'ai pris un peu plus de temps que prévu à cause de la rentrée (je suis à la fac et c'est un gros bordel) je reviens vite dès que j'ai réussi

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2020
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2020
    Messages : 51
    Points : 29
    Points
    29
    Par défaut
    c'est bon j'ai réussi pour l'affichage de mon image je vais mettre le code ci-dessous pour ceux qui ont besoin. ATTENTION: mon code fonctionne avec des importations d'images donc soyez vigilants quand vous reprendrez le code

    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
     
    import os #importation des différents modules nécessaires
    import random
    import pygame
    from pygame.locals import *
     
    pygame.init() #initialisation de pygame
     
    os.environ["SDL_VIDEO_WINDOW_POS"] = "0, 28" #positionne la fenêtre sur l'écran d'ordinateur
     
    fenetre = pygame.display.set_mode((1535, 794))#création de la fenêtre
     
    arriere_plan = pygame.image.load("images/montagne_debut_jeu.jpg").convert() #image fond d'écran
    fenetre.blit(arriere_plan,(0,0))
    pygame.display.flip()
     
    pepite_or = pygame.image.load("images/pepite_d_or.jpg").convert()
     
    pex = random.randint(0,1535)
    pey = random.randint(0,794)
    fenetre.blit(pepite_or,(pex,pey))
    pygame.display.flip()
     
    jeu = 1
    while jeu:
        for event in pygame.event.get():
            if event.type == QUIT:
                jeu = 0
     
    pygame.quit()
    maintenant je vais procéder à la mise en place de mon image sur un terrain défini et faire en sorte qu'elle n'en sorte pas

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2020
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2020
    Messages : 51
    Points : 29
    Points
    29
    Par défaut
    Bonjour je suis face à un problème,

    j'ai réussi à généré une image, la placer aléatoirement et à lui créer une surface. Mais j'aimerais faire en sorte que quand mon personnage touche l'image, le jeu se stop. Donc j'ai écris ça...

    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
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
     
    import os
    import random
    import pygame
    from pygame.locals import *
     
    pygame.init()
     
    os.environ["SDL_VIDEO_WINDOW_POS"] = "0, 28" #positionne la fenêtre sur l'écran d'ordinateur
     
    fenetre = pygame.display.set_mode((1535, 794))
    from bibliotheque.affichage import ecran #importation du module ecran
     
    arriere_plan = pygame.image.load("images/montagne_debut_jeu.jpg").convert() #image fond d'écran
     
    x = 443 #x,y coordonnés d'apparition du personnage
    y = 80
     
    nx = 0 #coordonnées permettant le mouvement. Elles sont à 0 au début
    ny = 0
     
    pex = random.randint(415,1115)
    pey = random.randint(65,750)
     
    personnage = pygame.image.load("images/perso.jpg").convert()
     
    pepite_or = pygame.image.load("images/pepite_d_or.jpg").convert()
    pepite_or_rect = pepite_or.get_rect(topleft =(pex,pey))
     
    position_perso = personnage.get_rect()#créer un rectangle sur le personnage
    position_perso.center = x , y
     
    terrain = pygame.Surface((770,725)).convert()#surface permettant la création des bordures du terrain
    terrain_rect = terrain.get_rect(topleft =(429,59))
     
    jeu = 1
    while jeu:
        for event in pygame.event.get():
            if event.type == QUIT:
                jeu = 0
            if event.type == KEYDOWN:
                if event.key == K_w: #carac == 'z': #si la valeur de la touche est celle de z alors
                    nx = 0 #tu n'avance pas en x mais
                    ny = -57#tu recules en y
                    position_perso = position_perso.move(nx,ny)#variable permettant le mouvemment avec nx et ny
     
                if event.key == K_s:
                    nx = 0
                    ny = 57
                    position_perso = position_perso.move(nx,ny)
     
                if event.key == K_d:
                    nx = 57
                    ny = 0
                    position_perso = position_perso.move(nx,ny)
     
                if event.key == K_a:
                    nx = -57
                    ny = 0
                    position_perso = position_perso.move(nx,ny)
     
                if pepite_or_rect.collidepoint() == position_perso:
                    jeu = 0
     
                position_perso.clamp_ip(terrain_rect)
     
     
        fenetre.blit(arriere_plan,(0,0))
        fenetre.blit(pepite_or,pepite_or_rect)
        fenetre.blit(personnage, position_perso)
        pygame.display.flip()
     
    pygame.quit()
    sauf que mon code marche pas pour "if pepite_or_rect.collidepoint() == position_perso:" et je vous avoue que je sèche pour le coup.

    merci d'avance

  12. #12
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 049
    Points : 1 380
    Points
    1 380
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if pepite_or_rect.collidepoint(position_perso)

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2020
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2020
    Messages : 51
    Points : 29
    Points
    29
    Par défaut
    ça ne marche pas il m'indique cette erreur:
    TypeError: argument must contain two numbers.
    Comment faire?

  14. #14
    Nouveau Candidat au Club
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Avril 2017
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Avril 2017
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    if pepite_or_rect.collidepoint(position_perso.center)

  15. #15
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 049
    Points : 1 380
    Points
    1 380
    Par défaut
    Citation Envoyé par GirVBA Voir le message
    if pepite_or_rect.collidepoint(position_perso.center)
    Bien vu, j'avais pas lu le code.
    Puisque, comme son nom ne l'indique pas, position_perso est un Rect, autant utiliser Rect.colliderect().

  16. #16
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2020
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2020
    Messages : 51
    Points : 29
    Points
    29
    Par défaut
    Ça a l'air de fonctionner, j'ai mis un print("ok") et il s'affiche maintenant faut que je fasse en sorte que mon jeu se termine.
    Merci beaucoup pour vos réponses

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

Discussions similaires

  1. Placer une image dans un dossier où qu'elle soit
    Par st0nky dans le forum Langage
    Réponses: 2
    Dernier message: 04/12/2005, 21h22
  2. [débutant]Placer une image par dessus une autre
    Par sempire dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 21/11/2005, 18h42
  3. [FTP] redimensionner une image aléatoire
    Par webide dans le forum Langage
    Réponses: 9
    Dernier message: 17/11/2005, 16h50
  4. Placer une image à un endroit identifié par ses coordonnées
    Par sempire dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 16/11/2005, 22h19
  5. [XSL] Placer une image avec la feuille de style
    Par Marcopilon dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 01/06/2005, 00h30

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