Python - Pulsar dos teclas simultáneamente que realicen dos funciones diferentes (pygame)

 
Vista:
sin imagen de perfil

Pulsar dos teclas simultáneamente que realicen dos funciones diferentes (pygame)

Publicado por Henchu (3 intervenciones) el 10/12/2021 12:45:47
Hola buenas!
Estoy haciendo un proyecto de fin de curso para la universidad y quería hacer el clásico ping pong de las máquinas arcade. Sin embargo, tengo problemas porque no consigo que ambos jugadores puedan moverse a la vez.

Es decir, tengo que el jugador 1 se mueva con W y S y el jugador 2 con las flechas de dirección. Al pulsar una cada vez no hay problema, pero al pulsar las dos el juego se atasca (los "rectángulos" se mueven con dificultad).

Por eso, ¿hay alguna forma de hacer que tome las dos teclas como inputs separados?

Gracias de antemano :D
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
sin imagen de perfil
Val: 2.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Pulsar dos teclas simultáneamente que realicen dos funciones diferentes (pygame)

Publicado por tincopasan (1082 intervenciones) el 11/12/2021 08:23:49
podrías poner por lo menos un ejemplo mínimo y funcional de como lo estás intentando.
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
sin imagen de perfil

Pulsar dos teclas simultáneamente que realicen dos funciones diferentes (pygame)

Publicado por Henchu (3 intervenciones) el 13/12/2021 10:23:56
Lo siento, se me pasó por completo. No estoy acostumbrado a publicar dudas en foros. La parte principal la tengo algo así:

C-Users_corre_Desktop_PRACTICAS_prac10_preproyecto.py-Notepad-13_12_2021-10_27_38

Es bastante tosco y muchas cosas se podrán mejorar, pero por ahora lo que me interesa es arreglar ese problema. Muchas gracias.
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
sin imagen de perfil
Val: 2.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Pulsar dos teclas simultáneamente que realicen dos funciones diferentes (pygame)

Publicado por tincopasan (1082 intervenciones) el 13/12/2021 12:53:07
Veamos:
1) No subas imagenes del código, no hay forma de reproducirlo, aunque en este caso no es ni isiquiera posible iniciarlo.
2) en el editor de la públicación está el tag </>Código, sirve para poner allí código y que mantenga el formato de tabulación que estes usando
3)Como no te interesa mejorar nada solo hacerlo funcionar haré un código que debería andar a mi manera, te toca adaptarlo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#-*- coding:utf-8 -*-
import pygame
from pygame.locals import *
 
import sys
 
ANCHO, ALTO = 800,600
BLANCO = (255, 255, 255)
NEGRO = (0, 0, 0)
VERDE = (0,255,0)
FPS =60
 
class Jugador():
    def __init__(self,color,posx,posy):
        self.color=color
        self.posx=posx
        self.posy=posy
        self.cuadro= pygame.Rect(self.posx,self.posy,50,150)
 
    def dibujar(self,pantalla):
        pygame.draw.rect(pantalla,self.color,self.cuadro)
 
def main():
    pygame.init()
    pantalla = pygame.display.set_mode((ANCHO,ALTO))
    pygame.display.set_caption("Movimiento doble")
    reloj = pygame.time.Clock()
 
    jugador1=Jugador(BLANCO,100,225)
    jugador2=Jugador(VERDE, 625,225)
    jugar = True
    while jugar:
        reloj.tick(FPS)
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                jugar = False
        pulsada = pygame.key.get_pressed()
        if pulsada[pygame.K_w]:
            jugador1.cuadro.top -= 10
        if pulsada[pygame.K_s]:
            jugador1.cuadro.bottom += 10
        if pulsada[pygame.K_UP]:
            jugador2.cuadro.top -= 10
        if pulsada[pygame.K_DOWN]:
            jugador2.cuadro.bottom += 10
 
        pantalla.fill(NEGRO)
        jugador1.dibujar(pantalla)
        jugador2.dibujar(pantalla)
        pygame.display.flip()
 
if __name__ == "__main__":
    main()
    pygame.quit()
    sys.exit()
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
sin imagen de perfil

Pulsar dos teclas simultáneamente que realicen dos funciones diferentes (pygame)

Publicado por Henchu (3 intervenciones) el 14/12/2021 19:12:12
Muchísimas gracias, ahora funciona perfectamente. Siento las molestias. Gracias por los consejos sobre la publicación de dudas en el foro. Un saludo y, de nuevo, muchas gracias por tu ayuda.
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