def mostrar_estado_juego(juego): gamelib.draw_begin gamelib.draw_rectangle(1,1,405,405, fill="black") gamelib.draw_line(401,0, 401, 400) gamelib.draw_text('CONTROLES:', 500, 30, size=10, fill='salmon') gamelib.draw_text('t = teletransportarse', 500, 60, size=8) gamelib.draw_text('a = mover izq', 500, 90, size=8) gamelib.draw_text('s = mover abajo', 500, 120, size=8) gamelib.draw_text('w = mover arriba', 500, 150, size=8) gamelib.draw_text('d = mover der',500, 180, size=8) gamelib.draw_text('e = mover arriba-der', 500, 210, size=8) gamelib.draw_text('q = mover arriba-izq', 500, 240, size=8) gamelib.draw_text('x = mover abajo-der:', 500, 270, size=8) gamelib.draw_text('z = mover abajo-izq:', 500, 300, size=8) gamelib.draw_text('NIVEL ACTUAL:', 500, 330, size=10, fill='salmon') gamelib.draw_text(f'{juego.mostrar_nivel()}', 500, 350, size=9) gamelib.draw_text('Teletransportes restantes: ', 500, 369, size=10, fill='salmon') gamelib.draw_text(f'{juego.teletransportes}', 500, 387, size=9) for fila in range(len(juego.grilla)): for columna in range(len(juego.grilla)): if juego.grilla[fila][columna] == 1: gamelib.draw_text("@", (columna * 20) + 10, (fila * 20) + 10, fill='gold') if juego.grilla[fila][columna] == 2: gamelib.draw_text("+", (columna * 20) + 10, (fila * 20) + 10, fill='red') if juego.grilla[fila][columna] == 3: gamelib.draw_text("*", (columna * 20) + 10, (fila * 20) + 10, fill='blue') gamelib.draw_end
def crear_tablero(): """ Dibuja el tablero del juego """ filas_px = GRILLA_PX // FILAS_CANTIDAD for fila in range(0, GRILLA_PX + 1, filas_px): gamelib.draw_line(fila, 0, fila, GRILLA_PX, fill="white", width=1) gamelib.draw_line(0, fila, GRILLA_PX, fila, fill="white", width=1)
def dibujar_grilla(filas, columnas): punto_inicial = (30, 60) for n in range(filas + 1): gamelib.draw_line(punto_inicial[0], punto_inicial[1] + LADO_CUADRADOS * n, ANCHO_PANTALLA - punto_inicial[0], punto_inicial[1] + LADO_CUADRADOS * n, fill='white', width=1) for n in range(columnas + 1): gamelib.draw_line(punto_inicial[0] + LADO_CUADRADOS * n, punto_inicial[1], punto_inicial[0] + LADO_CUADRADOS * n, ALTO_PANTALLA, fill='white', width=1)
def dibujar_grilla(): # Dibujo los bordes del juego. gamelib.draw_polygon( [0, MARGEN_SUPERIOR, 1350, MARGEN_SUPERIOR, 1350, 1050, 0, 1050], outline='white', fill='white') # Dibujo columnas. for i in range(ANCHO): gamelib.draw_line(0 + i * ANCHO_Y_ALTO_CELDA, MARGEN_SUPERIOR, 0 + i * ANCHO_Y_ALTO_CELDA, 1050, fill='black', width=1) # Dibujo filas. for i in range(ALTO): gamelib.draw_line(0, MARGEN_SUPERIOR + i * ANCHO_Y_ALTO_CELDA, 1350, MARGEN_SUPERIOR + i * ANCHO_Y_ALTO_CELDA, fill='black', width=1)
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')
def main(): # Inicializar el estado del juego gamelib.resize(400, 450) pieza = tetris.generar_pieza() juego = tetris.crear_juego(pieza) pieza_i = tetris.generar_pieza() timer_bajar = ESPERA_DESCENDER while gamelib.loop(fps=10): gamelib.draw_begin() gamelib.draw_text("SIGUIENTE PIEZA: ", 300, 20) gamelib.draw_text("PUNTAJE:", 275, 300) #lineas verticales for i in range(1, 10): gamelib.draw_line(TAMANOCELDA * i, 0, TAMANOCELDA * i, ALTOTABLERO) #lineas horizontales for i in range(1, tetris.ALTO_JUEGO): gamelib.draw_line(0, TAMANOCELDA * i, ANCHOTABLERO, TAMANOCELDA * i) # Dibujar la pantalla gamelib.draw_end() for event in gamelib.get_events(): if not event: break if event.type == gamelib.EventType.KeyPress: tecla = event.key dicteclas = tetris.pasar_a_diccionario("teclas.txt") a = dicteclas.get(tecla, None) if a == "ROTAR": juego = tetris.rotar(juego) if a == "DESCENDER": juego, _ = tetris.avanzar(juego, pieza_i) if _: pieza_i = tetris.generar_pieza() if a == "IZQUIERDA": juego = tetris.mover(juego, tetris.IZQUIERDA) if a == "DERECHA": juego = tetris.mover(juego, tetris.DERECHA) if a == "GUARDAR": juego = tetris.guardar_partida(juego, "partida.txt") if a == "CARGAR": juego = tetris.cargar_partida("partida.txt") if a == "SALIR": return # Actualizar el juego, según la tecla presionada timer_bajar -= 1 if timer_bajar == 0: juego, _ = tetris.avanzar(juego, pieza_i) if _: pieza_i = tetris.generar_pieza() timer_bajar = ESPERA_DESCENDER # Descender la pieza automáticamente if tetris.terminado(juego): pieza, superficie, puntuacion = juego gamelib.draw_text("PERDISTE", 175, 80, size=40) nombre = gamelib.input("ingrese su nombre") listapuntuaciones = procesarpuntuaciones("puntuaciones.txt") listapuntuaciones.append((nombre, int(puntuacion))) lista = ordenarseleccionpuntuaciones(listapuntuaciones) lista.reverse( ) #la damos vuelta porque esta ordenada de menor a mayor y queremos que el archivo empieze leyendo de mayor a menor if len(lista) > 10: lista = lista[:10] subirpuntuaciones("puntuaciones.txt", lista) break mostrar_juego(juego) dibujar_siguiente(pieza_i)
def draw_line(x1, y1, x2, y2, **options): #Lineas Horizontales gamelib.draw_line(0, 300, 300, 300, fill='blue', width=2) gamelib.draw_line(0, 270, 300, 270, fill='blue', width=2) gamelib.draw_line(0, 240, 300, 240, fill='blue', width=2) gamelib.draw_line(0, 210, 300, 210, fill='blue', width=2) gamelib.draw_line(0, 180, 300, 180, fill='blue', width=2) gamelib.draw_line(0, 150, 300, 150, fill='blue', width=2) gamelib.draw_line(0, 120, 300, 120, fill='blue', width=2) gamelib.draw_line(0, 90, 300, 90, fill='blue', width=2) gamelib.draw_line(0, 60, 300, 60, fill='blue', width=2) gamelib.draw_line(0, 30, 300, 30, fill='blue', width=2) gamelib.draw_line(0, 0, 300, 0, fill='blue', width=2) #Lineas verticales gamelib.draw_line(300, 0, 300, 300, fill='red', width=2) gamelib.draw_line(270, 0, 270, 300, fill='red', width=2) gamelib.draw_line(240, 0, 240, 300, fill='red', width=2) gamelib.draw_line(210, 0, 210, 300, fill='red', width=2) gamelib.draw_line(180, 0, 180, 300, fill='red', width=2) gamelib.draw_line(150, 0, 150, 300, fill='red', width=2) gamelib.draw_line(120, 0, 120, 300, fill='red', width=2) gamelib.draw_line(90, 0, 90, 300, fill='red', width=2) gamelib.draw_line(60, 0, 60, 300, fill='red', width=2) gamelib.draw_line(30, 0, 30, 300, fill='red', width=2) gamelib.draw_line(0, 0, 0, 300, fill='red', width=2)
def dibujar_tablero(): '''La funcion dibuja las lineas''' for x in range(0, ANCHO, PIXEL): gamelib.draw_line(x, ALTO[0], x, ALTO[1]) for y in range(ALTO[0], ALTO[1], PIXEL): gamelib.draw_line(0, y, ANCHO, y)