Python Clés de la presse et de la Clé de déverrouillage d'Écouteur
Je suis un contrôle à distance de voiture de jouet à l'aide de code python .À compter de maintenant, le code est comme ci-dessous
def getkey():
fd = sys.stdin.fileno()
old = termios.tcgetattr(fd)
new = termios.tcgetattr(fd)
new[3] = new[3] & ~TERMIOS.ICANON & ~TERMIOS.ECHO
new[6][TERMIOS.VMIN] = 1
new[6][TERMIOS.VTIME] = 0
termios.tcsetattr(fd, TERMIOS.TCSANOW, new)
c = None
try:
c = os.read(fd, 1)
finally:
termios.tcsetattr(fd, TERMIOS.TCSAFLUSH, old)
return c
def car():
while True:
key = getkey()
if key == 's': #Down arrow
print "Down"
Backward()
elif key == 'w': #Up arrow
print "Up"
forward()
elif key == 'a':
print "left"
Left()
elif key == 'd':
print "Right"
Right()
elif key == 'q': #Quit
print "That's It"
break
def forward():
GPIO.output(11,True) #Move forward
Lorsque j'appuie sur 'w' méthode forward() est appelée et la voiture se déplace vers l'avant, mais wont stop jusqu'à ce que je
quitter le programme ou appelez le GPIO.de sortie(11,Flase) à partir d'une autre méthode.
Est-il un Écouteur qui détecte la clé de sortie de n'importe quelle touche particulière .
Par exemple , si " w " pressé appelé cette méthode et si elle est rejetée appel à une autre méthode
Sudo code
if w_isPressed()
forward()
else if w_isReleased()
stop()
- Vous ne pouvez pas faire cela sans réel accès au clavier. Votre terminal envoie uniquement les touches, de sorte que vous ne pouvez pas dire si une touche a été relâchée.
- Vous pourriez être en mesure de le faire à l'aide de PyGame.
Vous devez vous connecter pour publier un commentaire.
J'ai vu Pygame le développement de jeux bibliothèque utilisée avec succès dans des scénarios similaires avant, la manipulation en temps réel de systèmes et de machines dans la production, et pas seulement jouet exemples. Je pense que c'est un candidat valable ici aussi. Découvrez
pygame.clé
module pour ce qu'il est possible de le faire avec le clavier d'entrée.En bref, si vous n'êtes pas familier avec le développement d'un jeu, en gros, vous interroger en permanence pour des événements tels que l'entrée des changements d'état de l'intérieur d'une infinie boucle de jeu et de réagir en conséquence. Habituellement mettre à jour les paramètres du système en utilisant des deltas par le temps écoulé. Il y a beaucoup de tutoriels sur que et Pygame disponibles autour et Pygame docs sont assez solides.
Un exemple simple de comment aller à ce sujet:
Vous aurez besoin de jouer avec
pygame.KEYDOWN
,pygame.KEYUP
etpygame.clé.set_repeat
selon la façon dont votre voiture de mouvement est mis en œuvre.Face à un problème similaire (je ne suis pas un expert Python), mais cela a fonctionné pour moi