Advertisement
max2201111

OK 999,-1000

Aug 1st, 2024
277
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.76 KB | Science | 0 0
  1. if __name__ == "__main__":
  2.     start_fen = "8/4a3/8/4K3/3A4/8/8/1k6 w - - 0 1"
  3.    
  4.     # AR = calculate_optimal_moves(start_fen)
  5.     find_min_positive_value(AR)
  6.     # print_board_for_value(AR, -996)
  7.  
  8.     current_fen = start_fen
  9.     simplified_current_fen = simplify_fen(current_fen)
  10.     simplified_current_fen1 = simplified_current_fen
  11.     optimal_moves = [simplified_current_fen]
  12.    
  13.     max_moves = 50
  14.     move_count = 0
  15.  
  16.     while move_count < max_moves:
  17.         board = CustomBoard(current_fen)
  18.         print(f"\nAktuální pozice (tah {move_count + 1}):")
  19.         print(board)
  20.         print(f"FEN: {current_fen}")
  21.        
  22.         if board.is_checkmate():
  23.             print("Mat detekován!")
  24.             break
  25.        
  26.         if board.is_insufficient_material() or board.halfmove_clock >= 100:
  27.             if board.is_insufficient_material():
  28.                 print("Nedostatečný materiál detekován!")
  29.             else:
  30.                 print("Remíza pravidlem 50 tahů detekována!")
  31.             AR[simplified_current_fen] = (0, 'drawing')
  32.             break
  33.        
  34.         if simplified_current_fen not in AR:
  35.             print(f"Pozice {simplified_current_fen} není v AR.")
  36.             break
  37.        
  38.         current_value = AR[simplified_current_fen][0]
  39.         print(f"Aktuální hodnota: {current_value}")
  40.        
  41.         if current_value == 0:
  42.             print("Remíza dosažena!")
  43.             break
  44.        
  45.         best_move = None
  46.         if board.turn == chess.WHITE:
  47.             best_value = float('inf')
  48.         else:
  49.             best_value = float('-inf')
  50.        
  51.         if board.turn == chess.WHITE:
  52.             best_value = float('inf')
  53.         else:
  54.             best_value = float('inf')  # Změněno z float('-inf') na float('inf')
  55.        
  56.         print("Možné tahy:")
  57.         for move in board.legal_moves:
  58.             board.push(move)
  59.             next_fen = simplify_fen(board.fen())
  60.             if next_fen in AR:
  61.                 value = AR[next_fen][0]
  62.                 print(f"  Tah {move}: hodnota = {value}")
  63.                 if board.turn == chess.WHITE:
  64.                     print(f"Porovnávání pro bílé: {value} < {best_value}")
  65.                     if value < best_value:
  66.                         best_value = value
  67.                         best_move = move
  68.                         print(f"  BMW {move}: hodnota = {value}")
  69.                 else:
  70.                     print(f"Porovnávání pro černé: {value} < {best_value}")  # Změněno z '>' na '<'
  71.                     if value < best_value:  # Změněno z '>' na '<'
  72.                         best_value = value
  73.                         best_move = move
  74.                         print(f"  BMBl {move}: hodnota = {value}")
  75.             else:
  76.                 print(f"  Tah {move}: není v AR")
  77.             board.pop()
  78.    
  79.         if best_move is None:
  80.             print("Žádný další tah nebyl nalezen.")
  81.             break
  82.        
  83.         print(f"Nejlepší tah: {best_move}, hodnota: {best_value}")
  84.        
  85.         board.push(best_move)
  86.         next_fen = board.fen()
  87.         simplified_next_fen = simplify_fen(next_fen)
  88.         optimal_moves.append(simplified_next_fen)
  89.         current_fen = next_fen
  90.         simplified_current_fen = simplified_next_fen
  91.         move_count += 1
  92.    
  93.     print("\nOptimální tahy:")
  94.     for fen in optimal_moves:
  95.         print_board(fen)
  96.         hodnota, typ_pozice = AR[simplify_fen(fen)]
  97.         print(f"Hodnota: {hodnota}, Typ: {typ_pozice}")
  98.         print(fen)
  99.         print("\n")
  100.    
  101.     print_board(simplified_current_fen1)
  102.     hodnota, typ_pozice = AR[simplified_current_fen1]
  103.     print(f"Počáteční hodnota: {hodnota}, Typ: {typ_pozice}")
  104.     print(simplified_current_fen1)
  105.     print("\n")
  106.  
  107.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement