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

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : juin 2010
    Messages : 725
    Points : 461
    Points
    461

    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 :
    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 :
    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 :
    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
    770
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 770
    Points : 911
    Points
    911

    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 :
    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
  •