CONNEXION
  • RetourJeux
    • Tests
    • Soluces
    • Previews
    • Sorties
    • Hit Parade
    • Les + attendus
    • Tous les Jeux
  • RetourActu
    • Culture Geek
    • Astuces
    • Réalité Virtuelle
    • Rétrogaming
    • Toutes les actus
  • RetourHigh-Tech
    • Actus JVTECH
    • Bons plans
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTECH
  • 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
    • Xbox Series
    • Overwatch 2
    • FUT 23
    • League of Legends
    • Genshin Impact
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • PS4
  • One
  • Switch
  • Wii U
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Etoile Abonnement RSS

Sujet : besoin d'aide en python(pygame)

DébutPage précedente
1
Page suivantePage suivante
Tismadde Tismadde
MP
Niveau 3
21 avril 2019 à 11:02:17

Alors voilà, d'abord bonjour à tous.

J'ai besoin d'aide pour coder un mario bros, dans le cadre d'un projet de Bac en ISN. Je suis en PYTHON avec PYGAME
Le problème qui me fait venir vers vous est le suivant: j'ai créé une collisions entre mario et un goomba qui inflige des dégâts à mario.
Problème, les dégâts s'additionnent super vite et les 100 de santé de mario sont mis à 0 en une demi-seconde de contact.
Je souhaite donc mettre un délai entre le moment où le premier coup est prise et le moment où mario peut en prendre un deuxième, mettre ma boucle collision en pause si on veut.
J'ai essayé avec pygame.wait , time.sleep , et pygame.delay, mais ca met l'intégralité du jeu en pause, pas que la fonction qui m'intéresse.

Je suis ouvert à toutes les suggestions.
programme actuel: https://pastebin.com/NGjA2Ceg

Message édité le 21 avril 2019 à 11:03:26 par Tismadde
boboboris1719 boboboris1719
MP
Niveau 2
21 avril 2019 à 21:24:45

Hello,

Je pense que tu pourrais rajouter dans ta classe player un attribut supplémentaire qui serai un booléen :

self.collisionLocked = false

et du coup tu pourrais faire sa dans ta fonction collision de la classe goomba :

if (player.collisionLocked == false and not (blocks_hit_list == [])) and (player.rect.y >= (self.rect.y-60)):
player.health -= 1
player.collisionLocked = true

d'abord tu rajoutes dans ton if une clause si collisionLocked == false alors le joueur peut perdre de la vie. Ensuite dans le cas ou le joueur perdrait de la vie tu actives ton flag player.collisionLocked = true comme ça tu empêche la collision de se répéter dès la prochaine frame.

Ensuite il faudrait que ton flag collisionLocked passe à false au bout d'un certain délai. Je pense (mais je suis moins à l'aise là-dessus) que tu pourrais créer une méthode dans la classe player cette méthode serait démarrée dès lors que player.collisionLocked serait égal à false et vérifierait si un certain temps est passé avant de repasser le flag player.collisionLocked à true.

N'hésite pas à le faire un retour j'adore le développement de jeu et j'aimerai bien savoir comment ça a marché pour toi :)

Tismadde Tismadde
MP
Niveau 3
22 avril 2019 à 12:41:00

Merci pour ta réponse, je vais essayer ça et te tenir au courant dès que j'aurai tenté!:cimer:

Tismadde Tismadde
MP
Niveau 3
22 avril 2019 à 16:08:55

La première étape de ton idée fonctionne, c'est juste que le player.collisionLocked ne repasse pas en false après le timer que j'ai essayé de mettre en place.
Je vais continuer à chercher comment le faire re switcher puis je reviens vers vous!

DébutPage précedente
1
Page suivantePage suivante
Répondre
Prévisu
?
Victime de harcèlement en ligne : comment réagir ?
Infos 0 connecté(s)

Gestion du forum

Modérateurs : godrik, LGV
Contacter les modérateurs - Règles du forum

Sujets à ne pas manquer

La vidéo du moment