Skip to content

Instantly share code, notes, and snippets.

@yeffrimic
Created May 7, 2024 05:33
Show Gist options
  • Save yeffrimic/fc439426f7233049db8d07ae87fd0a5d to your computer and use it in GitHub Desktop.
Save yeffrimic/fc439426f7233049db8d07ae87fd0a5d to your computer and use it in GitHub Desktop.
import os
import pygame
import sys
import pyttsx3
# Inicializar Pygame
pygame.init()
# Inicializar pyttsx3
engine = pyttsx3.init()
# Configurar la velocidad de la voz
engine.setProperty('rate', 150) # Aquí puedes ajustar la velocidad, 150 es un buen punto de partida
# Definir dimensiones de la ventana
ANCHO = 1920
ALTO = 1080
CELDA_ANCHO = ANCHO // 3
CELDA_ALTO = ALTO // 4
# Definir colores
BLANCO = (255, 255, 255)
NEGRO = (0, 0, 0)
# Obtener la lista de archivos de imágenes en el directorio actual
imagenes_dir = "./imagenes"
imagenes_files = os.listdir(imagenes_dir)
imagenes_paths = [os.path.join(imagenes_dir, file) for file in imagenes_files if file.endswith(".png")]
# Cargar las imágenes
imagenes = [pygame.image.load(path) for path in imagenes_paths]
# Escalar las imágenes para que encajen en las celdas
imagenes = [pygame.transform.scale(imagen, (CELDA_ANCHO, CELDA_ALTO)) for imagen in imagenes]
# Crear la ventana
ventana = pygame.display.set_mode((ANCHO, ALTO))
pygame.display.set_caption("Rejilla de Imágenes")
# Definir fuente para el texto en Braille
fuente_braille = pygame.font.Font("BRAILLE1.ttf",60)
# Variable para almacenar el índice de la imagen seleccionada
indice_imagen_seleccionada = None
# Función para dibujar la rejilla de imágenes
def dibujar_rejilla():
for i, imagen in enumerate(imagenes):
fila = i // 3
columna = i % 3
x = columna * CELDA_ANCHO
y = fila * CELDA_ALTO
ventana.blit(imagen, (x, y))
# Dibujar Braille en la esquina superior izquierda
letra_asociada = chr(pygame.K_a + i)
braille = obtener_braille(letra_asociada)
texto_braille = fuente_braille.render(braille, True, NEGRO)
ventana.blit(texto_braille, (x + 5, y + 5)) # Ajuste de posición
# Función para obtener la representación Braille de una letra
def obtener_braille(letra):
# Definir representación Braille de las letras del alfabeto en minúsculas
braille_letras = {
'a': "a",
'b': "b",
'c': "c",
'd': "d",
'e': "e",
'f': "f",
'g': "g",
'h': "h",
'i': "i",
'j': "j",
'k': "k",
'l': "l"
}
return braille_letras.get(letra, "⠠⠡") # Devuelve "⠠⠡" si la letra no está en el diccionario (puedes cambiarlo según sea necesario)
# Función para dibujar una imagen en el centro de la pantalla
def mostrar_imagen_en_centro(imagen):
ventana.fill(BLANCO)
x = (ANCHO - imagen.get_width()) // 2
y = (ALTO - imagen.get_height()) // 2
ventana.blit(imagen, (x, y))
pygame.display.flip()
# Loop principal
esperar_input = False
mostrar_imagen_central = False
clock = pygame.time.Clock()
tiempo_inicio_mostrar_imagen = 0
tiempo_mostrar_imagen = 1000 # Tiempo en milisegundos para mostrar la imagen en grande
while True:
ventana.fill(BLANCO)
# Dibujar la rejilla de imágenes
dibujar_rejilla()
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
elif event.type == pygame.KEYDOWN and not esperar_input:
# Si se presiona una tecla, mostrar la imagen en el centro
if event.key in range(pygame.K_a, pygame.K_a + len(imagenes)):
indice_imagen_seleccionada = event.key - pygame.K_a
imagen_seleccionada = imagenes[indice_imagen_seleccionada]
nombre_imagen = os.path.splitext(os.path.basename(imagenes_paths[indice_imagen_seleccionada]))[0]
print("Imagen seleccionada:", nombre_imagen)
mostrar_imagen_en_centro(imagen_seleccionada)
mostrar_imagen_central = True
tiempo_inicio_mostrar_imagen = pygame.time.get_ticks() # Iniciar temporizador
# Decir el nombre de la imagen seleccionada
engine.say(nombre_imagen)
engine.runAndWait()
elif event.type == pygame.MOUSEBUTTONDOWN and not esperar_input:
# Si se hace clic en una imagen, mostrarla en el centro
for i, imagen in enumerate(imagenes):
x, y = pygame.mouse.get_pos()
fila = i // 3
columna = i % 3
celda_x = columna * CELDA_ANCHO
celda_y = fila * CELDA_ALTO
if celda_x <= x < celda_x + CELDA_ANCHO and celda_y <= y < celda_y + CELDA_ALTO:
indice_imagen_seleccionada = i
imagen_seleccionada = imagenes[indice_imagen_seleccionada]
nombre_imagen = os.path.splitext(os.path.basename(imagenes_paths[indice_imagen_seleccionada]))[0]
print("Imagen seleccionada:", nombre_imagen)
mostrar_imagen_en_centro(imagen_seleccionada)
mostrar_imagen_central = True
tiempo_inicio_mostrar_imagen = pygame.time.get_ticks() # Iniciar temporizador
# Decir el nombre de la imagen seleccionada
engine.say(nombre_imagen)
engine.runAndWait()
if mostrar_imagen_central:
tiempo_actual = pygame.time.get_ticks()
if tiempo_actual - tiempo_inicio_mostrar_imagen >= tiempo_mostrar_imagen:
mostrar_imagen_central = False
pygame.display.flip()
clock.tick(60)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment