我在C中做了一個簡單的國際象棋遊戲,我想知道我可以對它做出的優化。目前,我有一個結構遊戲,其中包含遊戲的當前狀態(主菜單,暫停菜單,播放等),轉彎,作爲布爾值的3個整數,指向棋盤的指針和指向所選棋子的指針:在C中優化國際象棋遊戲
typedef struct game{
ChessBoard *board;
ChessPiece *selectedPiece;
ChessColor turn;
State state;
//Booleans
int inGame;
int checkmate;
int check;
}Game;
董事會有指針的二維數組件,球員和最後的感動件(用於順便):
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;
每次玩呃選擇一件作品,程序會計算並顯示所選作品的有效移動,移動一個作品之後,程序將通過檢查作品中可能的移動來驗證敵方國王是否處於檢查狀態,保護他,如果國王可以移動到其他地方)。
我看到人們爲有效移動創建列表而不是每次計算,但是我必須爲每個棋子創建一個列表,並且在轉彎時計算所有可能的棋步。這會提高性能嗎?我也看到了這個板子只是一個陣列,會有更好的表現嗎?
基本上,我可以在我的代碼中執行哪些優化以獲得更好的性能?
代碼:https://github.com/WalrusNine/chess-game-c
很難在不看到它的情況下對代碼進行改進。 – 2015-04-04 23:58:39
@PM我一直在考慮一般的棋類遊戲的優化,因爲我根本沒有進行過優化,而且我的代碼的某些部分確實(真的)需要更改哈哈,但無論如何:https:// github .com/WalrusNine/chess-game-c在代碼更好後,我打算將它交給一些朋友,以幫助他們學習C中的一些遊戲。它使用Allegro btw – WalrusNine 2015-04-05 00:05:42
由於發佈您的問題太廣泛現場。 – 2015-04-05 00:07:04