lrozenblyum / chess Goto Github PK
View Code? Open in Web Editor NEWLeokom Chess. java + Winboard + TDD + OOP
License: Apache License 2.0
Leokom Chess. java + Winboard + TDD + OOP
License: Apache License 2.0
Set up CI (to run unit-tests and Sonar analyzing on daily basis).
Hudson/Jenkins/...?
Upgrade 4.10 -> 4.11
Implement Bishop movement according to rules:
3.2 The bishop may move to any square along a diagonal on which it stands.
3.5 When making these moves the bishop, rook or queen may not move over any intervening pieces.
Check integrationally with pawns and knights
Check migration guides and so on.
Sonar 3.3 has been released recently
Rule 3.7a:
The pawn may move forward to the UNOCCUPIED square immediately in front of it on the same file, or
Rule 3.7b
on its first move the pawn may move as in 3.7.a or alternatively it may advance two squares along the same file provided both squares are UNOCCUPIED, or
Implement rule 3.6.
The knight may move to one of the squares nearest to that on which it stands but not on the same rank, file or diagonal.
It's a world standard and will simplify import/export of games
http://portablegamenotation.com/Specification.html - down at the moment of checking on 2020-12-20
https://www.thechessdrum.net/PGN_Reference.txt
http://www.saremba.de/chessgml/standards/pgn/pgn-complete.htm
Acceptance criteria
Issue with PGN itself https://zuttobenkyou.wordpress.com/2012/01/27/problems-with-the-portable-game-notation-pgn-standard/
Architectural challenge
Testing ways
It means that some configuration files must be added (minimally required) that will allow easy start-up on clean environment (without boring set up of classpath etc)
"The king is said to be 'in check' if it is attacked by one or more of the opponent's pieces, even if such pieces are constrained from moving to that square because they would then leave or place their own king in check. No piece can be moved that will either expose the king of the same colour to check or leave that king in check."
Practically need to limit amount of moves to only those ones which don't leave the king in check (not exposing the king to check looks like already implemented )
It initializes too long (is our engine the cause? Java5-6-7? google etc)
Currently only first white move is Ok. Need to develop black-moving player as well (at least for usual 2 moves). This will allow adding more processing, .e..g. of resignment of its opponent.
Currently all tests are stable so far (however there were some tests that had utility methods 'for future' to cover something bigger).
Need to think if we need random/multi-parameterized tests at all
When I move my pawn to promotion rank only queen is created, is it a bug in Winboard or need somehow control the possibility to select?
Jenkins pulls all the repository branches (including non-master), so changes that were not in master were already put to Sonar. Think if it's nice??
Think about whole GitHub repository backuping policy - internal/external/CI-controlled?..
Define the fastest way to 'deploy' to the winboard.
Maybe integrate winboard inside IDE?
Integrate mutational testing into Sonar
It's nice search query (to build community/increase interest)
Analyze; create user stories
Extend backlog below.
Create separate issues per item TODO
Now pawns and queens are stored separately - it's really hard-to-support.
Need to define a data model which will make the piece management easy
Implement rules for rook:
3.3 The rook may move to any square along the file or the rank on which it stands.
3.5 When making these moves the bishop, rook or queen may not move over any intervening pieces.
Castling is NOT covered by these changes.
All the changes I see now in PawnMovement are related to 'so-called' statics - which moves are available.
However we need also dynamics:
which position will we reach after the one of the available moves being executed.
It's VERY important especially for en passant (and for promotion)
No sense to keep Java6 which is not supported by Oracle so far (no further updates are planned)
It's needed for IDE-independency, easier libraries management and #6
Now the MainRunner definitely shows mix of Player's responsibilities - both thinking engine that plays AGAINST WinBoard player, and WinBoard player work himself.
It definitely must be split into 2 separate players (it would be very good to share common interface):
Implementing them via common interface will help greatly for the next engines implementations, portability and flexibility
Finally it's time to introduce the King into the action!
However it could be a long-term task so it may be developed in parts...
Need to implement chess rules 3.8, 3.9.
They must be decomposed into sub-tasks
What is allowed by github?
Include license description into the project
Use mockito. Creating mocks manually is rather expensive when often needed
Our engine doesn't receive resign notification
Be able to run the engine on Android
http://www.aartbik.com/MISC/eng.html
Select Pri0 features that must be implemented
Sonar/FindBugs/??
Something integrated with github would be perfect
The castling is rather a complex topic, therefore I introduce a separate sub-issue of #65
(0) This is a move of the king and either rook of the same colour along the player’s first rank, counting as a single move of the king and executed as follows: the king is transferred from its original square two squares towards the rook on its original square, then that rook is transferred to the square the king has just crossed.
(1) The right to castle has been lost:
if the king has already moved, or
with a rook that has already moved.
(2) Castling is prevented temporarily:
if the square on which the king stands, or the square which it must cross, or the square which it is to occupy, is attacked by one or more of the opponent's pieces, or
if there is any piece between the king and the rook with which castling is to be effected.
Winboard UI is as I see non-validating, it allows me doing illegal moves.
Need adding validation to our engine.
Add the castling to list of allowed moves.
At this stage it's enough not to enable any validation on 1) & 2) cases from #76
(0) This is a move of the king and either rook of the same colour along the player’s first rank, counting as a single move of the king and executed as follows: the king is transferred from its original square two squares towards the rook on its original square, then that rook is transferred to the square the king has just crossed.
This is sub-task of #76
Think about a player who can self-learn from game to game.
Suppose we import 1-10-100- million of games and make some sophisticating learning possibility? E.g. neuron network etc
Make the winboard engine at least react on the actions
Formerly known as Sonar
Implement Queen movement.
3.4. The queen may move to any square along the file, the rank or a diagonal on which it stands.
3.5 When making these moves the bishop, rook or queen may not move over any intervening pieces.
Think about generalizing rook/bishop/queen movement. Look well at Direction/HorizontalDirection/VerticalDirection enums...
Alllow further easier work with Maven and clear test separation in package way (I will TDD here ;)
But keep an eye on the mailing list, it looked like some guys had problems with this minor update.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.