コード例 #1
0
def juego_mostrar(grilla, titulo):
    """
    Dibuja la grilla recibida en la pantalla
    """
    imagenes = {
        PARED: 'img/wall.gif',
        CAJA: 'img/box.gif',
        JUGADOR: 'img/player.gif',
        OBJETIVO: 'img/goal.gif',
        VACIO: 'img/ground.gif'
    }
    gamelib.title(titulo)

    for fila in range(len(grilla)):
        for celda in range(len(grilla[0])):
            gamelib.draw_image('img/ground.gif', 64 * celda, 64 * fila)
            if grilla[fila][celda] == OBJETIVO_CAJA:
                gamelib.draw_image(imagenes[CAJA], 64 * celda, 64 * fila)
                gamelib.draw_image(imagenes[OBJETIVO], 64 * celda, 64 * fila)
                continue
            if grilla[fila][celda] == OBJETIVO_JUGADOR:
                gamelib.draw_image(imagenes[JUGADOR], 64 * celda, 64 * fila)
                gamelib.draw_image(imagenes[OBJETIVO], 64 * celda, 64 * fila)
                continue
            gamelib.draw_image(imagenes[grilla[fila][celda]], 64 * celda,
                               64 * fila)
コード例 #2
0
def main():
    gamelib.title("Chase")
    gamelib.resize(600, 400)

    while gamelib.is_alive():
        n = 0
        juego  = chase.Juego(n)

        while not juego.terminado():
            juego = juego.inicializar_siguiente_nivel(n + 1)
            while not juego.nivel_terminado():
                gamelib.draw_begin()
                mostrar_estado_juego(juego)
                gamelib.draw_end()

                # Terminamos de dibujar la ventana, ahora procesamos los eventos (si el
                # usuario presionó una tecla o un botón del mouse, etc).

                # Esperamos hasta que ocurra un evento

                ev = gamelib.wait()

                if not ev:
                    # El usuario cerró la ventana.
                    break

                if ev.type == gamelib.EventType.KeyPress:
                    tecla = ev.key

                    if tecla in TECLAS:

                        juego.avanzar_un_step(tecla)

                        if juego.nivel_perdido():
                            gamelib.say('Te atrapo un robot, ¡Perdiste el juego!')
                            return

                        juego.mover_robots()

                        if juego.nivel_perdido():
                            gamelib.say('Te atrapo un robot, ¡Perdiste el juego!')
                            return



                if juego.nivel_terminado():

                    gamelib.say('Felicidades, pasaste al siguiente nivel')
                    n+=1
                    break

        gamelib.say('Felicidades, GANASTE EL JUEGO')
        return
コード例 #3
0
ファイル: main.py プロジェクト: MirandaHuallpa/SokobanGame
def dibujar_juego(numero, juego, opcion):
    '''
    Recibe el nivel del juego, el estado del juego y un numero (1,2,3 o 4)
    y dibuja de acuerdo al número pasado por parámetro.
    '''
    opciones = {
        1: '',
        2: 'Pista Disponible',
        3: 'Pensando....',
        4: 'Pista No Disponible'
    }
    gamelib.draw_begin()
    gamelib.title(f'SOKOBAN    Level : {numero}')
    juego_mostrar(juego)  #muestra el juego en la ventana
    gamelib.draw_text(opciones[opcion], 10, 10, fill='yellow', anchor='nw')
    gamelib.draw_end()
コード例 #4
0
def main():
    gamelib.title("Game of life")
    life = life_create([
        '..........',
        '..........',
        '..........',
        '.....#....',
        '......#...',
        '....###...',
        '..........',
        '..........',
    ])
    gamelib.resize(len(life[0]) * CELL_SIZE, len(life) * CELL_SIZE)
    while gamelib.is_alive():
        draw(life)
        gamelib.wait(gamelib.EventType.KeyPress)
        life = life_next(life)
コード例 #5
0
def main():
    gamelib.title("Pong")

    W, H = SIZE
    gamelib.resize(W, H)

    state = State(
        paddles=(H / 2, H / 2),
        ball_pos=(W / 2, H / 2),
        ball_vel=random_ball_velocity(),
        score=(0, 0),
    )

    key_pressed = {}

    while gamelib.loop():
        gamelib.draw_begin()
        draw_paddle(state, PADDLE1)
        draw_paddle(state, PADDLE2)
        draw_ball(state)
        draw_score(state)
        gamelib.draw_end()

        for event in gamelib.get_events():
            if event.type == gamelib.EventType.KeyPress:
                key_pressed[event.key] = True
            if event.type == gamelib.EventType.KeyRelease:
                key_pressed[event.key] = False

        if key_pressed.get('q', False): state = move_paddle(state, PADDLE1, -1)
        if key_pressed.get('a', False): state = move_paddle(state, PADDLE1, +1)
        if key_pressed.get('Up', False):
            state = move_paddle(state, PADDLE2, -1)
        if key_pressed.get('Down', False):
            state = move_paddle(state, PADDLE2, +1)

        state = move_ball(state)
        state = check_goal(state)
