Example #1
0
# reloj es un timer que indica la velocidad de actualización de la pantalla
reloj = pygame.time.Clock()

# gameOver el el indicador de querer cerrar la pantalla
gameOver = False

# Fuente es un estilo de imagen inicializada dentro de pygame. Pygame solo muestra imagenes o dibujos, no texto.
Fuente = pygame.font.SysFont('fontname', 16)
# VOIX son letras combertidas en imagenes para mostrarlas en pantalla.
#V = Fuente.render('V', True, BLACK)
#O = Fuente.render('O', True, BLACK)
#I = Fuente.render('I', True, BLACK)
#X = Fuente.render('X', True, BLACK)

matriz = gm.cargar_matriz('matriz_aleatoria.txt')
fil = matriz.shape[0]
col = matriz.shape[1]
params = {}  #Se crea el diccionario de parametros

for x in range(0, fil):
    for y in range(0, col):
        params[(x, y)] = (
            ('V', False),
            ('O', False),  ##Se crea una lista de tuplas que definen los
            ('I', False),
            ('X', False),
            ('S', False))  ##parámetros de cada casilla y se asignan al
        ##diccionario según sus coordenadas

params[(5, 0)] = (
Example #2
0
def dibujar(agente, modo, xx, yy):
    print("Agente" + str(agente))
    print("Modo" + str(modo))
    pygame.init()
    costo = 0
    costoAcumulado = 0

    # tamañoPantalla es el una tupla con los valores del tamaño de la pantalla
    tamañoPantalla = (tamañoCasilla * tamañoCuadricula,
                      tamañoCasilla * tamañoCuadricula)

    # pantall es la pantalla a desplegar
    pantalla = pygame.display.set_mode(tamañoPantalla)

    # se le da un titulo a la ventana a desplegar
    pygame.display.set_caption("Grid on PYGAME")

    # reloj es un timer que indica la velocidad de actualización de la pantalla
    reloj = pygame.time.Clock()

    # gameOver el el indicador de querer cerrar la pantalla
    gameOver = False

    # Fuente es un estilo de imagen inicializada dentro de pygame. Pygame solo muestra imagenes o dibujos, no texto.
    Fuente = pygame.font.SysFont('fontname', 16)
    matriz = gm.cargar_matriz('matriz_aleatoria.txt')
    fil = matriz.shape[0]
    col = matriz.shape[1]
    paramsd = {}  #Se crea el diccionario de parametros

    for x in range(0, fil):
        for y in range(0, col):
            paramsd[(x, y)] = {
                'V': False,
                'O': False,
                'I': False,
                'X': False,
                'S': False,
                'F': False,
                'k': False
            }

    paramsd[(xx, yy)] = {
        'V': False,
        'O': False,
        'I': True,
        'X': False,
        'S': False,
        'F': False
    }
    paramsd[(6, 8)] = {
        'V': False,
        'O': False,
        'I': False,
        'X': False,
        'S': False,
        'F': True
    }

    ente = ag.definirAgente(agente)

    ag.spawn(paramsd, matriz, ente)

    while not gameOver:

        pantalla.fill(BLACK)  # La pantalla se llena de un fondo negro.
        # T es un contador para pintar las coordenadas
        T = 0
        #fila es la fila que se va a recorrer de la matriz :V
        fila = 0
        ag.sense(paramsd, matriz, ente)
        # este for recorre el ancho de la pantalla
        for i in range(1, tamañoPantalla[0], 40):
            linea = matriz[fila]  #se obtiene una fila de la matriz
            fila = fila + 1
            if linea != '':
                columna = 0
                # este for recorre el alto de la pantalla
                for j in range(1, tamañoPantalla[1], 40):

                    lista_params = paramsd[(fila - 1, columna)]

                    if lista_params['V'] or lista_params['S']:

                        if linea[columna] == 0:
                            # Los cuadros son ligeramente más pequeños para dar el efecto de la cuadricula.
                            pygame.draw.rect(pantalla, mountains,
                                             [j, i, 38, 38], 0)
                        elif linea[columna] == 1:
                            pygame.draw.rect(pantalla, land, [j, i, 38, 38], 0)
                        elif linea[columna] == 2:
                            pygame.draw.rect(pantalla, water, [j, i, 38, 38],
                                             0)
                        elif linea[columna] == 3:
                            pygame.draw.rect(pantalla, sand, [j, i, 38, 38], 0)
                        elif linea[columna] == 4:
                            pygame.draw.rect(pantalla, forest, [j, i, 38, 38],
                                             0)
                        elif linea[columna] == 5:
                            pygame.draw.rect(pantalla, pantano, [j, i, 38, 38],
                                             0)
                        elif linea[columna] == 6:
                            pygame.draw.rect(pantalla, nieve, [j, i, 38, 38],
                                             0)
                        elif linea[columna] == 7:
                            pygame.draw.rect(pantalla, aquaP, [j, i, 38, 38],
                                             0)
                        elif linea[columna] == 8:
                            pygame.draw.rect(pantalla, redP, [j, i, 38, 38], 0)
                        elif linea[columna] == 9:
                            pygame.draw.rect(pantalla, pinkP, [j, i, 38, 38],
                                             0)

                    else:
                        pygame.draw.rect(pantalla, BLACK, [j, i, 38, 38], 0)

                    columna = columna + 1

                    ## Se obtiene la lista de parametros para esta coordenada

                    if (lista_params['V']):
                        V = Fuente.render('V', lista_params['V'], BLACK)
                        pantalla.blit(V, [j + 3, i + 26])
                    if (lista_params['O']):
                        O = Fuente.render('O', lista_params['O'], BLACK)
                        pantalla.blit(O, [j + 12, i + 26])
                    if (lista_params['I']):
                        I = Fuente.render('I', lista_params['I'], BLACK)
                        pantalla.blit(I, [j + 15, i + 15])
                    if (lista_params['X']):
                        X = Fuente.render('X', lista_params['X'], BLACK)
                        pantalla.blit(X, [j + 30, i + 26])
                    if (lista_params['F']):
                        X = Fuente.render('F', lista_params['F'], BLACK)
                        pantalla.blit(X, [j + 15, i + 15])

            # Texto es la imagen con la que se pintarán las coordenadas
            Texto = Fuente.render(str(T), True, BLACK)
            pantalla.blit(Texto, [i, 2])  # Coordenadas en el eje X
            if T != 0:
                pantalla.blit(Texto, [2, i])  # Coordenadas en el eje Y
            T += 1

        pygame.display.flip()

        if modo == 2:
            costo = ag.step(paramsd, matriz, ente)
            if (costo):
                costoAcumulado = costo + costoAcumulado
        elif modo == 1:
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    print("GameOver!")
                    gameOver = True
                elif event.type == pygame.KEYDOWN:
                    if event.key == pygame.K_w:
                        costo = ag.step_up(paramsd, matriz, ente)
                        if (costo):
                            costoAcumulado = costo + costoAcumulado
                    elif event.key == pygame.K_a:
                        costo = ag.step_left(paramsd, matriz, ente)
                        if (costo):
                            costoAcumulado = costo + costoAcumulado
                    elif event.key == pygame.K_s:
                        costo = ag.step_down(paramsd, matriz, ente)
                        if (costo):
                            costoAcumulado = costo + costoAcumulado
                    elif event.key == pygame.K_d:
                        costo = ag.step_right(paramsd, matriz, ente)
                        if (costo):
                            costoAcumulado = costo + costoAcumulado

        reloj.tick(5)
    pygame.quit()
    print("Costo acumulado: " + str(costoAcumulado))
Example #3
0
def dibujar(parametros_iniciales):
    agente=parametros_iniciales['ente']
    modo=parametros_iniciales['modo']
    j_inicial=parametros_iniciales['j_inicial']
    i_inicial=parametros_iniciales['i_inicial']
    j_final=parametros_iniciales['j_final']
    i_final=parametros_iniciales['i_final']
    print("Agente"+str(agente))
    print("Modo"+str(modo))
    pygame.init()
    costo=0
    costoAcumulado=0
    lista=[]
    contf = 0

    # tamañoPantalla es el una tupla con los valores del tamaño de la pantalla
    tamañoPantalla = (tamañoCasilla*tamañoCuadricula,
                      tamañoCasilla*tamañoCuadricula)

    # pantall es la pantalla a desplegar
    pantalla = pygame.display.set_mode(tamañoPantalla)

    # se le da un titulo a la ventana a desplegar
    pygame.display.set_caption("Grid on PYGAME")

    # reloj es un timer que indica la velocidad de actualización de la pantalla
    reloj = pygame.time.Clock()

    # gameOver el el indicador de querer cerrar la pantalla
    gameOver = False

    # Fuente es un estilo de imagen inicializada dentro de pygame. Pygame solo muestra imagenes o dibujos, no texto.
    Fuente = pygame.font.SysFont('fontname', 16)
    matriz = gm.cargar_matriz('laberinto.txt')
    fil = matriz.shape[0]
    col = matriz.shape[1]
    paramsd = {}             #Se crea el diccionario de parametros


    for i in range(0, fil):
        for j in range(0, col):
            paramsd[(i, j)] = {'V': False, 'O': False, 'I': False, 'X': False,
                               'S':False, 'F':False, 'k':False, 'n':False, 'h':0}

    paramsd[(i_inicial, j_inicial)] = {'V': False, 'O': False, 'I': True, 'X': False,
                         'S':False,'F':False, 'k':False, 'n':False,'h':0}
    paramsd[(i_final, j_final)] = {'V': False, 'O': False, 'I': False, 'X': False, 
                      'S':False,'F':True, 'k':False, 'n':False,'h':0}


    agente=ag.Agente(agente)
    
    agente.spawn(paramsd, matriz)
       
    while not gameOver:
            
        pantalla.fill(BLACK)  # La pantalla se llena de un fondo negro.
        # T es un contador para pintar las coordenadas
        T = 0
        #fila es la fila que se va a recorrer de la matriz :V 
        fila = 0
        agente.sense_estrella(paramsd,matriz,jfinal,ifinal)
        # este for recorre el ancho de la pantalla
        for i in range(1, tamañoPantalla[0], 40):
            linea = matriz[fila] #se obtiene una fila de la matriz
            fila = fila+1
            if linea != '':
                columna = 0
                # este for recorre el alto de la pantalla
                for j in range(1, tamañoPantalla[1], 40):

                    lista_params = paramsd[(fila-1, columna)]

                    if lista_params['V'] or lista_params['S']:

                        if linea[columna] == 0:
                               # Los cuadros son ligeramente más pequeños para dar el efecto de la cuadricula.
                               pygame.draw.rect(pantalla, mountains, [j, i, 38, 38], 0)
                        elif linea[columna] == 1:
                                pygame.draw.rect(pantalla, land, [j, i, 38, 38], 0)
                        elif linea[columna] == 2:
                                pygame.draw.rect(pantalla, water, [j, i, 38, 38], 0)
                        elif linea[columna] == 3:
                                pygame.draw.rect(pantalla, sand, [j, i, 38, 38], 0)
                        elif linea[columna] == 4:
                                pygame.draw.rect(pantalla, forest, [j, i, 38, 38], 0)
                        elif linea[columna] == 5:
                                pygame.draw.rect(pantalla, pantano, [j, i, 38, 38], 0)
                        elif linea[columna] == 6:
                                pygame.draw.rect(pantalla, nieve, [j, i, 38, 38], 0)
                        elif linea[columna] == 7:
                                pygame.draw.rect(pantalla, aquaP, [j, i, 38, 38], 0)
                        elif linea[columna] == 8:
                                pygame.draw.rect(pantalla, redP, [j, i, 38, 38], 0)
                        elif linea[columna] == 9:
                                pygame.draw.rect(pantalla, pinkP, [j, i, 38, 38], 0)


                    else:
                        pygame.draw.rect(pantalla, BLACK, [j, i, 38, 38], 0)

                    ## Se obtiene la lista de parametros para esta coordenada
            
                    
                    if(lista_params['O']):
                        O = Fuente.render('O('+str(lista_params['h'])+')', lista_params['O'], BLACK)
                        pantalla.blit(O, [j+5, i+25])
                    if(lista_params['I']):
                        I = Fuente.render('I', lista_params['I'], BLACK)
                        pantalla.blit(I, [j+15, i+15])
                    if(lista_params['X']):
                        X = Fuente.render('X', lista_params['X'], BLACK)
                        pantalla.blit(X, [j+3, i+3])
                    if (lista_params['F']):
                        X = Fuente.render('F', lista_params['F'], BLACK)
                        pantalla.blit(X, [j+15, i+15])
                    if lista_params['X'] and lista_params['F'] and contf == 2:
                        gameOver=True
                        print("Ha llegado a su objetivo!!!")
                        time.sleep(10)
                    elif lista_params['X'] and lista_params['F']:
                        contf += 1
                    columna = columna+1
        
            # Texto es la imagen con la que se pintarán las coordenadas
            Texto = Fuente.render(str(T), True, BLACK)
            pantalla.blit(Texto, [i, 2])  # Coordenadas en el eje X
            if T != 0:
                pantalla.blit(Texto, [2, i])  # Coordenadas en el eje Y
            T += 1

        pygame.display.flip()

        costo = agente.step_estrella(paramsd)
        agente.root.imprimir_arbol()
        
        
        reloj.tick(5)
    pygame.quit()
    print("Costo acumulado: "+str(costoAcumulado))
Example #4
0
# reloj es un timer que indica la velocidad de actualización de la pantalla
reloj = pygame.time.Clock()

# gameOver el el indicador de querer cerrar la pantalla
gameOver = False

# Fuente es un estilo de imagen inicializada dentro de pygame. Pygame solo muestra imagenes o dibujos, no texto.
Fuente = pygame.font.SysFont('fontname', 16)
# VOIX son letras combertidas en imagenes para mostrarlas en pantalla.
#V = Fuente.render('V', True, BLACK)
#O = Fuente.render('O', True, BLACK)
#I = Fuente.render('I', True, BLACK)
#X = Fuente.render('X', True, BLACK)

matriz = gm.cargar_matriz('laberinto.txt')
fil = matriz.shape[0]
col = matriz.shape[1]
paramsd = {}             #Se crea el diccionario de parametros


for x in range(0, fil):
    for y in range(0, col):
        paramsd[(x, y)] = {'V': False, 'O': False, 'I': False, 'X': False, 'S':False, 'F':False,'k':False}

paramsd[(10, 0)] = {'V': False, 'O': False, 'I': True, 'X': False, 'S':False,'F':False}
paramsd[(6,8)] = {'V': False, 'O': False, 'I': False, 'X': False, 'S':False,'F':True}

ag.spawn(paramsd, matriz)

while not gameOver: