Commit 5b69f86c authored by Radia EL HAMDOUNI's avatar Radia EL HAMDOUNI

Update README.txt

parent 0e4ae4de
...@@ -5,7 +5,8 @@ ...@@ -5,7 +5,8 @@
; +- author : Radia EL HAMDOUNI . ; ; +- author : Radia EL HAMDOUNI . ;
; +- start date : October 26th , 2020. ; ; +- start date : October 26th , 2020. ;
; +- deadline : November 3rd , 2020. ; ; +- deadline : November 3rd , 2020. ;
; +- Goal : Program the computer to play chess. ; ; +- Goal : Program the computer to play chess. ;
; +- Licence : MIT licence. ;
;-----------------------------------------------------------------------------------------------------; ;-----------------------------------------------------------------------------------------------------;
; +- description : ; ; +- description : ;
; - The user can play against the chess engine that will predict ; ; - The user can play against the chess engine that will predict ;
...@@ -14,29 +15,107 @@ ...@@ -14,29 +15,107 @@
; ; ; ;
/*****************************************************************************************************/ /*****************************************************************************************************/
/******************************************************************************************************\
; ;
; To compile and run the program : ;
; ;
; +- Using the makefile : ;
; // compile the progam ;
; $make ;
; // run the program ;
; $./chess_engine ;
; // both compile and run the program ;
; $ make && ./chess_engine ;
; ;
; ;
/*****************************************************************************************************/
/*****************************************************************************************************\ /*****************************************************************************************************\
; ; ; ;
; To compile the file use the command : ; ; +- Functionnlities : ;
; ; ; + 0x88 board representation with unicode encoding of the chess pieces. ;
; ; ; + FEN inmplementation in the chess game. ;
; $ gcc chess_engine.c -o chess_engine ; ; ;
; - To run the executable , call the name of the file : ; ; ;
; $ chess_engine ; ; ;
; - To both compile and run the executable in the terminal : ; ;-----------------------------------------------------------------------------------------------------;
; $ gcc chess_engine.c -o chess_engine && ./chess_engine ; ; +- Possible improvements : ;
; - Change the board representation => Instead of using 0x88 and store the board in an ;
; array with the size 128 , we can implement the bitboard representation with a computer;
; with the architecture 64 bits and use 12 integers to store the ;
state of the chess board . ;
; - Implement a Neural Networks in the evaluation function . This will make our ;
; ELO rating higher. ;
; We can integrte NNUE to the chess engine which is the stockfish's Neural Network ;
; Or we can write our own Neural Network . ;
; - ;
; ;
; ;
; ;
; ; ; ;
/*****************************************************************************************************/ /*****************************************************************************************************/
/*****************************************************************************************************/
; ;
; +- Chess board representation : => 0X88 board representation . ;
; ;
; -------------------------- ;
; Ressources/documentation: ;
; ------------------------- ;
; ;
; * https://web.archive.org/web/20130212063528/http://www.cis.uab.edu/hyatt/boardrep.html ;
; * https://en.wikipedia.org/wiki/0x88 ;
; * https://decimal.info/hex-to-decimal/8/how-to-convert-0X88-to-decimal.html ;
; ;
; ;
; - Chess board in bash console :
;
; 8 ♜ ♞ ♝ ♛ ♚ ♝ ♞ ♜
; 7 ♟︎ ♟︎ ♟︎ ♟︎ ♟︎ ♟︎ ♟︎ ♟︎
; 6 . . . . . . . .
; 5 . . . . . . . .
; 4 . . . . . . . .
; 3 . . . . . . . . ;
; 2 ♙ ♙ ♙ ♙ ♙ ♙ ♙ ♙ ;
; 1 ♖ ♘ ♗ ♕ ♔ ♗ ♘ ♖ ;
; ;
; a b c d e f g h ;
; ;
; ;
; ;
/*****************************************************************************************************/
/*****************************************************************************************************\ /*****************************************************************************************************\
; +- Vocabulary : ; +- Vocabulary : ;
; +- file is the column . ; +- file is the column . ;
; +- rank is the line . ; +- rank is the line . ;
; ; ;
; +- Notation : ; +- Notation : ;
; +- Black pieces are referenced in the code with lower case letters . ; +- Black pieces are referenced in the code with lower case letters . ;
; +- White pieces are referenced in the code with Upper case letters . ; +- White pieces are referenced in the code with Upper case letters . ;
; ; + Standard Algebraic notation 'SAN' : ;
; P : pawn ;
; R : rook ;
; N : Knight ;
; B : Bishop ;
; Q : Queen ;
; K : King ;
; +- Fen Notation 'Forsyth–Edwards Notation' : ;
; ;
; A string that stores the state of the board and contains the following data ;
; example : "rnbqkbnr/pp1ppppp/8/2p5/4P3/8/PPPP1PPP/RNBQKBNR w KQkq c6 0 2" ;
; + Board State => Piece placements. ;
; + Active turn => Next color to make a move (w,b) ;
; + Castling => KQkq . ;
; + En passant . ;
; + Halfmove clock . ;
; + Fullmove number . ;
; ;
; ;
; ;
/*****************************************************************************************************/ /*****************************************************************************************************/
...@@ -73,66 +152,81 @@ ...@@ -73,66 +152,81 @@
; ; ; ;
; +- Moving a piece (how it works): ; ; +- Moving a piece (how it works): ;
; first empty the square. Example ==> board[e2]=e; ; ; first empty the square. Example ==> board[e2]=e; ;
; ; ;
; ; ;
; 8 ♜ ♞ ♝ ♛ ♚ ♝ ♞ ♜ ; ; 8 ♜ ♞ ♝ ♛ ♚ ♝ ♞ ♜ ;
; 7 ♟︎ ♟︎ ♟︎ ♟︎ ♟︎ ♟︎ ♟︎ ♟︎ ; 7 ♟︎ ♟︎ ♟︎ ♟︎ ♟︎ ♟︎ ♟︎ ♟︎ ;
; 6 . . . . . . . . ; 6 . . . . . . . . ;
; 5 . . . . . . . . ; 5 . . . . . . . . ;
; 4 . . . . ♟︎ . . . ; 4 . . . . ♟︎ . . . ;
; 3 . . . . . . . . ; 3 . . . . . . . . ;
; 2 ♙ ♙ ♙ ♙ . ♙ ♙ ♙ ; 2 ♙ ♙ ♙ ♙ . ♙ ♙ ♙ ;
; 1 ♖ ♘ ♗ ♕ ♔ ♗ ♘ ♖ ; 1 ♖ ♘ ♗ ♕ ♔ ♗ ♘ ♖ ;
; ;
; a b c d e f g h ;
; ;
; then move the pieces . Example ==> board[e4] = P; ;
; ;
; 8 ♜ ♞ ♝ ♛ ♚ ♝ ♞ ♜ ;
; 7 ♟︎ ♟︎ ♟︎ ♟︎ ♟︎ ♟︎ ♟︎ ♟︎ ;
; 6 . . . . . . . . ;
; 5 . . . . . . . . ;
; 4 . . . . . . . . ;
; 3 . . . . . . . . ;
; 2 ♙ ♙ ♙ ♙ . ♙ ♙ ♙ ;
; 1 ♖ ♘ ♗ ♕ ♔ ♗ ♘ ♖ ;
; ;
; a b c d e f g h ;
; ;
; ;
; ;
; ;
/*****************************************************************************************************/
/*****************************************************************************************************\
; ;
; a b c d e f g h
; ;
; then move the pieces . Example ==> board[e4] = P;
; ;
; 8 ♜ ♞ ♝ ♛ ♚ ♝ ♞ ♜
; 7 ♟︎ ♟︎ ♟︎ ♟︎ ♟︎ ♟︎ ♟︎ ♟︎
; 6 . . . . . . . .
; 5 . . . . . . . .
; 4 . . . . . . . .
; 3 . . . . . . . .
; 2 ♙ ♙ ♙ ♙ . ♙ ♙ ♙
; 1 ♖ ♘ ♗ ♕ ♔ ♗ ♘ ♖
; ;
; a b c d e f g h
; ;
; ;
; ; ;
; ; /*****************************************************************************************************/
/*****************************************************************************************************/
/*****************************************************************************************************/ /*****************************************************************************************************/
; +-Ressources : ; +-Ressources : ;
; ; ;
; +- ASCII art : ; +- ASCII art : ;
; * https://www.asciiart.eu/sports-and-outdoors/chess ; * https://www.asciiart.eu/sports-and-outdoors/chess ;
; ; ;
; ; +- Inspiration : ;
; +- Chess symbols in Unicode : ; Micro-max minimalist chess ;
; * https://en.wikipedia.org/wiki/Chess_symbols_in_Unicode ; * https://home.hccnet.nl/h.g.muller/max-src2.html ;
; ; ;
; +- Chess board notation : ; +- Chess symbols in Unicode : ;
; ; * https://en.wikipedia.org/wiki/Chess_symbols_in_Unicode ;
; => Algebraic notation . ; ;
; ; +- Chess board notation : ;
; -------------------------- ; ;
; Ressources/documentation: ; => Algebraic notation . ;
; ------------------------- ; ;
; * https://en.wikipedia.org/wiki/Algebraic_notation_(chess) ; -------------------------- ;
; Ressources/documentation: ;
; ------------------------- ;
; * https://en.wikipedia.org/wiki/Algebraic_notation_(chess) ;
; ;
; +- FEN notation(Forsyth–Edwards Notation) : ;
; * https://en.wikipedia.org/wiki/Forsyth%E2%80%93Edwards_Notation ;
; ;
; +- Special chess moves : ;
; ;
; +-En passant : ;
; * https://www.youtube.com/watch?v=1q7lZilVy04 ;
; ; ;
; +- Castling : ;
; ;
/*****************************************************************************************************/ /*****************************************************************************************************/
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment