示例#1
0
def interruptorPrenderApagar(cambio, tableroEnJuego):
    """la funcion 'enciende' o 'apaga' las lamparas del tablero a partir de la coordenada ingresada por el usuario"""
    if tableroEnJuego[cambio] == leerDAT.leerDAT("variablesDeInicio",
                                                 "caracterDeLamparaEncendida"):
        tableroEnJuego[cambio] = leerDAT.leerDAT("variablesDeInicio",
                                                 "caracterDeLamparaApagada")
    else:
        tableroEnJuego[cambio] = leerDAT.leerDAT("variablesDeInicio",
                                                 "caracterDeLamparaEncendida")
def generarLamparaAleatoria():
    """la funcion devuelve las lamparas que se utilizaran en el tablero del modo aleatorio, apagadas o encendidas aleatoriamente"""
    lampara = randint(1, 2)
    if lampara == 1:
        lampara = leerDAT.leerDAT("variablesDeInicio",
                                  "caracterDeLamparaEncendida")
    else:
        lampara = leerDAT.leerDAT("variablesDeInicio",
                                  "caracterDeLamparaApagada")
    return lampara
def opcionDelUsuarioCoordenadas(puntosDeNivel):
    """recibe y valida el input del usuario"""
    global modo, opcionInicialAleatoria
    if modo == "predeterminado":
        letrasValidas = leerDAT.leerDAT(
            "modoPredeterminado", "ingresosValidos"
        ).split(
            ","
        )  #letrasValidas = coordenadasDeValidacion(int(leerDAT.leerDAT("modoPredeterminado", "dimensionDeTablero")))
    else:
        letrasValidas = coordenadasAleatoriasValidas()
    while True:
        opcion = (input(
            "Elegir una celda del tablero usando LETRAS para las filas y NUMEROS para las columnas (ej: A3). O 'RE' para reiniciar o 'SA' para salir: "
        )).lower()
        if opcion in letrasValidas:
            if opcion == "re":
                resultadosYEstados.reiniciarNivel(puntosDeNivel)
            elif opcion == "sa":
                logger.guardar("El usuario arrugo", "")
                resultadosYEstados.abandonarJuego()
            else:
                return opcion
        else:
            logger.guardar("El usuario mando fruta: ", opcion)
            print("Entrada invalida. Reintentar")
def desarrolloDelJuego(nivelEnJuego):
    global turnos, tableros
    os.system("cls")
    ContadorDeTurnos = int(leerDAT.leerDAT("variablesDeInicio", "valorInicialDeContadorDeTurnos"))
    puntosDeNivel = int(leerDAT.leerDAT("puntaje", "puntajeInicial"))
    tableroEnJuego = tableros[nivelEnJuego]
    for i in range(int(turnos)):
        dinamicaDelJuego.impresionDelTableroDeJuego.imprimirEncabezadoDelTablero(nivelEnJuego)
        dinamicaDelJuego.impresionDelTableroDeJuego.imprimirTurnoEnJuegoYTurnosRestantes(ContadorDeTurnos, turnos)
        dinamicaDelJuego.impresionDelTableroDeJuego.imprimirTableroDeJuego(dimensionFilaDeTablero, tableroEnJuego)
        dinamicaDelJuego.cambiosEnTableroPorInputDeUsuario.efectoDelInputDelUsuario(opcionesDelUsuario.opcionDelUsuarioCoordenadas(puntosDeNivel), tableroEnJuego)
        puntosDeNivel = (int(lucesPrendidas(tableroEnJuego)) * valorDelamparaEncendida)
        if i == (int(turnos) - int(leerDAT.leerDAT("variablesDeInicio", "factorDeCompensacionContadorDeTurnos"))):
            dinamicaDelJuego.resultadosYEstados.perdedorSinMovimientos()
        if puntosDeNivel == 0:
            dinamicaDelJuego.resultadosYEstados.ganadorTodoApagado()
        ContadorDeTurnos += int(leerDAT.leerDAT("variablesDeInicio", "valorDeIncrementoDeTurnos"))
        os.system("cls")
    nivelEnJuego += int(leerDAT.leerDAT("variablesDeInicio", "valorDeIncrementoDeNiveles"))
def tablerosModoAleatorio(dimensionFilaDeTablero):
    """la funcion crea lista de cinco diccionarios, cada uno de los cuales es uno de los niveles del modo aleatorio, a partir de la dimension ingresada
    por el usuario"""
    tableros = []
    cantidadDeNiveles = int(
        leerDAT.leerDAT("variablesDeInicio", "cantidadDeNiveles"))
    for i in range(cantidadDeNiveles):
        tableros.append(
            asignarLucesACoordenadas(
                generarListaDeCoordenadas(dimensionFilaDeTablero)))
    return tableros
def perdedorSinMovimientos():
    """la funcion avisa al usuario que se quedo sin movimientos, muestra puntaje y nivel adquirido"""
    global puntos, nivelEnJuego
    os.system("cls")
    puntos = int(puntos) + int(
        leerDAT.leerDAT("puntaje", "ganador")
    )  #int(linecache.getline("configuracion.dat", 23)[0:4]) + puntos
    print("Sin movimientos. Perdiste")
    print("Nivel alcanzado:", nivelEnJuego + 1)
    print("Puntaje final: ", puntos)
    print("")
    input("Ingresar 's' para continuar ")
    opcionesDelUsuario.opcionDelUsuarioMenuInicial()
def inicioDelJuego(modo):
    """en donde se definen las variables de inicio..."""
    global turnos, nivelEnJuego, tableros, dimensionFilaDeTablero
    if modo == "predeterminado":
        dimensionFilaDeTablero = int(leerDAT.leerDAT("modoPredeterminado", "dimensionDeTablero"))
        tableros = generacionDeTableros.tablerosModoPredeterminado(dimensionFilaDeTablero)
        turnos = definirCantidadDeTurnos()
        desarrolloDelJuego(nivelEnJuego)
    if modo == "aleatorio":
        dimensionFilaDeTablero = int(opcionesDelUsuario.menuModoAleatorio())
        tableros = generacionDeTableros.tablerosModoAleatorio(dimensionFilaDeTablero)
        turnos = definirCantidadDeTurnos()
        desarrolloDelJuego(nivelEnJuego)
def ganadorTodoApagado():
    """la funcion avisa al usuario que completo el nivel o los cinco del juego, muestra puntaje y nivel adquirido"""
    os.system("cls")
    global puntos, nivelEnJuego, tableroEnJuego
    puntos = int(puntos) + int(leerDAT.leerDAT("puntaje", "ganador"))
    print("Felicitaciones. Completaste el nivel", nivelEnJuego + 1)
    print("Puntaje parcial: 500")
    print("Puntaje total: ", puntos)
    input("Ingresar 's' para continuar ")
    if nivelEnJuego == 4:
        print("Todos los niveles completados")
        input("Ingresar 's' para continuar ")
        opcionesDelUsuario.opcionDelUsuarioMenuInicial()
    nivelEnJuego = int(nivelEnJuego) + 1
    estructuraDelJuego.desarrolloDelJuego(nivelEnJuego)
def lucesPrendidas(tablero):
    return (list(tablero.values())).count(leerDAT.leerDAT("variablesDeInicio", "caracterDeLamparaEncendida"))
def definirCantidadDeTurnos():
    """la funcion define cantidad de turnos a partir de multiplicar dimension de linea de tablero  (que se obtiene de la division
    del total de elementos -lamparas- por su raiz cuadrada- por 3, de acuerdo a la captura de datos (lease 'pdf de Rosita')"""
    factorDeDefinicionDeTurnos = int(leerDAT.leerDAT("variablesDeInicio", "multiplicadorDeTurnos"))
    turnos = dimensionFilaDeTablero * factorDeDefinicionDeTurnos
    return turnos
import os

from datos import leerDAT
from modulosOperativos import dinamicaDelJuego
from modulosOperativos import opcionesDelUsuario
from modulosOperativos.tableros import *

valorDelamparaEncendida = int(leerDAT.leerDAT("puntaje", "lamparaEncendida")) #int(linecache.getline("configuracion.dat", 17)[0:3])
tableros = []
tableroEnJuego = {}
nivelEnJuego = int(leerDAT.leerDAT("variablesDeInicio", "nivelEnJuego"))


def inicioDelJuego(modo):
    """en donde se definen las variables de inicio..."""
    global turnos, nivelEnJuego, tableros, dimensionFilaDeTablero
    if modo == "predeterminado":
        dimensionFilaDeTablero = int(leerDAT.leerDAT("modoPredeterminado", "dimensionDeTablero"))
        tableros = generacionDeTableros.tablerosModoPredeterminado(dimensionFilaDeTablero)
        turnos = definirCantidadDeTurnos()
        desarrolloDelJuego(nivelEnJuego)
    if modo == "aleatorio":
        dimensionFilaDeTablero = int(opcionesDelUsuario.menuModoAleatorio())
        tableros = generacionDeTableros.tablerosModoAleatorio(dimensionFilaDeTablero)
        turnos = definirCantidadDeTurnos()
        desarrolloDelJuego(nivelEnJuego)


def definirCantidadDeTurnos():
    """la funcion define cantidad de turnos a partir de multiplicar dimension de linea de tablero  (que se obtiene de la division
    del total de elementos -lamparas- por su raiz cuadrada- por 3, de acuerdo a la captura de datos (lease 'pdf de Rosita')"""