蟒蛇棋打黑棋并将颜色更改为白色?

问题描述

因此,我试图为国际象棋游戏创建一个minimax树,每当它开始构建树时,它都会弄乱棋子的颜色和位置。它是这样工作的,它会创建一个董事会列表,该列表的大小为合法举动的数量,然后在董事会上显示每个合法举动。然后创建另一个层,在其中收获相同的东西,但第二层依此类推。这里的问题是:

r n b q k b。 r
p p p p p p p p
。 。 。 。 。 N. 。
。 。 。 。 。 。 。 。
。 。 。 。 。 。 。 。
。 。 。 。 。 N. 。
P P P P P P P P P
R N B Q K B。 R

这是黑色运动后的棋盘,请注意骑士的颜色随着运动而改变了。我检查了每只芬,看看轮到谁了,结果全都弄乱了,甚至在操纵芬的颜色后仍然没有成功请帮助我。

代码

from tensorflow import keras
from chess_data import convert_to_list

import time
import chess.pgn
import numpy as np
model = keras.models.load_model('model.h5')


def general_value(board):
        good,bad =0,0
        
        score = 0
        index = {1:1,2:3,3:3.5,4:5,6:9,5:100,7:-1,8:-3,9:-3.5,10:-5,12:-9,11:-100,0:0}
        for i in board: 
            for j in i:
                if index[int(j)] > 0:

                    good += index[int(j)]
                if index[int(j)] < 0:
                    bad += index[int(j)]

        score = good+bad

        return score

        
                


def legal_moves(board):
    all_moves = []
    for e in board.legal_moves:
        all_moves.append(e)
  
    return all_moves[:2]


def node(board,move):
    print(board)
    formated_move = chess.Move.from_uci(str(move))
    print(formated_move)

    new_board = chess.Board(str(board.board_fen()))
    print(new_board.turn)
    new_board.push(formated_move)
    print(new_board.turn)
    print(new_board)

    # value = evalute(board)
    copy = convert_to_list(new_board)
    data = np.array(copy).reshape(1,8,9)

    # value = model.predict_on_batch(data)
    # print(value)
    value = general_value(copy)
    
    
    return new_board,value 



def layer(board):
    legal = legal_moves(board)
 

    new_boards = []

    for i in legal:  
        new_boards.append(node(board,i))


    return new_boards

def minimax(board,turn):
    if turn == 1:
        obi = max

    if turn == -1: 
        obi = min



    first_layer = layer(board)


    second_layer = []
    third_layer = []

    for i in first_layer:
        second_layer.append(layer(i[0]))


    for i in second_layer:
        for l in i:
            third_layer.append(layer(l[0]))
    print(third_layer)
    layer_trace = [third_layer[i::len(first_layer)] for i in range(len(first_layer))]```

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)