Ejemplo n.º 1
0
def iniciar(ancho=640, alto=480, titulo='Pilas', usar_motor='qtgl', 
            rendimiento=60, modo='detectar', economico=True, 
            gravedad=(0, -90), pantalla_completa=False):
    """
    Inicia la ventana principal del juego con algunos detalles de funcionamiento.

    Ejemplo de invocación:

        >>> pilas.iniciar(ancho=320, alto=240)

    .. image:: images/iniciar_320_240.png

    Parámetros:

    :ancho: el tamaño en pixels para la ventana.
    :alto: el tamaño en pixels para la ventana.
    :titulo: el titulo a mostrar en la ventana.
    :usar_motor: el motor multimedia a utilizar, puede ser 'qt' o 'qtgl'.
    :rendimiento: cantidad de cuadros por segundo a mostrar.
    :modo: si se utiliza modo interactivo o no.
    :economico: si tiene que evitar consumir muchos recursos de procesador
    :gravedad: el vector de aceleracion para la simulacion de fisica.
    :pantalla_completa: si debe usar pantalla completa o no.

    """
    
    global mundo

    motor = __crear_motor(usar_motor)
    mundo = Mundo(motor, ancho, alto, titulo, rendimiento, economico, gravedad, pantalla_completa)
    escenas.Normal(colores.grisclaro)
Ejemplo n.º 2
0
def iniciar(ancho=640,
            alto=480,
            titulo='Pilas',
            usar_motor='qtgl',
            rendimiento=60,
            modo=None,
            area_fisica=None,
            gravedad=(0, -90),
            pantalla_completa=False,
            permitir_depuracion=True,
            audio=None,
            centrado=True):
    """
    Inicia la ventana principal del juego con algunos detalles de funcionamiento.

    Ejemplo de invocación:

        >>> pilas.iniciar(ancho=320, alto=240)

    .. image:: images/iniciar_320_240.png

    Parámetros:

    :ancho: el tamaño en pixels para la ventana.
    :alto: el tamaño en pixels para la ventana.
    :titulo: el titulo a mostrar en la ventana.
    :usar_motor: el motor multimedia a utilizar, puede ser 'qt', 'qtgl', 'qtsugar' o 'qtsugargl'.
    :rendimiento: cantidad de cuadros por segundo a mostrar.
    :modo: si se utiliza modo interactivo o no.
    :area_fisica: recibe una tupla con el ancho y el alto que tendra el mundo de fisica, por defecto sera el tamaño de la ventana
    :gravedad: el vector de aceleracion para la simulacion de fisica.
    :pantalla_completa: si debe usar pantalla completa o no.
    :permitir_depuracion: si se desea tener habilidatas las funciones de depuracion de las teclas F5 a F12
    :audio: selecciona el motor de sonido a utilizar, los valores permitidos son 'deshabilitado', 'pygame', 'phonon' o 'gst'.
    :centrado: Indica si se desea centrar la ventana de pilas.
    """

    global mundo

    if not esta_inicializada():
        configuracion = obtener_configuracion()

        if not usar_motor:
            usar_motor = configuracion['usar_motor']

        if not audio:
            audio = configuracion['audio']

        motor = _crear_motor(usar_motor, permitir_depuracion, audio)

        if motor:
            mundo = Mundo(motor, ancho, alto, titulo, rendimiento, area_fisica,
                          gravedad, pantalla_completa, centrado)
            mundo.gestor_escenas.cambiar_escena(Normal())

            if _usa_interprete_lanas():
                mundo.motor.ventana.show()
    else:
        mundo.motor.modificar_ventana(ancho, alto, titulo, pantalla_completa)
        escena_actual().fisica.definir_gravedad(*gravedad)
Ejemplo n.º 3
0
 def iniciar(self):
     PStatClient.connect()
     #
     loadPrcFileData('', 'gl-coordinate-system default'
                     )  # ? indicado para usar trans_world_to_clip_of_light
     #loadPrcFileData('', 'sync-video 0')
     #loadPrcFileData('', 'notify-level debug')
     loadPrcFileData('', 'gl-debug #t')
     #loadPrcFileData('', 'threading-model Cull/Draw')
     #
     self.disableMouse()
     self.setFrameRateMeter(True)
     #
     self.win.setCloseRequestEvent("cerrar_aplicacion")
     #
     config.iniciar()
     self.mundo = Mundo(self)
     self.mundo.iniciar()
     #
     self.accept("cerrar_aplicacion", self.cerrar_aplicacion)
     self.run()
