Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 18/05/2023, à 16:10

chris7522

random.randrange (python)

Bonjour a toutes et a tous ,
J'ai une classe qui fonctionne correctement et me permet de créer une catégorie d'ennemi :

class enemyAlien:  # personnage alien
    def __init__(self, img):
        self.image = pygame.image.load(img)
        self.image = pygame.transform.scale(self.image, (100, 100))
        self.rect = self.image.get_rect()
        self.rect.x = random.randrange(1800, 40000)
        self.rect.y = random.randrange(0, 850)
        self.health = set.alien_health
        self.hitbox = (self.rect.x, self.rect.y, self.image.get_width(),
                       self.image.get_height())  
        self.vel = set.alienvelocity
        self.visible = True
        self.lasercount = 0
        ...
 

Et plus loin j'ai :

     elif levelcounter == 6:  
        spawnaliens = True
        powers(win, powerups)


    if spawnaliens:
        for i in range(0, 30):
            img = random.choice(aliens_img)
            aliens.append(enemyAlien(img))

Mes Aliens viennent donc de la droite vers la gauche . J'aimerai qu'ils partent de la gauche vers la droite , j'ai fait ca , mais ca ne fonctionne pas :

self.rect.x = random.randrange(-1000, -50)
self.rect.y = random.randrange(500, 700) 

Aucun aliens apparait !
Comment pourrai je faire ?

Dernière modification par chris7522 (Le 18/05/2023, à 16:11)

Hors ligne

#2 Le 18/05/2023, à 16:44

Vobul

Re : random.randrange (python)

-randrange(50, 1000)

Vobul
Utilisez le retour utilisable de commandes !!!
J'aime la langue française, mais je parle franglais, deal with it.
RTFM

Hors ligne

#3 Le 18/05/2023, à 20:37

chris7522

Re : random.randrange (python)

Bonjour Vobul ,
Merci  de ton aide .
Je n'ai pas compris ta réponse , que dois je faire exactement ?
Il faudrai que mes aliens soient crée en dehors de ma fenetre , pas au meme coordonnées x pour qu'ils n'apparaissent  pas dans la fenetre au meme moment  et qu'ils avancent de gauche a droite .

Hors ligne

#4 Le 18/05/2023, à 21:44

Vobul

Re : random.randrange (python)

Tu prends un nombre entre 50 et 1000 et tu le rends négatif, au lieu de prendre un nombre entre -1000 et -50.


Vobul
Utilisez le retour utilisable de commandes !!!
J'aime la langue française, mais je parle franglais, deal with it.
RTFM

Hors ligne

#5 Le 18/05/2023, à 21:58

iznobe

Re : random.randrange (python)

Bonsoir si j' ai bien compris la réponse de @vobul tu remplaces :

self.rect.x = random.randrange(-1000, -50)

par :

self.rect.x = random.-randrange(50, 1000)

enfin un truc approchant du moins .

Dernière modification par iznobe (Le 18/05/2023, à 21:59)


retour utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .

En ligne

#6 Le 18/05/2023, à 22:24

Watael

Re : random.randrange (python)

Vobul a écrit :

Tu prends un nombre entre 50 et 1000 et tu le rends négatif, au lieu de prendre un nombre entre -1000 et -50.

quand je fais quelques tirages, je ne vois pas de différence.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#7 Le 18/05/2023, à 23:04

Vobul

Re : random.randrange (python)

Watael a écrit :

quand je fais quelques tirages, je ne vois pas de différence.

En fait j'ai juste assumé présumé que randrange() ne prenait pas de nombres négatifs en arguments. J'ai donc mal compris le problème.

Dernière modification par Vobul (Le 19/05/2023, à 02:00)


Vobul
Utilisez le retour utilisable de commandes !!!
J'aime la langue française, mais je parle franglais, deal with it.
RTFM

Hors ligne

#8 Le 19/05/2023, à 00:48

Watael

Re : random.randrange (python)

petit point lexicographique :

j'ai juste assumé présumé

"assumer", c'est prendre à son compte, à sa charge.
la manière dont tu l'emploies ici est un anglicisme.
wink


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#9 Le 19/05/2023, à 01:59

Vobul

Re : random.randrange (python)

Watael a écrit :

la manière dont tu l'emploies ici est un anglicisme.

Pas étonnant vu le temps que je passe à lire, écrire et parler anglais. example, language, etc... Merci de l'avoir relevé en tout cas !


Vobul
Utilisez le retour utilisable de commandes !!!
J'aime la langue française, mais je parle franglais, deal with it.
RTFM

Hors ligne

#10 Le 19/05/2023, à 08:49

Nuliel

Re : random.randrange (python)

iznobe a écrit :

Bonsoir si j' ai bien compris la réponse de @vobul tu remplaces :

self.rect.x = random.randrange(-1000, -50)

par :

self.rect.x = random.-randrange(50, 1000)

enfin un truc approchant du moins .

Bonjour,
Non, ce que propose Vobul, c'est

self.rect.x = - random.randrange(50, 1000)

qui effectivement fonctionne. Si tu voulais garder les paramètres négatifs, il faut renseigner le step à -1 (car tu descends pour aller de -50 à -1000):

random.randrange(-50, -1000, -1)

En lisant la doc, on voit que ça utilise range(start, stop, step) en interne, qui va de start inclus à stop exclus. Donc si tu veux prendre -1000, il faudra choisir entre:

random.randint(-1000, -50) # le plus simple
random.randrange(-50, -1001, -1)
- random.randrange(50, 1001)

Référence: https://docs.python.org/3/library/rando … .randrange

Dernière modification par Nuliel (Le 19/05/2023, à 08:56)

Hors ligne

#11 Le 19/05/2023, à 15:09

chris7522

Re : random.randrange (python)

Je vous remercie beaucoup de votre aide . Cependant , dans mon code , aucun n'a fonctionné . Rien n'apparait a l'écran  avec:

 random.randint(-1000, -50) # le plus simple
random.randrange(-50, -1001, -1)
- random.randrange(50, 1001)

J'ai éssayé ca mais pas mieux  :

 self.rect.x = -random.choice([-1000, -50, 0])

En faisant ca , évidemment ca fonctionne a tous les coups , preuve que par ailleurs ca roule :

 self.rect.x = 0

Mais ce n'est pas ce que je recherche puisqu'ils arrivent au meme coordonnées x

Hors ligne

#12 Le 20/05/2023, à 10:23

Nuliel

Re : random.randrange (python)

Désolé, je pensais que le problème venait d'un mauvais appel à randrange, mais ce n'est visiblement pas le cas.
Je n'ai pas forcément d'idée pour résoudre le problème que tu rencontres, mais je penses qu'il serait bien que tu commences par fixer une position de départ avant de chercher à utiliser randrange, histoire d'être sûr que tu crées pas le personnage très très loin (et qu'il va mettre 2h à rentrer dans la zone affichée)

Dernière modification par Nuliel (Le 20/05/2023, à 10:23)

Hors ligne

#13 Le 20/05/2023, à 18:03

Compte supprimé

Re : random.randrange (python)

Bonjour,
sel.hitbox représente la boîte englobante de ton image? Si oui elle n'est pas bien définie...