コード例 #6
0
def main():
    '''Inicializa el juego'''

    gl.title("Sokoban")

    try:
        # Genera la lista de niveles, con la matriz de objetos, y el nombre del nivel.
        niveles = parser.lista_niveles(ARCHIVO_NIVELES)
    except (IOError, FileNotFoundError):
        render.error_archivo(ARCHIVO_NIVELES)

        ev = gl.wait(gl.EventType.KeyPress)
        return

    try:
        # Genera el diccionario con las teclas, y la accion que generan esas teclas
        controles = parser.dict_controles(ARCHIVO_CONTROLES)
    except (IOError, FileNotFoundError):
        render.error_archivo(ARCHIVO_CONTROLES)

        ev = gl.wait(gl.EventType.KeyPress)
        return

    nivel_nro = PRIMER_NIVEL - 1

    # Empezar contador de tiempo para dar tiempo total luego de finalizados todos los niveles
    tiempo_inicial = time.time()

    # Itera por cada nivel
    while gl.is_alive():

        nivel = niveles[nivel_nro].copy()

        grilla = nivel["grilla"]
        titulo = nivel["title"]

        nivel_actual = soko.crear_grilla(grilla)

        x, y = render.cambiar_tamanio_ventana(nivel_actual)

        render.titulo(titulo, (x, y))
        time.sleep(1)

        accion = (0, 1)

        # Crea nuevas instancias, para que no genere errores cuando pase de nivel
        deshacer = Deshacer()
        backtraking = Backtracking()

        # Este ciclo solo espera al input del jugador
        while True:
            gl.draw_begin()

            render.nivel(nivel_actual, accion)

            gl.draw_end()

            ev = gl.wait(gl.EventType.KeyPress)
            if not ev:
                return

            tecla = ev.key

            if not tecla in controles:
                continue

            accion = controles[tecla]

            # Actualizar el estado del juego, según la `tecla` presionada
            if type(accion) == tuple:
                deshacer.agregar_estado(nivel_actual)
                backtraking.solucion_disponible = False
                nivel_actual = soko.mover(nivel_actual, accion)

            elif accion == "REINICIAR":
                deshacer.agregar_estado(nivel_actual)
                nivel_actual = soko.crear_grilla(grilla)
                backtraking.solucion_disponible = False

            elif accion == "PISTA":
                if not backtraking.solucion_disponible:
                    render.pensando_solucion(nivel_actual)
                    try:
                        backtraking.generar_solucion(nivel_actual)
                    except:
                        render.error_backtracking()
                        ev = gl.wait(gl.EventType.KeyPress)
                        render.cambiar_tamanio_ventana(nivel_actual)

                else:
                    deshacer.agregar_estado(nivel_actual)
                    accion = backtraking.obtener_mov()
                    nivel_actual = soko.mover(nivel_actual, accion)

            elif accion == "DESHACER":
                if deshacer.se_puede_deshacer():
                    nivel_actual = deshacer.deshacer_movimiento()
                    backtraking.solucion_disponible = False
                else:
                    gl.play_sound('src/alert.wav')

            elif accion == "SALIR":
                return

            if soko.juego_ganado(nivel_actual):
                break

        # Paso al siguiente nivel
        nivel_nro += 1

        # Verifica que haya terminado todos los niveles
        if nivel_nro >= len(niveles):

            tiempo_final = time.time()
            tiempo_total = tiempo_final - tiempo_inicial

            # Genera horas, minutos y segundos
            tiempo = "Tiempo total " + convertir_segundos(tiempo_total)

            render.final((x, y), tiempo)

            ev = gl.wait(gl.EventType.KeyPress)

            return
コード例 #7
0
def setear_juego(niveles, nivel):
    juego = soko.crear_grilla(niveles[nivel]) 
    resize(juego)
    gamelib.title("Sokoban - Nivel: " + str(nivel))

    return juego
