Précédent   Forum du club des développeurs et IT Pro > Autres langages > Python & Zope > Programmation multimédia/Jeux
Programmation multimédia/Jeux Forum d'entraide sur la 2D, 3D, video, son, ...
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 13/08/2012, 05h45   #1
Luke spywoker
Membre éclairé
 
Avatar de Luke spywoker
 
Homme
Etudiant informatique autodidacte
Inscription : juin 2010
Messages : 589
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Etudiant informatique autodidacte

Informations forums :
Inscription : juin 2010
Messages : 589
Points : 370
Points : 370
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...
Blog: http://3dcyberspace.unblog.fr/
Site: Sanctuaire cybernétique
Luke spywoker est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/08/2012, 11h04   #2
josmiley
Membre chevronné
 
Homme
Inscription : avril 2004
Messages : 670
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 670
Points : 722
Points : 722
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 ?
josmiley est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 13h24.


 
 
 
 
Partenaires

Hébergement Web