小编mpo*_*red的帖子

棋盘表示 - 引擎

我在C#中使用自己的国际象棋引擎.其实我在移动生成器上搜索错误,但我意识到我的实际国际象棋系统太慢了(甚至每分钟21分钟(6)).这是我的Github存储库.

我正在使用一个简单的层次结构和一个实现一个列表的板类.由于这个项目的面向对象性质,我选择不使用多维矩阵来表示板,因为每个块都有自己的位置.问题是,为了从板上获得一块,知道它的位置,它需要O(n),其中n是当前板上的件数.

在移动生成器中,我得到所有可能的移动假设一个empy板,然后我用静态类检查它们(因为一块不应该关心板状态).我访问了一些网站,包括国际象棋编程Wiki.我看到有很多类型的电路板表示,但在我的实际状态中,我不知道哪个是最好的(性能和简单性).我想这都是,我希望你会帮助我:)

我欢迎任何关于我的项目的建议;)谢谢大家.

这是我的董事会课程:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Chess_Engine___NOGUI
{
    class Board
    {
        public const byte BoardSize = 8;
        private Game game;
        private List<Piece> pieceList = new List<Piece>();
        private List<Piece> whitePieceList = new List<Piece>();
        private List<Piece> blackPieceList = new List<Piece>();

        public Board(Game game)
        {
            this.game = game;
        }

        public void AddPiece(Piece piece)
        {
            pieceList.Add(piece);
            switch (piece.Color)
            {
                case PieceColor.Black:
                    blackPieceList.Add(piece);
                    break;
                case PieceColor.White:
                    whitePieceList.Add(piece);
                    break;
            }
        }
        public void RemovePiece(Piece piece)
        { …
Run Code Online (Sandbox Code Playgroud)

c# performance chess bitboard

3
推荐指数
1
解决办法
4519
查看次数

标签 统计

bitboard ×1

c# ×1

chess ×1

performance ×1