Основной вариант шахматного движка - как я мог переписать этот код C в C#? - PullRequest
0 голосов
/ 07 августа 2020

Мне нужна помощь, чтобы переписать этот код (синие части в ссылке) на C#. У меня мало опыта программирования на C или C ++, поэтому я не уверен, как именно мне интерпретировать структуру tagMove и оператор -> в C#.

http://web.archive.org/web/20040427013839/brucemo.com/compchess/programming/pv.htm

Если кто-то не хочет переходить по ссылке, я также разместил здесь код:

typedef struct LINE 
{
    int cmove;              // Number of moves in the line.
    MOVE argmove[moveMAX];  // The line.
}   
LINE;

int AlphaBeta(int depth, int alpha, int beta, LINE * pline) 
{

    LINE line;
    if (depth == 0) {
        pline->cmove = 0;
        return Evaluate();
    }
    GenerateLegalMoves();
    while (MovesLeft()) {

        MakeNextMove();
        val = -AlphaBeta(depth - 1, -beta, -alpha, &line);
        UnmakeMove();

        if (val >= beta) return beta;
        if (val > alpha) {
            alpha = val;
            pline->argmove[0] = ThisMove();
            memcpy(pline->argmove + 1, line.argmove, line.cmove * sizeof(MOVE));
            pline->cmove = line.cmove + 1;
        }
    }
    return alpha;
}

1 Ответ

0 голосов
/ 07 августа 2020

Вы упомянули, что не знаете, что делает оператор "->" в C#, там это просто "." если что-то содержит свойство, к которому вы обращаетесь с помощью простой точки, допустим, у нас есть страна объекта с некоторыми значениями для доступа к каждому из них:

Country.Capital
Country.President

et c ...

, проблема с вашим вопросом в том, что это очень базовый c, и в этом нет ничего плохого, мы все с чего-то начали, но начать работать в шахматном движке на вашем уровне кажется странным, не уверен, что кто-то потратит время, чтобы переписать это для вас, но вы на 100% столкнетесь с другими проблемами по пути, которые вы не знаете, как решить, я бы посоветовал оставить это в ожидании, сосредоточиться на основах и затем вернуться и sma sh этот код с вашими новыми знаниями

...