Esempio n. 1
0
    def iniciar_juego(self):  ##Inicia el juego
        os.system("clear")
        while (not self.finish
               ):  #Mientras no termina el juego no avanza la ejecucion
            for i in range(len(
                    self.jugadores)):  #Respresenta el turno de cada jugador

                print(
                    f"===== El primero en llegar a la meta gana ({self.config.distancia_pista/1000} km) =====\n"
                )
                self.pista.mostrar(self.jugadores)
                input(
                    f"El turno para el jugador {self.jugadores[i].nombre}, presiona ENTER para tirar el dado"
                )
                print("El resultado del dado es: ", end="")

                avance = self.lanzar_dado()
                self.jugadores[i].avanzar(avance * 1000)
                self.clasificador()

                os.system("clear")

            if len(
                    self.clasificacion
            ) >= self.config.num_jugadores:  #Cuando han llegado todos los jugadores a la meta, crea el podio
                self.podio = Podio(self.clasificacion)
                self.podio.mostrar()
                for jugador in self.jugadores:  #Actualiza los datos de los  jugadores
                    self.datos[f'{jugador.nombre}'][
                        'vencedor'] = jugador.vencedor
                    self.datos[f'{jugador.nombre}'][
                        'puesto_reciente'] = jugador.puesto_reciente
                self.finish = True
Esempio n. 2
0
    def __init__(self, master=None):
        """
        Construir la aplicacion.
        """
        super().__init__(master)

        self.api = DogAPI()
        self.podio = Podio()

        self.podio.cargar()
        self.razas = self.api.obtener_razas()

        self.iniciar_partida()
        self.pantalla_inicial()
Esempio n. 3
0
def calcularPodios(game, pista):
    print("*************************************************")
    print("Bienvenidos, se dará inicio a la carrera!")
    print(
        f"Se ha preparado la pista que tendrá una distancia de {pista.kilometros} kilometros y {pista.nroCarriles} carriles"
    )

    carrilesEnJuego = game.obtenerCarriles()
    podio = Podio()

    while podio.obtenerPrimerLugar() == None or podio.obtenerSegundoLugar(
    ) == None or podio.obtenerTercerLugar() == None:
        for carril in carrilesEnJuego:
            if (podio.jugadorYaPertenecePodio(carril.carro.player) == False):
                metrosObtenidos = carril.carro.player.lanzarDados()
                carril.avanzarDistancia(metrosObtenidos)
                if (carril.desplazamientoFinal):
                    if (podio.obtenerPrimerLugar() == None):
                        podio.asignarPrimerLugar(carril.carro.player)
                    elif (podio.obtenerSegundoLugar() == None):
                        podio.asignarSegundoLugar(carril.carro.player)
                    elif (podio.obtenerTercerLugar() == None):
                        podio.asignarTercerLugar(carril.carro.player)
            else:
                pass

    primerLugar = podio.obtenerPrimerLugar()
    segundoLugar = podio.obtenerSegundoLugar()
    tercerLugar = podio.obtenerTercerLugar()

    database = DataBase()
    database.insertarPodio(game.obtenerNombreJuego(), primerLugar.nombre, 1)
    database.insertarPodio(game.obtenerNombreJuego(), segundoLugar.nombre, 2)
    database.insertarPodio(game.obtenerNombreJuego(), tercerLugar.nombre, 3)

    print("******** Podio **********")
    print(f"El ganador del primer lugar es {primerLugar.nombre}")
    print(f"El ganador del segundo lugar es {segundoLugar.nombre}")
    print(f"El ganador del tercer lugar es {tercerLugar.nombre}")
    iniciarJuego()
