+ Répondre à la discussion
Affichage des résultats 1 à 2 sur 2
  1. #1
    Membre expérimenté
    Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    juin 2010
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : juin 2010
    Messages : 793
    Points : 584
    Points
    584

    Par défaut [PYGAME] interfacage avec Tkinter & petit pb.

    Salut les pythons multimédiatiques,
    J'ai conçus un petit jeu de tuture avec pygame et je me pose la question si il est possible d'interfacer pygame avec Tkinter (la seule GUI que je connaisse) afin de contruire un menu ?

    PS[Question subsidiaire]: J'ai implémenté un pygame.key.set_repeat(delay,interval) et pourtant quand on change de vitesse la voiture n'avance pas en même temps et s'arrète si en laissant la touche avancer enfoncer.

    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
     
    import pygame
    from pygame.locals import *
    from sys import exit
     
    pygame.init()
    #definition de la classe voiture et de  ses méthodes
    pygame.key.set_repeat(delay,interval)
    while True :
      for event in pygame.event.get() :
        if event.type == QUIT :
          exit
        if event.type == KEYDOWN :
          if event.key == K_UP :
            #méthode voiture avance
          if event.key == k_z :
            #méthode changer de vitesse
      pygame.display.update()
    j'ai déja essayer:
    -d'implémenter la combinaison de touches K_UP and K_z grace a :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for keys in pygame.key.get_pressed() :
      if keys == [K_UP] and keys == [K_z] :
        #méthode changer de vitesse
    et de poster un event KEYUP grace a :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if event.key == k_z :
      #méthode changer de vitesse
      pygame.event.post(pygame.event.Event(KEYUP))
    Mais le résultat est toujours le même il faut relâcher la touche avancer ([K_UP]) en changeant de vitesse pour redémarrer ce qui est dommage pour la jouabilitée.

    Excusez la double question contraire au convention des forums et merci pour vos réponses.
    Pour faire tes armes:
    Use du présent pour construire ton futur sinon use de ce que tu as appris auparavant.
    Et sois toujours bien armé avant de te lancer.
    Le hasard ne sourit qu'aux gens préparés...
    Site: Sanctuaire cybernétique
    Site: 3dreaming-imaging.net
    FUN is HARD WORK !!!

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    avril 2004
    Messages
    776
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 776
    Points : 920
    Points
    920

    Par défaut

    c'est normal, une touche est répétée temps qu'elle n'est pas interrompue par une autre; c'est un comportement normal, essaye dans n'importe qu'elle interface de saisie de texte, tu verras

    une solution est de remplacer la capture des events relatifs au clavier par key.get_pressed()
    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    while True:
        # lecture de la file d'event
        # sinon event.pump()
        touche = key.get_pressed()
        if touche[K_UP]:
            #méthode voiture avance
        if touche[K_z]:
            #méthode changer de vitesse
    mais je n'aime pas trop cette façon car la répétition agit sur toutes les touches ...


    je ferai plutôt comme ça:

    - pas de set_repeat() !
    - créer une class Voiture plus facile à gérer
    - une temporisation pour la vitesse (modifiée via K_z)
    - une variable "avance" qui indique si K_UP est enfoncée ou relâchée
    - si `avance` et en fonction de la temporisation: faire avancer la voiture ...




    pour ce qui est du menu, c'est quel genre ? et si pas trop compliqué, pourquoi ne pas le faire avec pygame ?

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •