CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Probleme avec mon oiseau Flappy Bird en python

les-toilettes
les-toilettes
Niveau 6
08 mai 2022 à 20:35:23

Hello, je suis entrain de coder un Flappy Bird en python et j'ai réussi a le faire descendre a l'infini. Mais le problème est que le temps que je génère deux tubes, mon oiseau ne descend pas, donc ca rend mal (en gros il descend de 4 pixels par 4pixels mais lentement, donc c'est nul). Ce qu'il faut comprendre, c'est que sans generer les tubes, mon oiseau descend bien, assez rapidement, mais quand je veux creer un tube, le temps de creer celui-ci, mon oiseau ne descend pas.

Voila mon code:
https://image.noelshack.com/fichiers/2022/18/7/1652034762-capture-d-ecran-2022-05-08-203217.png

La boule for avec pipesDown et pipesUp, c'est pour déplacer mes tubes (qui sont stockés dans un tableau)

les-toilettes
les-toilettes
Niveau 6
08 mai 2022 à 20:41:25

Ou est-ce possible de faire deux action simultanément ?

Magrozz
Magrozz
Niveau 7
08 mai 2022 à 20:51:57

Parce que tu effectues les instructions les unes après les autres.
Regarde du côté de la fonction setInterval.

les-toilettes
les-toilettes
Niveau 6
08 mai 2022 à 20:54:50

Le 08 mai 2022 à 20:51:57 :
Parce que tu effectues les instructions les unes après les autres.
Regarde du côté de la fonction setInterval.

Oui je sais que c'est a cause de ca, merci pour ta réponse, et ca fait quoi setInterval ?

les-toilettes
les-toilettes
Niveau 6
08 mai 2022 à 20:59:27

Le 08 mai 2022 à 20:58:57 :

Le 08 mai 2022 à 20:54:50 :

Le 08 mai 2022 à 20:51:57 :
Parce que tu effectues les instructions les unes après les autres.
Regarde du côté de la fonction setInterval.

Oui je sais que c'est a cause de ca, merci pour ta réponse, et ca fait quoi setInterval ?
Et setInterval n'existe pas en python si ?

Magrozz
Magrozz
Niveau 7
08 mai 2022 à 21:13:59

Je pensais que tu étais en JavaScript. Regarde les Threads ou les Pools.

les-toilettes
les-toilettes
Niveau 6
08 mai 2022 à 21:14:30

Le 08 mai 2022 à 21:13:59 :
Je pensais que tu étais en JavaScript. Regarde les Threads ou les Pools.

J'ai essayé mais j'y comprends rien, et la doc et horrible

Magrozz
Magrozz
Niveau 7
09 mai 2022 à 05:44:35

Le 08 mai 2022 à 21:14:30 :

Le 08 mai 2022 à 21:13:59 :
Je pensais que tu étais en JavaScript. Regarde les Threads ou les Pools.

J'ai essayé mais j'y comprends rien, et la doc et horrible

Abandonne dans ce cas :ok:

les-toilettes
les-toilettes
Niveau 6
09 mai 2022 à 17:05:42

Le 09 mai 2022 à 05:44:35 :

Le 08 mai 2022 à 21:14:30 :

Le 08 mai 2022 à 21:13:59 :
Je pensais que tu étais en JavaScript. Regarde les Threads ou les Pools.

J'ai essayé mais j'y comprends rien, et la doc et horrible

Abandonne dans ce cas :ok:

Je vais pas abandonner, mais que je fais ça:

play = True
while play:

    t1 = threading.Thread(target=bird_down).start()
    t2 = threading.Thread(target=pipes_generator).start()
    t3 = threading.Thread(target=pipes_move).start()

    if bird.ycor() < -275 or bird.ycor() > 275:
        game.lose()
        break

J'ai ces erreurs, pourtant j'ai regardé sur pleins de sites et ils font pareil:

Exception in thread Thread-1 (bird_down)Exception in thread :
Traceback (most recent call last):
Thread-2 (pipes_generator)  File "C:\Users\mikal\AppData\Local\Programs\Python\Python310\lib\threading.py", line 1009, in _bootstrap_inner
:
Traceback (most recent call last):
  File "C:\Users\mikal\AppData\Local\Programs\Python\Python310\lib\threading.py", line 1009, in _bootstrap_inner
    self.run()
      File "C:\Users\mikal\AppData\Local\Programs\Python\Python310\lib\threading.py", line 946, in run
self.run()
  File "C:\Users\mikal\AppData\Local\Programs\Python\Python310\lib\threading.py", line 946, in run
    self._target(*self._args, **self._kwargs)
  File "C:\Users\mikal\PycharmProjects\flappy bird\main.py", line 33, in bird_down
    self._target(*self._args, **self._kwargs)
    bird.default_down()  File "C:\Users\mikal\PycharmProjects\flappy bird\main.py", line 38, in pipes_generator

  File "C:\Users\mikal\PycharmProjects\flappy bird\bird.py", line 26, in default_down
    down = PipeDown(ypos)    self.goto(self.xcor(), self.ycor() - self.speed)

  File "C:\Users\mikal\PycharmProjects\flappy bird\pipeDown.py", line 6, in __init__
  File "C:\Users\mikal\AppData\Local\Programs\Python\Python310\lib\turtle.py", line 1777, in goto
    super().__init__()
  File "C:\Users\mikal\AppData\Local\Programs\Python\Python310\lib\turtle.py", line 3815, in __init__
    self._goto(Vec2D(x, y))
  File "C:\Users\mikal\AppData\Local\Programs\Python\Python310\lib\turtle.py", line 3160, in _goto
    RawTurtle.__init__(self, Turtle._screen,
    screen._pointlist(self.currentLineItem),  File "C:\Users\mikal\AppData\Local\Programs\Python\Python310\lib\turtle.py", line 2545, in __init__

  File "C:\Users\mikal\AppData\Local\Programs\Python\Python310\lib\turtle.py", line 754, in _pointlist
    cl = self.cv.coords(item)
  File "<string>", line 1, in coords
    self.drawingLineItem = screen._createline()
  File "C:\Users\mikal\AppData\Local\Programs\Python\Python310\lib\turtle.py", line 526, in _createline
  File "C:\Users\mikal\AppData\Local\Programs\Python\Python310\lib\tkinter\__init__.py", line 2795, in coords
    return self.cv.create_line(0, 0, 0, 0, fill="", width=2,
  File "<string>", line 1, in create_line
    self.tk.call((self._w, 'coords') + args))]
RuntimeError  File "C:\Users\mikal\AppData\Local\Programs\Python\Python310\lib\tkinter\__init__.py", line 2823, in create_line
: main thread is not in main loop
    return self._create('line', args, kw)
  File "C:\Users\mikal\AppData\Local\Programs\Python\Python310\lib\tkinter\__init__.py", line 2805, in _create
    return self.tk.getint(self.tk.call(
RuntimeError: main thread is not in main loop
Traceback (most recent call last):
  File "C:\Users\mikal\PycharmProjects\flappy bird\main.py", line 62, in <module>
    if bird.ycor() < -275 or bird.ycor() > 275:
KeyboardInterrupt

Process finished with exit code -1073741510 (0xC000013A: interrupted by Ctrl+C)
les-toilettes
les-toilettes
Niveau 6
09 mai 2022 à 17:14:58

Evidement mes fonctions sont declarées

Azerban
Azerban
Niveau 16
09 mai 2022 à 17:45:41

Je pense que tu n'as pas du tout besoin de plusieurs threads pour générer ton image (c'est même contre-productif ici). Le principe de Turtle (et des librairies graphiques comme Pygame) c'est de calculer l'ensemble des positions de chaque objet et de les rendre (de les afficher) à chaque tour de boucle.

Tu peux générer tout simplement tes tuyaux en créant des objets Turtle et en leur donnant une forme et une couleur avec la méthode shape https://docs.python.org/fr/3.10/library/turtle.html#turtle.shape

Ensuite comme tu auras au moins 2 tortues pipe (un tuyau en haut et un en bas) + une tortue oiseau, tu pourras bouger les tortues pipe de la droite vers la gauche et ta tortue oiseau de haut en bas (et de bas en haut que tu appuies sur une touche).

Ensuite comme tu disposes des coordonnées de chaque objet, à chaque tour de boucle tu peux regarder si la distance absolue entre l'un des deux tuyaux et ton oiseau est inférieure à un certain seuil, si oui collision, on sort de la boucle et on recommence la partie.

les-toilettes
les-toilettes
Niveau 6
09 mai 2022 à 19:30:40

Le 09 mai 2022 à 17:45:41 :
Je pense que tu n'as pas du tout besoin de plusieurs threads pour générer ton image (c'est même contre-productif ici). Le principe de Turtle (et des librairies graphiques comme Pygame) c'est de calculer l'ensemble des positions de chaque objet et de les rendre (de les afficher) à chaque tour de boucle.

Tu peux générer tout simplement tes tuyaux en créant des objets Turtle et en leur donnant une forme et une couleur avec la méthode shape https://docs.python.org/fr/3.10/library/turtle.html#turtle.shape

Ensuite comme tu auras au moins 2 tortues pipe (un tuyau en haut et un en bas) + une tortue oiseau, tu pourras bouger les tortues pipe de la droite vers la gauche et ta tortue oiseau de haut en bas (et de bas en haut que tu appuies sur une touche).

Ensuite comme tu disposes des coordonnées de chaque objet, à chaque tour de boucle tu peux regarder si la distance absolue entre l'un des deux tuyaux et ton oiseau est inférieure à un certain seuil, si oui collision, on sort de la boucle et on recommence la partie.

Oui c'est justement ce que j'ai fais, mais le problème c'est que le temps que je génère un pipe, mon oiseau ne tombe pas, puisque je fais chaque chose l'une après l'autre

Azerban
Azerban
Niveau 16
09 mai 2022 à 20:03:06

Normalement si tu utilises la méthode shape pour dessiner ton rectangle ça devrait être assez rapide.

Ensuite il faut que tu utilises la méthode update de ton objet screen pour mettre à jour ton écran après avoir tracé tes objets.

Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware
La vidéo du moment