Python - Problema al usar la teclas

   
Vista:

Problema al usar la teclas

Publicado por John Doe (4 intervenciones) el 08/04/2013 10:41:19
Hola buenas, tengo un pequeño problema a la hora de crear un pequeño menu y desplazarme por el a traves de las teclas arriba y abajo.

El problemas es que no se como poner para que una misma tecla pueda usarse dos veces, me explico, si presiono la tecla abajo se mueve a la opcion siguiente, pero si le vuelvo a dar abajo para la siguiente opcion me salta error y no hay manera, en cambio si pongo que la tecla sea derecha, entonces si me funciona mas o menos.

El codigo es el siguiente:

if keys [K_UP] and select > 1:
select -= 1
elif keys [K_DOWN] and select < 2:
select += 1

De momento solo hay 3 opciones, pero ya os digo que no se como poner para que la select 3 salga cuando le de a la tecla DOWN.


A ver si me lo podeis aclarar. Gracias de antemano!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Problema al usar la teclas

Publicado por xve (1235 intervenciones) el 08/04/2013 11:41:23
Hola Jhon, no entiendo muy bien tu código, ya que lo único que haces aquí, es aumentar o disminuir el valor de la variable select...

si nos pudieras mostrar el código entero para poder probarlo, seras mas fácil entenderte y poder ayudarte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema al usar la teclas

Publicado por John Doe (4 intervenciones) el 08/04/2013 13:35:37
Esto es mi menu:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
def menu(screen, select):
	if select == 1:
		empezarjuego, empezarjuegox = texto("Empezar Partida", WIDTH/1-180, HEIGHT/1-120, (255, 0, 0))
		tsalir, rtsalir = texto("Salir", WIDTH/1-300, HEIGHT/2+140)
		creditos, creditosx = texto("Creditos", WIDTH/1-90, HEIGHT/2+180)
 
	if select == 2:
		empezarjuego, empezarjuegox = texto("Empezar Partida", WIDTH/1-180, HEIGHT/1-120)
		tsalir, rtsalir = texto("Salir", WIDTH/1-300, HEIGHT/2+140, (255, 0, 0))
		creditos, creditosx = texto("Creditos", WIDTH/1-90, HEIGHT/2+180)
 
	if select == 3:
		empezarjuego, empezarjuegox = texto("Empezar Partida", WIDTH/1-180, HEIGHT/1-120)
		tsalir, rtsalir = texto("Salir", WIDTH/1-300, HEIGHT/2+140)
		creditos, creditosx = texto("Creditos", WIDTH/1-90, HEIGHT/1-35, (255, 0, 0))
 
        screen.blit(empezarjuego, empezarjuegox)
	screen.blit(tsalir, rtsalir)
	screen.blit(creditos, creditosx)


Y dentro del main():

1
2
3
4
5
6
7
8
9
10
11
12
select = 1
 
	while True:
		keys = pygame.key.get_pressed()
		salir(keys)
 
		if keys[K_UP] and select > 1:
			select -= 1
 
		elif keys[K_DOWN] and select < 2:
			if select == 1:
			        select += 1


Entonces la idea es que presionando otra vez la tecla DOWN se desplaze a creditos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Problema al usar la teclas

Publicado por xve (1235 intervenciones) el 08/04/2013 15:23:15
Hola John, porque tienes este condicional: if select == 1:

Simplemente deberia ser:
1
2
3
4
5
if keys[K_UP] and select > 1:
                        select -= 1
 
                elif keys[K_DOWN] and select < 2:
                         select += 1


Coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema al usar la teclas

Publicado por John Doe (4 intervenciones) el 08/04/2013 15:58:25
Buenas, el codigo que puse no era el que queria poner, lo que pasa que despues de estar probando de todo lo deje asi, lo he probado tal como tu lo has puesto y tampoco me funciona.

Ahora mismo lo tengo asi, tal como has puesto y nada (añado lo siguiente que tengo puesto pero creo que no influye)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
select = 1
 
	while True:
		keys = pygame.key.get_pressed()
		salir(keys)
 
		if keys[K_UP] and select > 1:
			select -= 1
 
		elif keys[K_DOWN] and select < 2:
			select += 1
 
		elif keys[K_SPACE]:
			if select == 3:
				creditos(screen)
			elif select == 2:
				sys.exit()


Este trozo que pongo ahora es la solucion que le he podido dar y que funciona, que es en vez de usar DOWN uso RIGHT pero claro, lo suyo es DOWN si no el menu no tiene mucho sentido jejeje.

1
2
elif keys[K_RIGHT] and select < 3:
			select += 1
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Problema al usar la teclas

Publicado por xve (1235 intervenciones) el 08/04/2013 22:55:23
No entiendo muy bien que esta pasando... pero si pones:
1
elif keys[K_DOWN] and select < 3:

debería de funcionare... atención con el numero!!!

si no te va, nos puedes mostrar el código completo para poder ejecutar y hacer pruebas?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema al usar la teclas

Publicado por John Doe (4 intervenciones) el 09/04/2013 20:37:55
Muy buenas, bueno al final mi profesor que sabe bastante del tema me ha dado la solucion aunque realmente en muchas de las combinaciones que yo habia probado resultaba funcionar pero claro añadiendo quizas codigo inecesario. El problema residia en que el tiempo de retardo de la tecla era demasiado rapido por asi decirlo, entonces al pulsar DOWN pasaba por select 2 pero muy rapido.

La solucion seria añadir un delay mas despacio a la pantalla principal donde esta el menu y poner el codigo de esta forma:

1
2
3
4
5
if keys[K_UP] and select != 1:
            select -=1
 
elif keys[K_DOWN] and select != 3:
	    select +=1


Una vez lo ves la verdad es que piensas como no se te habia ocurrido antes :)

xve muchas gracias por tu colaboracion ;)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Problema al usar la teclas

Publicado por xve (1235 intervenciones) el 09/04/2013 22:17:52
Gracias por comentarlo John!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar