Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Yidu en 2 Noviembre 2022, 19:00 pm



Título: ¿Funciona match...case con pygame? [PYTHON 3.10]
Publicado por: Yidu en 2 Noviembre 2022, 19:00 pm
Hola!

Tengo dudas si el match...case de la versión 3.10 de python funciona con pygame. O quizás, yo lo no uso correctamente. La versión que tengo de pygame también es la última.

En este trozo de código se mueve un objeto de la forma tradicional. Es decir, con los IFs.

Código
  1.        teclas = pygame.key.get_pressed()
  2.  
  3.        # Movimientos del objeto
  4.        if teclas[pygame.K_LEFT]:
  5.            self.velocidad_x = -10
  6.        if teclas[pygame.K_RIGHT]:
  7.            self.velocidad_x = 10
  8.        if teclas[pygame.K_UP]:
  9.            self.velocidad_y = -10
  10.        if teclas[pygame.K_DOWN]:
  11.            self.velocidad_y = 10

Y la duda es si con match...case sería así:

Código
  1.        teclas = pygame.key.get_pressed()
  2.  
  3.        # Movimientos del objeto.
  4.        match teclas:
  5.            case [pygame.K_LEFT]:
  6.                self.velocidad_x = -10
  7.            case [pygame.K_RIGHT]:
  8.                self.velocidad_x = 10
  9.            case [pygame.K_UP]:
  10.                self.velocidad_y = -10
  11.            case [pygame.K_DOWN]:
  12.                self.velocidad_y = 10

Esta claro, que falta el resto de la estructura del código. Solo he puesto ambos condicionales para ilustrar lo que digo. Con los IFs se mueve el objeto y con match...case, no.


Título: Re: ¿Funciona match...case con pygame? [PYTHON 3.10]
Publicado por: reymosquito en 2 Noviembre 2022, 20:43 pm
si funciona, ahora no tengo python 10 por problemas con otras bibliotecas y no lo puedo probar, lo que recuerdo es que no se puede ahorrar tanto código, sino me equivoco sería:
Código
  1. teclas = pygame.key.get_pressed()
  2.  
  3.        # Movimientos del objeto.
  4.        match teclas:
  5.            case teclas[pygame.K_LEFT]:
  6.                self.velocidad_x = -10
  7.            case teclas[pygame.K_RIGHT]:
  8.                self.velocidad_x = 10
  9.            case teclas[pygame.K_UP]:
  10.                self.velocidad_y = -10
  11.            case teclas[pygame.K_DOWN]:
  12.                self.velocidad_y = 10
  13.  


Título: Re: ¿Funciona match...case con pygame? [PYTHON 3.10]
Publicado por: Yidu en 3 Noviembre 2022, 18:12 pm
Pues de ser así, poco código se ahorra usando los IFs o el match/case.


Título: Re: ¿Funciona match...case con pygame? [PYTHON 3.10]
Publicado por: reymosquito en 4 Noviembre 2022, 06:05 am
¿y qué te hace pensar que fue implementado para ahorrar código? Es más que todo por que viene de otros lenguajes y muchos lo pedían, no ahorra código en si,  sino que parece menos feo por la cantidad de if.


Título: Re: ¿Funciona match...case con pygame? [PYTHON 3.10]
Publicado por: Yidu en 7 Noviembre 2022, 18:47 pm
¿y qué te hace pensar que fue implementado para ahorrar código? Es más que todo por que viene de otros lenguajes y muchos lo pedían, no ahorra código en si,  sino que parece menos feo por la cantidad de if.

Pues si es así, no se que decirte. Aparte, no llevará tantos IFs, pero lleva la misma cantidad de "case".


Título: Re: ¿Funciona match...case con pygame? [PYTHON 3.10]
Publicado por: Danielㅤ en 7 Noviembre 2022, 23:54 pm
Hola, el case es un tipo de condicional simple.


Saludos