Exemplo n.º 1
0
def dibujar_mano_tapada(n_posicion, jugador, juego):
    """
    Recibida un n_posicion (1, 2, 3) un jugador, y un estado de juego, dibuja la mano tapad aen la posicion indicada
    Posicion 1: arriba, Posicion 2: derecha, Posicion 3: izquierda
    """
    n_cartas = len(juego.jugadores[jugador].mano)

    if n_posicion == 1:
        separacion = ANCHO_CARTA // 2
        x_inicial = (ANCHO_VENTANA - (n_cartas + 1) * (ANCHO_CARTA / 2)) // 2
        y_inicial = 0

        for _ in range(n_cartas):
            gamelib.draw_image(f"img/Back_Red_1_{ORIENTACION[n_posicion]}.gif",
                               x_inicial, y_inicial)
            x_inicial += separacion

    else:
        separacion = ANCHO_CARTA // 3 * 2  #2/3 de separacion
        y_inicial = (ALTO_VENTANA - (n_cartas + 1) *
                     (ANCHO_CARTA / 3) * 2) // 2

        if n_posicion == 2:
            x_inicial = ANCHO_VENTANA - ALTO_CARTA
        if n_posicion == 3:
            x_inicial = 0

        for _ in range(n_cartas):
            gamelib.draw_image(f"img/Back_Red_1_{ORIENTACION[n_posicion]}.gif",
                               x_inicial, y_inicial)
            y_inicial += separacion
Exemplo n.º 2
0
def nivel(grilla, accion=None):
    '''Recibe un nivel en forma de grilla (lista de listas), y dibuja en la ventana
    la representacion de esa grilla.
    '''

    tamanio_x, tamanio_y = soko.dimensiones(grilla)

    for x in range(tamanio_x):
        for y in range(tamanio_y):

            px_x = (x * TAMANIO_CASILLA
                    ) + 2  # Lo desplazo 2 pixeles, porque es lo que ocupan
            px_y = (y * TAMANIO_CASILLA) + 2  # los bordes de la ventana.

            gl.draw_image(IMG_SUELO, px_x, px_y)

            if soko.hay_jugador(grilla, x, y):
                gl.draw_image(IMG_JUGADOR.get(accion, "src/player_s.gif"),
                              px_x, px_y)

            elif soko.hay_caja(grilla, x, y):
                gl.draw_image(IMG_CAJA, px_x, px_y)

            elif soko.hay_pared(grilla, x, y):
                gl.draw_image(IMG_PARED, px_x, px_y)

            if soko.hay_objetivo(grilla, x, y):
                gl.draw_image(IMG_OBJETIVO, px_x, px_y)
Exemplo n.º 3
0
def main():
    # Inicializar el estado del juego
    #siguiente_pieza = tetris.generar_pieza()
    siguiente = tetris.generar_pieza()
    t1= time.time()
    juego = tetris.crear_juego(tetris.generar_pieza())
    ancho, alto = tetris.dimensiones(juego)
    lista_teclas = leer_teclas()  
    gamelib.resize(800, 900)
    timer_bajar = ESPERA_DESCENDER
    while gamelib.loop(fps=30):
        gamelib.draw_begin()
        dibujar_superficie(juego)
        dibujar_pieza(juego)
        dibujar_siguiente(juego, siguiente)
        gamelib.draw_end()  
        for event in gamelib.get_events():
          if not event:
              break
          if event.type == gamelib.EventType.KeyPress:
              tecla = event.key
              if tecla == lista_teclas[1]:
                juego = tetris.mover(juego, -1)
              if tecla == lista_teclas[3]:
                juego = tetris.mover(juego, 1) 
              if tecla == lista_teclas[5]:
                juego = tetris.mover(juego, 2)
              if tecla == lista_teclas[0]:
                return
              if tecla == lista_teclas[6]:
                juego = tetris.rotar(juego)    
              if tecla == lista_teclas[4]:
                guardar_partida(juego)
              if tecla == lista_teclas[2]:
                juego = recuperar_partida()                           
              # Actualizar el juego, según la tecla presionada
        timer_bajar -= 1
        if timer_bajar == 0:  
            timer_bajar = ESPERA_DESCENDER 
            juego, siguiente_pieza = tetris.avanzar(juego, siguiente)
            if siguiente_pieza:
              siguiente = tetris.generar_pieza()
            if tetris.terminado(juego):
              gamelib.draw_image('img/perdiste.gif', 50, 200)
              t2 = time.time()
              tiempo_final = t2- t1
              gamelib.draw_rectangle(0, 0, 595, 60, outline='white', fill='salmon')
              gamelib.draw_text('Tu tiempo fue de {} segundos'.format(tiempo_final), 10, 17, fill='#000', size=18, anchor='nw')
              puntuaciones(tiempo_final)
              break

    while gamelib.is_alive():
      ordenar_puntuaciones()
      event = gamelib.wait(gamelib.EventType.KeyPress)
