Package: terminal-chess
terminal-chessA python based terminal chess application. Uses ANSI escape sequences to print board squares and clear the screen – for reprinting. Visual UI likely to vary based on terminal and terminal settings/preferences.Initial game board, waiting for first player's inputInput to this application is standardalgebraic notation. Long/fully-expanded algebraic notation, ICCF numeric notation, PGN, minimal/abbreviated algebraic notation are not supported yet, but may be in the future.Bug/Issue ReportingSubmit these to Githubissues.Some things to keep in mind:Prevent duplicates - search existing open and even closed issues before submittingRule out local issues - could this be an issue with your terminal/settings/preferences?Provide steps to reproduce - e.g. if this is a bug in chess logic, provide the input that produces the bugProvide environment details - if applicable, provide information like OS, terminal emulator, python version, terminal settings/preferencesBe respectful - this is a place for fun and collaboration :) keep it clean and respectfulFailure to follow these may result in your issue/bug report being immediately closed or ignored until the relevant details are provided.Feature RequestsSubmit these to Githubissues. Please consider that this project is being worked on in the maintainer's free time so you are much more likely to have your feature if you make it yourself! SeeDevelopment. Please cross-reference your feature request with itemsIn Developmentwhich have already been considered and likely to be picked up at some point.In DevelopmentThese are some of the items that have been thought of as potential next features/improvements to the current implementation. This list does not necessarily guarantee that the feature will ever be implemented but they have been considered.General refactoring of the logic, initial implementation was done as a quick MVP focusing on correctness and not maintainability or future development. This is a high priority item.Better UI/UX: this includes listing the moves already played,the pieces captured per player, an option to flip the board display each turn, better help messages, etc.Serialization and ability to save/continue a gameDraws/surrendersTurn/game clock and different game modes like bullet, etc.A hardy test suiteAllow other input notations and support formats like PGNA simple AIWriting a network module is something that I want to do but will take significant effort. It's on the long-term roadmap though.DevelopmentSubmit pull requests to Github. This project utilizespipenvfor development. Runpipenv shellto create and activate the virtual environment and usepipenv install --devto install the necessary development dependencies.Start python virtual environment/project-root>pipenvshellInstall development dependencies/project-root>pipenvinstall--devPlease use flake8 to handle linting issues before submitting PRs. This includes linting for test files.Run linter/project-root>flake8Please run tests to ensure nothing was broken. Also, write tests for your changes if applicable.Run tests/project-root>pytestIf you want to install the package to validate the script.Install terminal-chess package/project-root>pipinstall.Run game from script after install/project-root>pychessTenetsA list of tenets that this project goes by:Avoid unnecessary dependencies - this is a relatively minimal implementation of chess for the terminalMaintainable and expandable - changes over time should promote and make future development easier & reduce tech debt; this includes linting, sufficient testing, and using proper design patternsAvoid boilerplate/setup hell - avoid any changes that complicate future development or further restrict useable environments to run/develop onOpen source - engage the community and promote collaboration on this projectLicenseterminal-chessis published under the MIT license; seeLICENSE.