Я делаю простую шахматную игру на C, и я хотел знать об оптимизации, которую я мог бы сделать. В настоящее время у меня есть структура Game, в которой есть текущее состояние игры (Главное меню, Меню паузы, Игра и т. Д.), Поворот, 3 целых числа, которые работают как логические, указатель на доску и указатель на выбранный фрагмент:Оптимизация шахматной игры в C
typedef struct game{
ChessBoard *board;
ChessPiece *selectedPiece;
ChessColor turn;
State state;
//Booleans
int inGame;
int checkmate;
int check;
}Game;
Совет имеет 2D массив указателей на куски, игроки и последние перемещаемых штук (для мимоходом):
typedef struct chessboard{
ChessPiece *pieces[8][8];
Player *player1;
Player *player2;
ChessPiece *lastMovedBlackPiece;
ChessPiece *lastMovedWhitePiece;
} ChessBoard;
и, наконец, штучных:
typedef struct chesspiece{
//Properties
int x;
int y;
ChessColor color;
//Type
Type type;
int numberOfMoves;
} ChessPiece;
Каждый раз, играть er выбирает кусок, программа вычисляет и показывает действительные ходы выбранного фрагмента, а после перемещения фрагмента программа проверяет, находится ли король врага, или он был мат, проверяя возможные движения фигур (если часть может защитить его, если король может двигаться в другом месте).
Я вижу людей, создающих списки для действительных ходов вместо вычисления каждый раз, но мне нужно будет создать список для каждой части и рассчитать все возможные шаги для игрока, когда изменится поворот? Улучшит ли производительность? Я также видел, что плата была всего лишь массивом, и у нее была бы более высокая производительность?
В принципе, какие возможные оптимизации я могу сделать в своем коде для лучшей производительности?
Код: https://github.com/WalrusNine/chess-game-c
Трудно предложить улучшения кода, не видя его. –
@PM Я думал об общих, известных-оптимизациях для шахматных игр, поскольку я вообще не делал оптимизаций, и есть некоторые части моего кода, которые действительно (действительно) нуждаются в изменении ха-ха, но в любом случае: https: // github .com/WalrusNine/chess-game-c После того, как код лучше, я планирую дать его некоторым друзьям, чтобы помочь им узнать немного игр на C. Он использует Allegro btw – WalrusNine
Как писал ваш вопрос слишком широк для этого сайт. –