Exemplo n.º 4
0
def tablero(puntaje_actual):
    '''
    Dibuja el tablero relativo al tamanio de la pantalla y el puntaje en el corner derecho
    '''
    gamelib.draw_image("images/tetris_4.gif", 0, 0)
    gamelib.draw_rectangle( TABLERO_x1 - 5 , TABLERO_y1 - 5,\
                                        TABLERO_x1 + 5 + TAM_PIEZA * tetris.ANCHO_JUEGO, TABLERO_y1 + 5 + TAM_PIEZA * tetris.ALTO_JUEGO, fill = "grey")
    gamelib.draw_rectangle( TABLERO_x1, TABLERO_y1,\
                                        TABLERO_x1 + TAM_PIEZA * tetris.ANCHO_JUEGO, TABLERO_y1 + TAM_PIEZA * tetris.ALTO_JUEGO, fill = "black")
    ## Puntaje!:
    gamelib.draw_text("Puntaje:", TABLERO_x1 - TAM_PIEZA * 2,
                      TABLERO_y1 - TAM_PIEZA)
    gamelib.draw_text(puntaje_actual, TABLERO_x1 - TAM_PIEZA, TABLERO_y1)
Exemplo n.º 5
0
def dibujar_pantalla_de_inicio():
    """
    Esta función se encarga de dibujar la pantalla de inicio del juego.
    """
    gamelib.draw_image('media/logointro.gif', 275, ALTO_INTERFAZ // 25)
    gamelib.draw_image('media/boton.gif',
                       (ANCHO_INTERFAZ // 2) - MARGEN_SUPERIOR,
                       (ALTO_INTERFAZ - ALTO_INTERFAZ // 5))
    gamelib.draw_text('Jugar',
                      ANCHO_INTERFAZ // 2,
                      (ALTO_INTERFAZ // 2 + ALTO_INTERFAZ // 3 + 15),
                      anchor='c',
                      size=30)
Exemplo n.º 6
0
def dibujar_superficie(juego):
  '''Se dibujara la grilla del tetris'''
  gamelib.draw_image('img/fondo6.gif', -80, 10)
  ancho, alto = tetris.dimensiones(juego)
  gamelib.draw_line(600, 250, 900, 250, fill='white', width=3)
  gamelib.draw_text('PRÓXIMA PIEZA:', 630, 10, fill='white', anchor='nw')
  for x in range (0, 600, 66):
    gamelib.draw_line(x, 0, x, 900, fill='white', width=2) 
  for y in range (0, 900, 50):
    gamelib.draw_line(0, y, 595, y, fill='white', width=2)  
  for y in range(alto):
        for x in range(ancho):
            if tetris.hay_superficie(juego, x, y):  
              gamelib.draw_rectangle(x*66, y*50, (x+1)*66, (y+1)*50, outline='white', fill='purple')
Exemplo n.º 7
0
def dibujar(juego):
    alto, ancho = soko.dimensiones(juego)
    pintar_piso(ancho, alto)
    for j in range(len(juego)):
        for i in range(len(juego[j])):
            x = TAMAÑO_IMAGEN*i
            y = TAMAÑO_IMAGEN*j
            if juego[j][i] == "*":
                gamelib.draw_image("img/goal.gif", x, y)
                gamelib.draw_image("img/box.gif", x, y)
            elif juego[j][i] == "+":
                gamelib.draw_image("img/goal.gif", x, y)
                gamelib.draw_image("img/player.gif", x, y)
            else:
                gamelib.draw_image("img/"+IMAGENES[juego[j][i]], x, y)
Exemplo n.º 8
0
def juego_mostrar(grilla):
    '''
    Recibe por parámetro una lista de listas y dibuja en pantalla.
    '''
    for f in range(len(grilla)):
        for c in range(len(grilla[0])):
            y = f * DIM_CELDA
            x = c * DIM_CELDA
            gamelib.draw_image('img/ground.gif', x, y)
            if soko.hay_pared(grilla, c, f):
                gamelib.draw_image('img/wall.gif', x, y)
            if soko.hay_jugador(grilla, c, f):
                gamelib.draw_image('img/player.gif', x, y)
            if soko.hay_caja(grilla, c, f):
                gamelib.draw_image('img/box.gif', x, y)
            if soko.hay_objetivo(grilla, c, f):
                gamelib.draw_image('img/goal.gif', x, y)
Exemplo n.º 9
0
def dibujar_panel_superior(juego):
    """
    Esta función se encarga de dibujar todo lo que se encuentra en la parte superior del tablero del juego.
    """
    # Dibujo logo del juego
    gamelib.draw_image("media/logo.gif", ANCHO_INTERFAZ // 2 - 200, 0)

    # Dibujo boton de teletransportación.
    gamelib.draw_image("media/botonchico.gif", 100, (MARGEN_SUPERIOR / 2) / 2)
    gamelib.draw_text("Teleport", 200, MARGEN_SUPERIOR / 2, size=20)

    # Dibujo nivel
    gamelib.draw_text("Nivel:",
                      ANCHO_INTERFAZ - 250,
                      MARGEN_SUPERIOR / 2,
                      size=20)
    gamelib.draw_text(juego[3],
                      ANCHO_INTERFAZ - 200,
                      MARGEN_SUPERIOR / 2,
                      size=20)
Exemplo n.º 10
0
def mostrar_interfaz(grilla):
    '''Muestra la interfaz a partir de la grilla, en su estado actual, dependiendo de su simbolo se mostrara en la interfaz
    el gif correspondiente'''
    columnas, filas = soko.dimensiones(grilla)
    for fila in range(filas):
        for columna in range(columnas):
            gamelib.draw_image('img/ground.gif', columna * PIXELES_GIF,
                               fila * PIXELES_GIF)
            if soko.hay_caja(grilla, columna, fila):
                gamelib.draw_image('img/box.gif', columna * PIXELES_GIF,
                                   fila * PIXELES_GIF)
            if soko.hay_objetivo(grilla, columna, fila):
                gamelib.draw_image('img/goal.gif', columna * PIXELES_GIF,
                                   fila * PIXELES_GIF)
            if soko.hay_jugador(grilla, columna, fila):
                gamelib.draw_image('img/player.gif', columna * PIXELES_GIF,
                                   fila * PIXELES_GIF)
            if soko.hay_pared(grilla, columna, fila):
                gamelib.draw_image('img/wall.gif', columna * PIXELES_GIF,
                                   fila * PIXELES_GIF)
Exemplo n.º 11
0
def dibujar_juego(juego):
    """
    Esta función se encarga de dibujar la grilla del juego, los escombros que hay en la grilla
    """
    gamelib.draw_rectangle(0, 0, ANCHO_INTERFAZ, ALTO_INTERFAZ, fill='black')

    # Dibujo panel superior
    dibujar_panel_superior(juego)

    # Dibujo grilla
    dibujar_grilla()

    # Dibujo robots.
    robots = juego[1]
    for robot in robots:
        x_celda, y_celda = robot[0], robot[1]
        gamelib.draw_image("media/robot.gif", ANCHO_Y_ALTO_CELDA * x_celda,
                           MARGEN_SUPERIOR + ANCHO_Y_ALTO_CELDA * y_celda)

    # Dibujo escombros
    escombros = buscar_n_en_tablero(3, juego[2])
    for i in range(len(escombros)):
        x_celda, y_celda = escombros[i][0], escombros[i][1]
        gamelib.draw_image("media/escombros.gif", ANCHO_Y_ALTO_CELDA * x_celda,
                           MARGEN_SUPERIOR + ANCHO_Y_ALTO_CELDA * y_celda)

    # Dibujo jugador
    jugador = juego[0]
    x_celda, y_celda = jugador[0], jugador[1]
    gamelib.draw_image("media/astronauta.gif",
                       1 + ANCHO_Y_ALTO_CELDA * x_celda,
                       MARGEN_SUPERIOR + ANCHO_Y_ALTO_CELDA * y_celda)
Exemplo n.º 12
0
def dibujar_game_over():
    """
    Esta función dibuja en pantalla un cartel que indica game over en pantalla una vez que ha terminado el juego
    y le pregunta al usuario si quiere volver a jugar.
    """
    gamelib.draw_rectangle(0, 0, ANCHO_INTERFAZ, ALTO_INTERFAZ, fill='black')
    gamelib.draw_text('GAME OVER',
                      ANCHO_INTERFAZ // 2,
                      ALTO_INTERFAZ // 2 - MARGEN_SUPERIOR // 2,
                      size=80,
                      fill='red')
    gamelib.draw_image('media/boton.gif',
                       ANCHO_INTERFAZ // 2 - MARGEN_SUPERIOR,
                       ALTO_INTERFAZ // 2 + 50)
    gamelib.draw_text('Volver',
                      ANCHO_INTERFAZ // 2,
                      ALTO_INTERFAZ // 2 + 80,
                      size=20)
    gamelib.draw_text('a jugar',
                      ANCHO_INTERFAZ // 2,
                      ALTO_INTERFAZ // 2 + 110,
                      size=20)
Exemplo n.º 13
0
def dibujar_pantalla_de_inicio():
    """
    Esta función se encarga de dibujar la pantalla de inicio del juego. A partir de ella, el jugador podrá iniciar una partida.
    """
    gamelib.draw_image('media/logo.gif', ANCHO_INTERFAZ // 2,
                       ALTO_INTERFAZ // 3)
    gamelib.draw_text('Bienvenido', ANCHO_INTERFAZ // 2, 250)

    #Dibujo los botones
    gamelib.draw_image('media/botonazul.gif', 55, 280)
    gamelib.draw_text('Jugar', 115, 310)
    gamelib.draw_image('media/botonrosa.gif', 220, 280)
    gamelib.draw_text('Cargar', 285, 300)
    gamelib.draw_text('partida', 285, 320)
Exemplo n.º 14
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)
Exemplo n.º 15
0
def dibujar_carta(carta, x, y):
    """
    Recibida una Carta y coordenadas en pixeles, dibuja la carta en dicha posicion, no devuelve nada.
    """
    ruta_imagen = sel_img_carta(carta)
    gamelib.draw_image(f"{ruta_imagen}", x, y)
Exemplo n.º 16
0
def dibujar_fondo():
    """
    Dibuja de fondo la imagen img/fondo.gif
    """
    gamelib.draw_image("img/fondo.gif", 0, 0)
Exemplo n.º 17
0
def pintar_piso(ancho, alto):
    for i in range(alto):
        for j in range(ancho):
            gamelib.draw_image("img/ground.gif", i*TAMAÑO_IMAGEN, j*TAMAÑO_IMAGEN)
Exemplo n.º 18
0
def dibujo_juego(grilla):
    '''Esta funcion recibe una grilla y dibuja el juego'''

    x_total, y_total = cargar_tamaño(
        grilla)  #Tupla con el total de de px por pantalla

    x = 0

    y = 0

    casilleros_maximos_horizontales = y_total / PX_CELDA

    for fila in range(len(grilla)):
        for columna in range(int(casilleros_maximos_horizontales) + PX_CELDA):
            if columna < len(grilla[fila]):
                gamelib.draw_image('img/ground.gif', x_total, y_total)
                celda = grilla[fila][columna]
                if soko.hay_pared(grilla, columna, fila):
                    gamelib.draw_image('img/wall.gif', x, y)
                elif soko.hay_jugador(grilla, columna, fila):
                    gamelib.draw_image('img/player.gif', x, y)
                elif celda == " ":
                    gamelib.draw_image('img/ground.gif', x, y)
                elif soko.hay_caja(grilla, columna, fila):
                    gamelib.draw_image('img/box.gif', x, y)
                elif soko.hay_objetivo(grilla, columna, fila):
                    gamelib.draw_image('img/goal.gif', x, y)
            else:
                gamelib.draw_image('img/ground.gif', x, y)
            x = x + PX_CELDA
        x = 0
        y = y + PX_CELDA