p
u
b
l
i
c
i
t
é
publicité
  1. #1
    Membre chevronné
    Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    juin 2010
    Messages
    839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : juin 2010
    Messages : 839
    Points : 606
    Points
    606

    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: open-source-projects.net
    Site: 3dreaming-imaging.net
    FUN is HARD WORK !!!

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

    Informations forums :
    Inscription : avril 2004
    Messages : 818
    Points : 982
    Points
    982

    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.

Discussions similaires

  1. Interfacage avec de multiple vue
    Par DestinyWar45 dans le forum OpenGL
    Réponses: 5
    Dernier message: 02/11/2006, 12h25
  2. IDLE plante avec Tkinter
    Par von_magnus dans le forum EDI/RAD
    Réponses: 2
    Dernier message: 06/07/2006, 07h20
  3. [C#] Débutant : Pb avec ce trout petit bout de code
    Par Cazaux-Moutou-Philippe dans le forum Windows Forms
    Réponses: 14
    Dernier message: 22/04/2006, 13h19
  4. [Tkinter] Plusieurs fenêtre avec Tkinter
    Par cyrpaut dans le forum Tkinter
    Réponses: 2
    Dernier message: 04/01/2006, 22h24
  5. [Tkinter] Un petit souçis d'event avec Tkinter
    Par fire.stone dans le forum Tkinter
    Réponses: 4
    Dernier message: 29/10/2005, 20h56

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