Esempio n. 4
0
def main():
    API_TOKEN = '466722132:AAG-i_NBJB25CyLdXUocW_B-gIIl81dQosM'
    bot = telegram.Bot(token=API_TOKEN)
    updater = Updater(token=API_TOKEN)
    dispatcher = updater.dispatcher

    razas = []
    opciones = []

    api = DogAPI()
    podio = Podio()

    # api.actualizar_razas()
    razas = api.obtener_razas()
    podio.cargar()

    logging.basicConfig(
        format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
        level=logging.INFO)

    def start(bot, update):
        bot.send_message(chat_id=update.message.chat_id,
                         text="Hola! Soy Jagua Maravichu Bot")

    def jugar(bot, update):
        imagen = api.obtener_imagen()
        bot.send_photo(chat_id=update.message.chat_id, photo=imagen['url'])
        bot.send_message(chat_id=update.message.chat_id, text="¿Qué raza es?")
        opciones = random.choices(razas, k=2)
        opciones.append(imagen['raza'])
        random.shuffle(opciones)

        teclado = []
        for opcion in opciones:
            correcto = 'N'
            if opcion == imagen['raza']:
                correcto = 'S'

            teclado.append([
                telegram.InlineKeyboardButton(text=opcion.replace('-',
                                                                  ' ').title(),
                                              callback_data=correcto)
            ])

        reply_markup = telegram.InlineKeyboardMarkup(teclado)
        bot.send_message(chat_id=update.message.chat_id,
                         text="Elegí tu respuesta",
                         reply_markup=reply_markup)

        telegram.ReplyKeyboardRemove()

    def respuesta(bot, update):
        mensaje = emoji.emojize(
            'Incorrecto. Tenés que tomar un curso sobre razas caninas :thumbsdown:',
            use_aliases=True)
        if update.callback_query.data == 'S':
            mensaje = emoji.emojize(
                'Correcto!! :tada: :tada: Sabés mucho sobre razas caninas :clap: :clap:',
                use_aliases=True)

        bot.answer_callback_query(update.callback_query.id, text=mensaje)
        bot.send_message(chat_id=update.callback_query.message.chat_id,
                         text=mensaje)

    def unknown(bot, update):
        bot.send_message(chat_id=update.message.chat_id,
                         text="Disculpame, no entiendo ese comando")

    start_handler = CommandHandler('start', start)
    jugar_handler = CommandHandler('jugar', jugar)
    respuesta_handler = CallbackQueryHandler(respuesta)
    unknown_handler = MessageHandler(Filters.command, unknown)

    dispatcher.add_handler(start_handler)
    dispatcher.add_handler(jugar_handler)
    dispatcher.add_handler(respuesta_handler)
    dispatcher.add_handler(unknown_handler)

    updater.start_polling()
                        if posiciones[d] >= meta:
                            lugares_podio.append(ljugadores[d])
                            lista_borrar_pos.append(d)
                        lista_borrar_nombres = []
                        lista_borrar_valor = []

                    for e in lista_borrar_pos:
                        lista_borrar_nombres.append(ljugadores[e])
                        lista_borrar_valor.append(posiciones[e])

                    for g in lista_borrar_nombres:
                        ljugadores.remove(g)

                    for o in lista_borrar_valor:
                        posiciones.remove(o)

            if len(ljugadores) == 0:
                r = 0
        podio = Podio(lugares_podio)
        podio.lugares()
    elif decision == 2:
        menu2 = """ Bienvenido al apartado de puntajes. En este lugar podrás ver el número de veces que has quedado en el podio.
        """
        #--------------------- Guardar Datos ---------------------#
        guardar = Leer()
        persona = input(
            "Por favor ingresa el nombre de la persona que deseas buscar: "
        ).capitalize()
        guardar.leerResultados(persona)
    else:
        print("* * * E R R O R * * * Por favor ingresa una opción válida.")
Esempio n. 6
0
class Aplicacion(tk.Frame):
    """
    Manejar la aplicacion y sus pantallas.
    """
    def __init__(self, master=None):
        """
        Construir la aplicacion.
        """
        super().__init__(master)

        self.api = DogAPI()
        self.podio = Podio()

        self.podio.cargar()
        self.razas = self.api.obtener_razas()

        self.iniciar_partida()
        self.pantalla_inicial()

    def iniciar_partida(self):
        """
        Iniciar valores para una partida nueva.
        """
        self.nombre = ''
        self.intentos = 0
        self.correctas = 0
        self.incorrectas = 0

    def limpiar_pantalla(self):
        """
        Limpiar la pantalla de la aplicacion.
        """
        for widget in self.master.winfo_children():
            widget.destroy()

    def pantalla_inicial(self):
        """
        Cargar la pantalla inicial.
        """
        self.limpiar_pantalla()

        logo = Image.open('logo.jpg', 'r')
        logo_tk = ImageTk.PhotoImage(logo)

        etiqueta1 = tk.Label(self.master, image=logo_tk)
        etiqueta1.image = logo_tk
        etiqueta1.pack()

        tk.Label(self.master, text='¡Bienvenido/a a Jagua Maravichu!').pack()
        tk.Label(
            self.master,
            text=
            'Jagua Maravichu es un juego sencillo que prueba tu conocimiento sobre razas caninas.'
        ).pack()
        tk.Button(self.master, text='Jugar',
                  command=self.pantalla_nombre).pack()

    def pantalla_nombre(self):
        """
        Cargar la pantalla de ingreso de nombre.
        """
        self.limpiar_pantalla()

        tk.Label(self.master, text='¿Cuál es tu nombre?').pack()

        nombre = tk.StringVar(self.master, value='Escribí tu nombre acá')

        entrada = tk.Entry(self.master, textvariable=nombre)
        entrada.pack()

        def confirmar():
            self.nombre = nombre.get()
            self.pantalla_intentos()

        tk.Button(self.master, text='Confirmar', command=confirmar).pack()

        entrada.focus_set()
        entrada.selection_adjust(tk.END)
        entrada.bind("<Return>", (lambda event: confirmar()))

    def pantalla_intentos(self):
        """
        Cargar la pantalla de ingreso de intentos.
        """
        self.limpiar_pantalla()

        tk.Label(self.master, text='¡Hola ' + self.nombre + '!').pack()
        tk.Label(self.master, text='¿Cuántas adivinanzas querés hacer?').pack()

        intentos = tk.IntVar(self.master, value=0)

        entrada = tk.Entry(self.master, textvariable=intentos)
        entrada.pack()

        def confirmar():
            self.intentos = intentos.get()
            if self.intentos >= 1:
                self.pantalla_adivinanza(1)
            else:
                self.pantalla_inicial()

        tk.Button(self.master, text='Confirmar', command=confirmar).pack()

        entrada.focus_set()
        entrada.selection_adjust(tk.END)
        entrada.bind("<Return>", (lambda event: confirmar()))

    def pantalla_adivinanza(self, intento):
        """
        Cargar la pantalla de la adivinanza.
        """
        self.limpiar_pantalla()

        if not self.api.hay_conexion():
            tk.Label(self.master, text='No hay conexión a Internet </3').pack()
            tk.Button(self.master,
                      text='Intentar de nuevo',
                      command=self.pantalla_inicial).pack()
            return

        tk.Label(self.master, text='Pregunta No. ' + str(intento)).pack()
        tk.Label(self.master, text='¿Qué raza es?').pack()

        raza = self.api.obtener_imagen()

        raza_raw = urllib.request.urlopen(raza['url']).read()

        imagen = Image.open(io.BytesIO(raza_raw))
        imagen_tk = ImageTk.PhotoImage(imagen)

        etiqueta1 = tk.Label(self.master, image=imagen_tk)
        etiqueta1.image = imagen_tk
        etiqueta1.pack()

        # tk.Label(self.master, text=raza['url']).pack()

        opciones = random.choices(self.razas, k=2)
        while raza['raza'] in opciones:
            opciones = random.choices(self.razas, k=2)

        opciones.append(raza['raza'])
        random.shuffle(opciones)

        respuesta = tk.IntVar(self.master, value=99)

        etiqueta2 = tk.Label(self.master, text='')

        grupo = tk.LabelFrame(self.master,
                              text='Elegí tu respuesta',
                              padx=10,
                              pady=10)
        grupo.pack()

        def continuar():
            if intento < self.intentos:
                self.pantalla_adivinanza(intento + 1)
            else:
                self.pantalla_puntuaciones()

        def responder():
            if respuesta.get() == opciones.index(raza['raza']):
                etiqueta2['text'] = '¡Correcto!\n' + \
                    'Sabés mucho sobre razas caninas :D'
                self.correctas = self.correctas + 1
            else:
                etiqueta2['text'] = 'Incorrecto.\n' + \
                    'Tenés que tomar un curso sobre razas caninas :(\n' + \
                    'La respuesta correcta era ' + \
                    raza['raza'].replace('-', ' ').title() + '.'
                self.incorrectas = self.incorrectas + 1

            grupo.destroy()
            etiqueta2.pack()
            tk.Button(self.master, text='Continuar', command=continuar).pack()

            opciones.clear()

        for indice, opcion in enumerate(opciones):
            tk.Radiobutton(grupo,
                           text=opcion.replace('-', ' ').title(),
                           value=indice,
                           variable=respuesta,
                           command=responder,
                           indicatoron=0,
                           width=40).pack(anchor='center')

    def pantalla_puntuaciones(self):
        """
        Cargar la pantalla de puntuaciones.
        """
        self.limpiar_pantalla()

        if self.intentos > 0:
            puntos = round(((self.correctas / self.intentos) * 100), 2)

        tk.Label(self.master,
                 text=self.nombre + ', tu puntaje final es: ' +
                 str(puntos)).pack()

        self.podio.ingresar_puntaje(self.nombre, puntos)

        tk.Label(self.master, text=' Puntuaciones '.center(50, '=')).pack()
        tk.Label(self.master, text=self.podio.to_string()).pack()

        tk.Button(self.master,
                  text='Jugar de nuevo',
                  command=self.pantalla_inicial).pack()

        self.podio.actualizar()
        self.iniciar_partida()
Esempio n. 7
0
class Juego:
    def __init__(self, config, datos):
        self.config = config
        self.jugadores = [
        ]  #En jugadores se guardan los objetos de la cantidad de personas que jugaran
        self.datos = datos
        self.pista = {}
        self.clasificacion = []
        self.finish = 0
        self.podio = {}

    def fijar_jugadores(
        self
    ):  #Se crean los objetos de los jugadores que van a jugar esta partida
        for i in range(int(self.config.num_jugadores)):
            self.jugadores.append(
                self.consultar_jugadores(
                    input(f"\n Ingrese el nombre del jugador {i+1}: ")))

    def consultar_jugadores(
            self, nombre):  #Se consulta si el jugador esta en la base de datos
        if f'{nombre}' in self.datos:  #Si el jugador esta en la base de datos, se crea un nuevo objeto jugador con los datos existentes
            jugador = Jugador(self.datos[f'{nombre}']['nombre'],
                              self.datos[f'{nombre}']['vencedor'],
                              self.datos[f'{nombre}']['puesto_reciente'])
            return jugador
        else:
            return self.nuevo_jugador(nombre)

    def nuevo_jugador(
        self, nombre
    ):  #Si el jugador no esta en la base de datos, se crea un nuevo jugador
        print("\n ... \n Nuevo jugador creado\n...\n")
        jugador = Jugador(nombre)
        self.datos[f'{nombre}'] = {
            'nombre': f'{jugador.nombre}',
            'vencedor': f'{jugador.vencedor}',
            'puesto_reciente': f'{jugador.puesto_reciente}'
        }
        return jugador

    def crear_pista(
        self
    ):  #Crea la pista con su distancia y su cantidad de carriles, asocia a sus carriles con los jugadores
        self.pista = Pista(self.config)
        carriles = self.pista.construir_carriles()
        for i in range(self.pista.num_carriles):
            self.jugadores[i].ubicar_carril(carriles[i])

    def iniciar_juego(self):  ##Inicia el juego
        os.system("clear")
        while (not self.finish
               ):  #Mientras no termina el juego no avanza la ejecucion
            for i in range(len(
                    self.jugadores)):  #Respresenta el turno de cada jugador

                print(
                    f"===== El primero en llegar a la meta gana ({self.config.distancia_pista/1000} km) =====\n"
                )
                self.pista.mostrar(self.jugadores)
                input(
                    f"El turno para el jugador {self.jugadores[i].nombre}, presiona ENTER para tirar el dado"
                )
                print("El resultado del dado es: ", end="")

                avance = self.lanzar_dado()
                self.jugadores[i].avanzar(avance * 1000)
                self.clasificador()

                os.system("clear")

            if len(
                    self.clasificacion
            ) >= self.config.num_jugadores:  #Cuando han llegado todos los jugadores a la meta, crea el podio
                self.podio = Podio(self.clasificacion)
                self.podio.mostrar()
                for jugador in self.jugadores:  #Actualiza los datos de los  jugadores
                    self.datos[f'{jugador.nombre}'][
                        'vencedor'] = jugador.vencedor
                    self.datos[f'{jugador.nombre}'][
                        'puesto_reciente'] = jugador.puesto_reciente
                self.finish = True

    def lanzar_dado(self):
        print("...", end="")
        avance = random.randint(1, 6)
        print(" ", avance, " -> Avanza ", avance * 100, " metros")
        time.sleep(2)
        return avance

    def clasificador(
            self):  #Clasifica los jugadores segun van llegando a la meta
        for jugador in self.jugadores:
            if floor(jugador.dist_recorrida / 1000) >= int(
                    self.pista.distancia / 1000):
                if jugador not in self.clasificacion:
                    self.clasificacion.append(jugador)
        time.sleep(1)
Esempio n. 8
0
def main():

    print('========================================================')
    print('==                        Test                        ==')
    print('========================================================')

    podio = Podio()

    podio.cargar()
    podio.desplegar()
    podio.cargar_puntaje('jtsoya539', 37)
    #podio.cargar_puntaje('catnip', 120)
    #podio.cargar_puntaje('ameza', 100)

    podio._actualizar()

    podio.desplegar()
Esempio n. 9
0
def main():
    """
    Iniciar la aplicacion.
    """

    ancho = 72
    print('=' * ancho)
    print('Jagua Maravichu'.center(ancho))
    print('=' * ancho)
    razas = []
    opciones = []

    api = DogAPI()
    podio = Podio()

    # api.actualizar_razas()
    razas = api.obtener_razas()
    podio.cargar()

    while True:
        jugar = input("¿Querés jugar? (S/N): ")
        if jugar in ('N', 'n'):
            break

        nombre = input('¿Cuál es tu nombre?: ')
        cantidad = int(input('¿Cuántas adivinanzas querés hacer?: '))
        correctas = 0
        incorrectas = 0
        puntos = 0

        for i in range(cantidad):

            if not api.hay_conexion():
                print('No hay conexión a Internet </3')
                break

            print((' Pregunta No. ' + str(i + 1) + ' ').center(ancho, '-'))

            imagen = api.obtener_imagen()
            print(imagen['url'])

            print('¿Qué raza es?')

            opciones = random.choices(razas, k=2)
            opciones.append(imagen['raza'])
            random.shuffle(opciones)

            for indice, opcion in enumerate(opciones):
                print(str(indice) + ') ' + opcion)

            respuesta = int(input("Escribí tu respuesta: "))

            if respuesta == opciones.index(imagen['raza']):
                print('Correcto!! Sabés mucho sobre razas caninas :D')
                correctas = correctas + 1
            else:
                print(
                    'Incorrecto. Tenés que tomar un curso sobre razas caninas D:'
                )
                incorrectas = incorrectas + 1

            opciones.clear()

        if cantidad > 0:
            puntos = round(((correctas / cantidad) * 100), 2)

        print(nombre + ', tu puntaje final es: ' + str(puntos))
        podio.ingresar_puntaje(nombre, puntos)

        print(' Puntuaciones '.center(ancho, '='))
        podio.desplegar()

    podio.actualizar()
    print('Chauuu!! Nos vemos pronto woof woof')