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 __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 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()
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.")
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()
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)
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()
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')