Ejemplo n.º 4
0
class Aplicacion(ShowBase):
    def __init__(self):
        ShowBase.__init__(self)
        # componentes:
        self.mundo = None

    def iniciar(self):
        PStatClient.connect()
        #
        loadPrcFileData('', 'gl-coordinate-system default'
                        )  # ? indicado para usar trans_world_to_clip_of_light
        #loadPrcFileData('', 'sync-video 0')
        #loadPrcFileData('', 'notify-level debug')
        loadPrcFileData('', 'gl-debug #t')
        #loadPrcFileData('', 'threading-model Cull/Draw')
        #
        self.disableMouse()
        self.setFrameRateMeter(True)
        #
        self.win.setCloseRequestEvent("cerrar_aplicacion")
        #
        config.iniciar()
        self.mundo = Mundo(self)
        self.mundo.iniciar()
        #
        self.accept("cerrar_aplicacion", self.cerrar_aplicacion)
        self.run()

    def step(self):
        self.taskMgr.step()
        self.taskMgr.step()

    def cerrar_aplicacion(self):
        log.info("cerrar_aplicacion")
        config.escribir_archivo()
        self.mundo.terminar()
        self.finalizeExit()
Ejemplo n.º 5
0
def iniciar(ancho=640, alto=480, titulo='Pilas', usar_motor='qtgl',
            rendimiento=60, modo='detectar', gravedad=(0, -90), pantalla_completa=False,
            permitir_depuracion=True, audio='phonon'):
    """
    Inicia la ventana principal del juego con algunos detalles de funcionamiento.

    Ejemplo de invocación:

        >>> pilas.iniciar(ancho=320, alto=240)

    .. image:: images/iniciar_320_240.png

    Parámetros:

    :ancho: el tamaño en pixels para la ventana.
    :alto: el tamaño en pixels para la ventana.
    :titulo: el titulo a mostrar en la ventana.
    :usar_motor: el motor multimedia a utilizar, puede ser 'qt', 'qtgl', 'qtsugar' o 'qtsugargl'.
    :rendimiento: cantidad de cuadros por segundo a mostrar.
    :modo: si se utiliza modo interactivo o no.
    :gravedad: el vector de aceleracion para la simulacion de fisica.
    :pantalla_completa: si debe usar pantalla completa o no.
    :permitir_depuracion: si se desea tener habilidatas las funciones de depuracion de las teclas F5 a F12

    """

    global mundo

    if not esta_inicializada():
        motor = _crear_motor(usar_motor, permitir_depuracion, audio)

        if motor:
            mundo = Mundo(motor, ancho, alto, titulo, rendimiento, gravedad, pantalla_completa)
            mundo.gestor_escenas.cambiar_escena(Normal())

            if _usa_interprete_lanas():
                mundo.motor.ventana.show()
    else:
        mundo.motor.modificar_ventana(ancho, alto, titulo, pantalla_completa)
        mundo.fisica.definir_gravedad(*gravedad)
Ejemplo n.º 6
0
 def __init__(self):
     self.dia_actual = 0
     self.salir = False
     self.mundo = Mundo()
