Skip to content

Instantly share code, notes, and snippets.

@parzibyte
Created November 6, 2020 00:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save parzibyte/32d1c47694ad0a0b6b3d54bfad4aa998 to your computer and use it in GitHub Desktop.
Save parzibyte/32d1c47694ad0a0b6b3d54bfad4aa998 to your computer and use it in GitHub Desktop.
# Si no hay juego iniciado, ignoramos el clic
if not juego_iniciado:
continue
"""
Ahora necesitamos a X e Y como índices del arreglo. Los índices no
son lo mismo que los pixeles, pero sabemos que las imágenes están en un arreglo
y por lo tanto podemos dividir las coordenadas entre la medida de cada cuadro, redondeando
hacia abajo, para obtener el índice.
Por ejemplo, si la medida del cuadro es 100, y el clic es en 140 entonces sabemos que le dieron
a la segunda imagen porque 140 / 100 es 1.4 y redondeado hacia abajo es 1 (la segunda posición del
arreglo) lo cual es correcto. Por poner otro ejemplo, si el clic fue en la X 50, al dividir da 0.5 y
resulta en el índice 0
"""
x = math.floor(xAbsoluto / medida_cuadro)
y = math.floor(yAbsoluto / medida_cuadro)
# Primero lo primero. Si ya está mostrada o descubierta, no hacemos nada
cuadro = cuadros[y][x]
if cuadro.mostrar or cuadro.descubierto:
# continue ignora lo de abajo y deja que el ciclo siga
continue
# Si es la primera vez que tocan la imagen (es decir, no están buscando el par de otra, sino apenas
# están descubriendo la primera)
if x1 is None and y1 is None:
# Entonces la actual es en la que acaban de dar clic, la mostramos
x1 = x
y1 = y
cuadros[y1][x1].mostrar = True
pygame.mixer.Sound.play(sonido_voltear)
else:
# En caso de que ya hubiera una clickeada anteriormente y estemos buscando el par, comparamos...
x2 = x
y2 = y
cuadros[y2][x2].mostrar = True
cuadro1 = cuadros[y1][x1]
cuadro2 = cuadros[y2][x2]
# Si coinciden, entonces a ambas las ponemos en descubiertas:
if cuadro1.fuente_imagen == cuadro2.fuente_imagen:
cuadros[y1][x1].descubierto = True
cuadros[y2][x2].descubierto = True
x1 = None
x2 = None
y1 = None
y2 = None
pygame.mixer.Sound.play(sonido_clic)
else:
pygame.mixer.Sound.play(sonido_fracaso)
# Si no coinciden, tenemos que ocultarlas en el plazo de [segundos_mostrar_pieza] segundo(s). Así que establecemos
# la bandera. Como esto es un ciclo infinito y asíncrono, podemos usar el tiempo para saber
# cuándo fue el tiempo en el que se empezó a ocultar
ultimos_segundos = int(time.time())
# Hasta que el tiempo se cumpla, el usuario no puede jugar
puede_jugar = False
comprobar_si_gana()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment