hehco en clase
unknown
python
3 years ago
4.3 kB
3
Indexable
# Rodrigo y weiyi xu wang # ejercicio clase pue import random def display_board(board): #funcion para pintar el tablero # para acceder a la primera casila (fila 0 columna 0) # board[0][0] print("\n") for c in range(0,3): print(f"{board[c][0]} | {board[c][1]} | {board[c][2]} {c*3+1} | {c*3+2} | {c*3+3} ") if(c != 2): print("-","*","-","*","-"," -","*","-","*","-") print("\n") print("--------------------------------------------------------------------------") def enter_move(board): #funcion para que el usario introduzca su movimiento move_done = False while(not move_done): introduccion = input("Introduzca un numero del 1 - 9 para la posicion del movimiemto.") if( introduccion.isnumeric()): movimiento = int(introduccion) # check es un numero entre 1-9 posibles_movimientos = list_free_fields(board) if(0<movimiento<10 and (movimiento in posibles_movimientos)): do_movement(board, movimiento,"Jugador", "X") move_done = True else: print("Has introducido un numero invalido, recuerde 1-9") def list_free_fields (board): lista_vacia=[] for posicion in range (1,10): fila = (posicion - 1) // 3 columna = (posicion -1 ) % 3 if(board[fila][columna]==" "): lista_vacia.append(posicion) return lista_vacia def victory_for(board, sign): #funcion para saber quien gana for i in range (0,3): if(board[i][0]==board[i][1]==board[i][2]==sign or board[0][i]==board[1][i]==board[2][i]==sign): return True if(board[0][0]==board[1][1]==board[2][2]==sign or board[0][2]==board[1][1]==board[2][0]==sign): return True else: return False def do_movement(board, movement, player, sign): fila = (movement - 1) // 3 columna = (movement -1 ) % 3 board[fila][columna] = sign if(player!="simulacion"): print(f"Movimiento de la {player} {movement}") def draw_move(board): casillas_vacias = list_free_fields(board) movimiento = inteligencia(board) do_movement(board, movimiento,"Computadora", "O") display_board(board) def copy_board(board): simulation = list() for fila in board: simulation.append(fila[:]) return simulation def inteligencia(board): casillas_vacias = list_free_fields(board) for movimiento in casillas_vacias: simulacion = copy_board(board) # Ganar = ganar sobre iteracions listas do_movement(simulacion, movimiento,"simulacion", "X") if (victory_for(simulacion, "X")==True): return movimiento simulacion = copy_board(board) # [row[:] for row in board ] do_movement(simulacion, movimiento,"simulacion", "O") # Taponar = ganar con signo opuesto if (victory_for(board, "O")==True): return movimiento # Simulacionas de jugadas a 2 lineas con blanco (a futuro) # checkear que el centro esta libre if( 5 in casillas_vacias): return 5 # si no hay taponar o ganar random return casillas_vacias[random.randint(0, len(casillas_vacias)-1)] def jugar(): tablero = [[" " for c in range(3)] for d in range(3)] print("Vamos a jugar al 3 en raya!!!") display_board(tablero) no_box = False while(not no_box): enter_move(tablero) # check if you win if (victory_for(tablero, "X")==True): print (" \n *** Has ganado *** \n") break if (len(list_free_fields(tablero)) == 0): print (" \n *** Empate *** \n") break draw_move(tablero) # check if computer win if (victory_for(tablero, "O")==True): print ("Has perdido") break #check if there is more empty boxes, not useful if machine not start if(len(list_free_fields(tablero)) == 0): print ("Empate") no_box = True display_board(tablero) jugar()
Editor is loading...