コード例 #8
0
def main():
    gamelib.resize(chase.ANCHO_INTERFAZ, chase.ALTO_INTERFAZ)
    gamelib.title("Chase")
    
    while gamelib.is_alive():
        #Dibujo pantalla de inicio
        gamelib.draw_begin()
        chase.dibujar_pantalla_de_inicio()
        gamelib.draw_end()

        # Esperamos hasta que ocurra un evento
        ev = gamelib.wait()
        
        if not ev:
            #El usuario cerró la ventana.
            break
            
        if ev.type == gamelib.EventType.KeyPress and ev.key == 'Escape':
            # El usuario presionó la tecla Escape, cerrar la aplicación.
            break
            
        if ev.type == gamelib.EventType.ButtonPress:
            # El usuario presionó un botón del mouse
            x, y = ev.x, ev.y # averiguamos la posición donde se hizo click
            
            if (x >= ((ANCHO_INTERFAZ//2)-150) and x <= (((ANCHO_INTERFAZ//2)-MARGEN_SUPERIOR)+MARGEN_SUPERIOR*2)) and (y >= (ALTO_INTERFAZ - ALTO_INTERFAZ//5) and y <= ((ALTO_INTERFAZ - ALTO_INTERFAZ//5)+100)):
                #Creo un un nuevo juego.
                juego = chase.crear_juego()
                chase.agregar_robots(juego)
                while gamelib.loop(fps=30):
                    for event in gamelib.get_events():
                        if not chase.terminado(juego):

                            ev = gamelib.wait()
                            if ev.type == gamelib.EventType.ButtonPress:
                                x, y = ev.x, ev.y
                                if (x >= 0 and x <= ANCHO_INTERFAZ) and (y >= MARGEN_SUPERIOR and y <= ALTO_INTERFAZ):
                                    jugador, robots, tablero, puntaje = juego
                                    juego = chase.trasladar_jugador(juego, x, y)
                                    juego = chase.avanzar(juego)

                                elif (x >= 100 and x <= 2 * MARGEN_SUPERIOR) and (y >= ((MARGEN_SUPERIOR/2)/2) and y <= (MARGEN_SUPERIOR/2)/2+75):
                                    juego = chase.teletransportar_jugador(juego)

                            gamelib.draw_begin() 
                            chase.dibujar_juego(juego)
                            gamelib.draw_end()
                                
                        if chase.terminado(juego):
                            gamelib.draw_begin()    
                            chase.dibujar_game_over()
                            gamelib.draw_end()
                            ev = gamelib.wait()

                            if ev.type == gamelib.EventType.ButtonPress:
                                # El usuario presionó un botón del mouse
                                x, y = ev.x, ev.y                          
                                #Verifico si el usuario quiere volver a jugar
                                if (x >= (ANCHO_INTERFAZ//2-150) and x <= ((ANCHO_INTERFAZ//2-150)+200)) and (y >= (ALTO_INTERFAZ//2+50) and y <= ((ALTO_INTERFAZ//2+50)+75)):
                                    juego = chase.crear_juego()
                                    chase.agregar_robots(juego)
コード例 #9
0
def main():
    '''
    Funcion principal del juego. Mantiene la interfaz grafica y evalua las teclas recibidas y si el juego esta terminado 
    '''
    # Inicializar el estado del juego
    tetris.importar_piezas(tetris.RUTA_PIEZAS)

    juego = tetris.crear_juego(tetris.generar_pieza())
    salir = False

    puntaje_juego = 0
    ingreso_puntaje = False

    cambiar_ficha = False
    siguiente_ficha = tetris.generar_pieza()

    gamelib.resize(grafico.ANCHO_PANT, grafico.ALTO_PANT)
    gamelib.play_sound("sound/bradinsky.wav")

    teclas = importar_teclas(tetris.RUTA_TECLAS)

    timer_bajar = ESPERA_DESCENDER
    while gamelib.loop(fps=30):
        gamelib.draw_begin()
        gamelib.title("TETRIS")
        # Dibujar la pantalla
        grafico.tablero(puntaje_juego)
        grafico.piezas(juego, siguiente_ficha)

        if salir:
            break

        if tetris.terminado(juego):
            grafico.terminado()
            if not ingreso_puntaje:
                leaderboard = tetris.cargar_leaderboard()
                leaderboard, ingreso_puntaje = grafico.top_puntajes(
                    leaderboard, puntaje_juego)
            grafico.imprimir_puntajes(leaderboard)

        gamelib.draw_end()
        for event in gamelib.get_events():
            if not event:
                break
            if event.type == gamelib.EventType.KeyPress:
                tecla = event.key
                # Actualizar el juego, según la tecla presionada ( ROTAR ( w) , MOVER izq der abajo, guardar, cargar )

                juego = actualizar_movimiento(juego, tecla, teclas)

                if tecla in teclas["GUARDAR"]:
                    tetris.guardar_partida(juego, siguiente_ficha,
                                           puntaje_juego)
                if tecla in teclas["CARGAR"]:
                    juego, siguiente_ficha, puntaje_juego = tetris.cargar_partida(
                    )
                if tecla in teclas["DESCENDER"]:
                    juego, cambiar_ficha = tetris.avanzar(
                        juego, siguiente_ficha)
                    puntaje_juego += 1
                    continue
                if tecla in teclas["SALIR"]:
                    salir = True

        timer_bajar -= 1
        if timer_bajar == 0:
            timer_bajar = ESPERA_DESCENDER
            # Descender la pieza automáticamente

            if cambiar_ficha == True:
                siguiente_ficha = tetris.generar_pieza()
            juego, cambiar_ficha = tetris.avanzar(juego, siguiente_ficha)
            if not tetris.terminado(juego):
                puntaje_juego += 1