# Grading notes and advice for the alpha version chess software package: # Huan Chen, 1/31/2017 -------------------------------------------- When doing: $ tar -xzf Chess_Alpha_src.tar.gz The "Chess_Alpha_src" folder should be generated. It should contain COPYRIGHT, INSTALL, README, Makefile and "src", "doc", "bin" folders. Avoid outputing a long list of files in current directory when uncompressing, imagine you have 1000 files and 100 folders in the tar file, you would end up messing up your working directory. To accomplish this, you may need to compress it this way: $ pwd (make sure that the current directory is called "Chess_Alpha_src") $ ls -lh (make sure you have the required file hierarchy) $ tar -czf ../Chess_Alpha_src.tar.gz ./ (compress all files in current directory, output the tar.gz file to the parent directory, such that "make tar" can generate the correct output every time) -------------------------------------------- Then: $ make (Your code should be compilable and the chess program should be generated in "bin" folder) $ bin/chess (this should start the chess program) -------------------------------------------- When the chess program starts, brief instructions should be provided! # example: Welcome to the chess game! Follow the official rules of chess. Instructions: To move a piece, input format: "e2e4" or "E2E4" Other options: hint (h), quit (q), undo (u), surrender (s)... # Print the chess board # prompt the white player to move # prompt the black player to move # prompt "check", "checkmate"... # declare the winner or tie -------------------------------------------- Basic functions summary: 1. the rules Q: How to verify the rule module is working properly? - demo the available moves of all types of pieces - demo "en passant" - demo "castling" - demo "check" - demo "checkmate" - demo illegal input and error handling + hints: in the test file, store a list of moves for the white player and AI, go through the moves needed to reach the "check" stage in your test function, this saves you the trouble of always inputing numerous steps manually to reach that specific state to demo "check" or special moves 2. ASCII based or GUI - need to specify the input format of a move - less typing is recommended, eg: "e2e4" is easier than "e2_e4" or "e2->e4" or "e2" + "Enter" + "e4" 3. human VS AI 4. human chooses side (black or white) - White side should start to move first - "Please choose a side: Black (1) and white (2), 1 or 2?" What if the user inputs 'q' or 'hello'? Can you handle this instead of entering an endless while loop? 5. keeps log - white moves, black moves, captures, undos, etc - ask your teammates: is the generated log file really human readable? 6. AI moves within 1 min - It should be simple to do. Advanced features summary: 1. human VS human, AI VS AI 2. undo a move 3. levels of difficulty 4. human can get hints 5. GUI 6. timers for both players 7. load board from file ...