Ejemplo n.º 7
0
class Juego:
    def __init__(self):
        self.dia_actual = 0
        self.salir = False
        self.mundo = Mundo()

    def comenzar(self):
        '''
        Si hay una partida guardada pregunta al usuario si abirla o crear una nueva.
        Si no hay una partida guardada le avisa al usuario y comienza una nueva partida.
        '''
        if path.isfile('partida_guardada.csv'):
            lista1 = ListaLigada(
                'Comenzar Nueva Partida',
                'Comenzar Partida Guardada')
            lista2 = ListaLigada(self.partida_nueva, self.partida_guardada)
            Menu(lista1, lista2).menu()
        else:
            print('No hay partidas guardadas. \nSe ha iniciado una nueva partida.\n')
            self.partida_nueva()

    def cargar_conexiones(self):
        '''
        Carga las conexiones terrestres y aereas
        '''
        self.mundo.establecer_conecciones_terrestres()
        self.mundo.establecer_conexiones_aereas()

    def partida_nueva(self):
        '''
        LLama a la funcion que genera las conexiones aereas.
        Llama al metodo que carga los datos de las conexiones en los grafos correspondientes
        Lee el archivo 'population.csv' y crea objetos de la clase Pais con cada linea del archivo.
        '''
        generate_connections()
        self.cargar_conexiones()
        self.mundo.lista_paises = ListaLigada()
        for datos_pais in importar_datos('population.csv'):
            if datos_pais[0] == 'Pais':
                pass
            else:
                nuevo_pais = Pais(*datos_pais)
                self.mundo.lista_paises.append(nuevo_pais)

    def partida_guardada(self):
        '''
        Como es una partida ya creada no llama al generador de conexiones aereas.
        Llama al metodo que carga los datos de las conexiones en los grafos correspondientes
        Lee el archivo 'partida_guardada.csv' y crea objetos de la clase Pais con cada linea del archivo.
        '''
        self.cargar_conexiones()
        self.mundo.lista_paises = ListaLigada()
        for datos_pais in importar_datos('partida_guardada.csv'):
            if datos_pais[0] == 'Pais':
                pass
            else:
                nuevo_pais = Pais(*datos_pais)
                self.mundo.lista_paises.append(nuevo_pais)

    def desplegar_menu_principal(self):
        '''Despliega las opciones diarias que tiene un jugador'''
        lista1 = ListaLigada(
            'Pasar el Dia',
            'Estadisticas',
            'Guardar Estado',
            'Salir')
        lista2 = ListaLigada(
            self.pasar_dia,
            self.desplegar_menu_estadisticas,
            self.guardar_estado,
            self.terminar)
        Menu(lista1, lista2).menu()

    def desplegar_menu_estadisticas(self):
        '''Despliega las opciones que tiene el jugador cuando desea ver las estadisticas'''
        lista1 = ListaLigada(
            'Resumen del Dia',
            'Por Pais',
            'Global',
            'Muertes e Infecciones por Dia',
            'Promedio Muertes e Infecciones')
        m = self.mundo
        lista2 = ListaLigada(
            m.mostrar_resumen_diario(),
            m.mostrar_estad_por_pais(),
            m.estad_global(),
            m.muertes_infecciones_dias(),
            m.prom_muertes_infecciones())
        Menu(lista1, lista2).menu()

    def pasar_dia(self):
        '''Avanza un dia en la linea temporal del programa'''
        self.dia_actual += 1

    def guardar_estado(self):
        #nombre, poblacion, infectados, muertos, fecha_infeccion, aeropuerto, frontera, mascarillas, fecha_cura, estado
        pass

    def terminar(self):
        '''Retorna True'''
        self.salir = True
Ejemplo n.º 8
0
Archivo: main.py Proyecto: gsiriani/MAA
from mundo import Mundo
from casilla import Casilla
from aprendizajeQ import AprendizajeQ

# CREO EL MUNDO DEL PROBLEMA
# --------------------------

print 'Construyendo mundo'
# Mundo por defecto de tamano 6*6
sizeMundo = 6
mundo = Mundo(sizeMundo)
# Transiciones con valores especiales
mundo.setCasilla(1, 1, Casilla(izquierda=0, derecha=-20, arriba=0, abajo=0))
mundo.setCasilla(1, 2, Casilla(izquierda=0, derecha=0, arriba=0, abajo=80))
mundo.setCasilla(1, 3, Casilla(izquierda=0, derecha=0, arriba=0, abajo=80))
mundo.setCasilla(1, 4, Casilla(izquierda=-20, derecha=0, arriba=0, abajo=0))
mundo.setCasilla(4, 2, Casilla(izquierda=0, derecha=0, arriba=20, abajo=0))
mundo.setCasilla(4, 3, Casilla(izquierda=0, derecha=0, arriba=20, abajo=0))
# Las casillas del Goal no tienen transiciones hacia afuera
mundo.setCasilla(2, 2, Casilla())
mundo.setCasilla(2, 3, Casilla())
mundo.setCasilla(3, 2, Casilla())
mundo.setCasilla(3, 3, Casilla())

print 'Comienza entrenamiento'

# ENTRENO PARA GAMMA = 0.8
# ------------------------
print '\nDescuento = 0.8\n--------------'

# Inicializo el algoritmo