我在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)