def cambia_fichasAI(window, jugador): azar=[0,1,2,3,4,5,6] print(jugador.atril_array()) letras_a_cambiar=[] for i in range(3): num=random.choice(azar) azar.remove(num) print(num) letras_a_cambiar.append(jugador.atril_array()[num]) jugador.cambiar_fichas(letras_a_cambiar) fun.completo_atril(window, jugador)
def turno(window, jugador, tiempo_partida, tiempo_ronda, board, diccTablero, cant_rondas, jugadores, nivel, ultima_palabra, bag, carga, cant_cambios, tp_inicial, tr_inicial): ''' Función que desarrolla cada turno, tanto los de la Pc como los del usuario. ''' atril = [] fila = True columna = True cant_cambios = cant_cambios fun.completo_atril(window, jugador) sg.popup('Comienza el jugador: ', jugador.get_name(), title='Primer turno', background_color='#E5CEAC', text_color='#8B4513', button_color=('white', '#8B4513')) if carga: temp = fun.cargo(jugadores, window.FindElement('_puntajeUser_'), window.FindElement('_puntajePC_'), window.FindElement('_ultimaPalabra_'), ultima_palabra, window.FindElement('__n__'), nivel, tiempo_partida, tiempo_ronda, tp_inicial, tr_inicial, window.FindElement('__tp__'), window.FindElement('__tr__')) ficha_central = diccTablero[( 7, 7)] if nivel == 'Facil' else diccTablero[( 8, 8)] if nivel == 'Medio' else diccTablero[(9, 9)] tiempo_ronda = temp[0] tiempo_partida = temp[1] tronda_inicial = (int(tp_inicial) * 100) else: ficha_central = board.ficha_centro centro = board.get_medio() diccTablero[(centro[0], centro[1])] = ficha_central ultima_palabra = [''] tiempo_partida = (int(tiempo_partida) * 60) * 100 #359999 una hora tiempo_ronda = (int(tiempo_ronda) * 100) #5999 un minuto tronda_inicial = tiempo_ronda while True and tiempo_partida != 0: window['__tiempoTurno__'].update('{:02d}:{:02d}'.format( ((tiempo_ronda // 100) % 60), tiempo_ronda % 100)) window['__tiempoPartida__'].update('{:02d}:{:02d}'.format( (tiempo_partida // 100) // 60, (tiempo_partida // 100) % 60)) tiempo_partida -= 1 tiempo_ronda -= 1 window.FindElement('__nombreAtril__').update(jugador.get_name()) dicc = jugador.get_dicc() lista_coordenadas = board.lista_coordenadas() #-----TURNO PC----- if jugador.get_name() == 'PC': ai.juega_PC(dicc, diccTablero, ficha_central, jugador, board, window, jugadores, cant_rondas, window.FindElement('_puntajeUser_'), window.FindElement('_puntajePC_'), window.FindElement('_ultimaPalabra_'), nivel, ultima_palabra, bag, lista_coordenadas) jugador = fun.next_player(jugador, jugadores) cant_rondas = cant_rondas + 1 fun.completo_atril(window, jugador) tiempo_partida -= 1 columna = True fila = True else: #-----TURNO USER----- event, values = window.read(timeout=10) if event in (None, 'Salir'): break elif event in (0, 1, 2, 3, 4, 5, 6): if event in atril: sg.popup('Ya usó esta ficha.', title=':(', background_color='#E5CEAC', text_color='#8B4513', button_color=('white', '#8B4513')) else: atril.append(event) aux = jugador.atril_array()[event] vacio = copy.deepcopy(event) event, values = window.read() if type(event) is tuple: if event not in dicc.keys( ) and event not in diccTablero.keys(): posicion = fun.armar_palabra( dicc, event, aux, window, vacio, fila, columna, cant_rondas, board, diccTablero, lista_coordenadas) columna = posicion[0] fila = posicion[1] else: sg.popup('El casillero ya se encuentra ocupado.', title=':(', background_color='#E5CEAC', text_color='#8B4513', button_color=('white', '#8B4513')) atril.pop() elif event in (None, 'Salir'): break else: sg.popup( 'Movimiento no válido. Debe poner la ficha en el tablero.', title='No válido', background_color='#E5CEAC', text_color='#8B4513', button_color=('white', '#8B4513')) atril.pop() del atril[:] #-----VALIDAR PALABRA----- if event is 'Validar': if len(dicc) == 1: sg.popup('No se pueden formar palabras de una sóla letra.', title='Error', background_color='#E5CEAC', text_color='#8B4513', button_color=('white', '#8B4513')) else: fun.validar_palabra(window, jugadores, diccTablero, dicc, jugador, window.FindElement('_puntajeUser_'), window.FindElement('_puntajePC_'), window.FindElement('_ultimaPalabra_'), cant_rondas, board, nivel, ultima_palabra, bag) jugador = fun.next_player(jugador, jugadores) fun.completo_atril(window, jugador) cant_rondas = cant_rondas + 1 tiempo_ronda = tronda_inicial fila = True columna = True #del atril[:] #-----PASAR TURNO----- if event == 'Pasar turno': fun.reset(window, jugador, cant_rondas, diccTablero, board) jugador = fun.next_player(jugador, jugadores) cant_rondas = cant_rondas + 1 tiempo_ronda = tronda_inicial del atril[:] #-----CAMBIAR FICHAS----- if event == 'Cambiar fichas': fun.reset(window, jugador, cant_rondas, diccTablero, board) if cant_cambios != 3: fun.cambiar_fichas(window, jugador) jugador = fun.next_player(jugador, jugadores) tiempo_ronda = tronda_inicial cant_cambios += 1 else: sg.popup('Ya hizo uso de los tres cambios permitidos.', title='Error', background_color='#E5CEAC', text_color='#8B4513', button_color=('white', '#8B4513')) #-----POSPONER JUEGO----- if event is 'Posponer': fun.reset(window, jugador, cant_rondas, diccTablero, board) fun.guardar_partida(diccTablero, jugadores, bag, cant_rondas, ultima_palabra, nivel, cant_cambios, tiempo_partida, tiempo_ronda, tr_inicial, tp_inicial) sg.popup('¡Partida guardada!', background_color='#E5CEAC', text_color='#8B4513', button_color=('white', '#8B4513')) break #-----TERMINAR JUEGO----- if event == 'Terminar juego': fun.reset(window, jugador, cant_rondas, diccTablero, board) fun.termino_juego(jugadores, bag, nivel) diccTablero.clear() window.close() break if event is 'REGLAS': fun.reglas() #-----SI TERMINA EL TIEMPO DE LA RONDA----- if tiempo_ronda == 0: fun.reset(window, jugador, cant_rondas, diccTablero, board) cant_rondas = cant_rondas + 1 sg.popup('Se quedó sin tiempo, ha perdido el turno.', title='Se quedó sin tiempo', background_color='#E5CEAC', text_color='#8B4513', button_color=('white', '#8B4513')) jugador = fun.next_player(jugador, jugadores) #-----SI TERMINA EL TIEMPO DE LA PARTIDA----- if tiempo_partida == 0: fun.reset(window, jugador, cant_rondas, diccTablero, board) fun.termino_juego(jugadores, bag, nivel) diccTablero.clear() window.close()