2017-10-18 8 views
0

J'essaye de créer un jeu simple, où un utilisateur déplace un 'X' à travers l'écran pour essayer d'arriver à un 'O'. Cela m'oblige à utiliser les flèches (haut, bas, gauche, droite) et je ne sais pas programmer cela. J'ai regardé autour de moi en ligne et j'ai vu divers exemples, comme des malédictions, getch, sys, pygame, mais soit ils sont tous trop compliqués, soit ils ne fonctionnent pas sur mon ordinateur.Obtenir une entrée de touche de la part de l'utilisateur Python

Quelqu'un pourrait-il fournir un exemple complet et une explication de la façon de détecter une pression sur une touche en Python, quelque chose comme. Il faut aussi aider avec un écran de jeu, en particulier, l'impression quelque chose à un certain endroit, se trouvent (0,0), un peu comme la façon dont la tortue commence à dessiner à (0,0):

userposy = 0 (y position of the 'X') 
*print 'X' at (0, userposy)* 
while True: 
    char = *detect what key is pressed* 
    if char == *down arrow*: 
     userposy -= 1. 
    *print 'X' at (0, userposy)* 
+0

double possible de [jeu simple pression de touche python] (https://stackoverflow.com/questions/44002474/python-keypress-simple-game) – bendl

+0

La détection varie pressions sur les touches, en fonction de ce que vous êtes OS en utilisant. C'est pourquoi les gens le font normalement en utilisant le code de la bibliothèque, donc ils n'ont pas besoin de s'inquiéter des détails désordonnés. –

Répondre

1

Essayez d'utiliser Pygame! Il inquiète de tous les détails de la débrouille et vous offre une interface simple pour l'entrée de l'utilisateur pour les jeux:

https://www.pygame.org/news

(Ce que je veux dire est que ce probablement le chemin de moindre résistance. Je peux me tromper bien)

+0

L'OP a mentionné qu'ils ont regardé Pygame. Mais peut-être qu'ils devraient jeter un second coup d'œil. ;) –

+0

Oui, c'est ce à quoi je faisais allusion avec cette réponse. –

0

Je crois que ce fait ce que vous décrivez en utilisant la tortue Python:

from turtle import Turtle, Screen 

FONT_SIZE = 24 
FONT = ('Arial', FONT_SIZE, 'normal') 

def tortoise_down(distance=1): 
    screen.onkeypress(None, "Down Arrow") # disable event hander in event hander 
    tortoise.forward(distance) 
    display.undo() # erase previous distance 
    display.write('X at {:.1f}'.format(tortoise.ycor()), align='center', font=FONT) 
    screen.onkeypress(tortoise_down, "Down") # (re)enable even handler 

screen = Screen() 
screen.setup(500, 500) 

display = Turtle(visible=False) 
display.speed('fastest') 
display.penup() 
display.goto(0, screen.window_height()/2 - FONT_SIZE * 2) 
display.write('', align='center', font=FONT) # garbage for initial .undo() 

tortoise = Turtle('turtle') 
tortoise.speed('fastest') 
tortoise.setheading(270) 
tortoise.penup() 

tortoise_down(0) # initialize display and event handler 

screen.listen() 
screen.mainloop() 

Cliquez d'abord sur la fenêtre pour en faire l'auditeur. Ensuite, vous pouvez appuyer sur les flèches individuelles ou les maintenir enfoncées et (après un léger délai), elles se répètent automatiquement.

enter image description here