Chess changes: en passant and not suggesting illiegal moves

Tyson Williams tyson.d.w at gmail.com
Sat Jun 20 20:25:20 BST 2020


Great.  I am glad it was such a simple fix.

In new line 512
<https://invent.kde.org/education/gcompris/-/commit/7e60bf27cc025c820137d78c3edd1f8b93232836#217955667677303de23770841ede5f08e8022b7f_510_512>,
I would change the comment from
> we capture without having the pawn to the "to" position.
to
> we capture a pawn without having it at the "to" position.



On Sat, Jun 20, 2020 at 1:38 PM Johnny Jazeix <jazeix at gmail.com> wrote:

> Thank you for explaining more.
> I just passed the good options to the engine that already handled it.
> It seems to work fine as the "state.enpassant" only have a value when
> an opponent pawn does a move on 2 cases.
>
> The added code is mostly to make the piece disappear on the board.
>
> Here is the related commit:
>
> https://invent.kde.org/education/gcompris/-/commit/7e60bf27cc025c820137d78c3edd1f8b93232836
>
> Johnny
>
> Le sam. 20 juin 2020 à 20:19, Tyson Williams <tyson.d.w at gmail.com> a
> écrit :
> >
> > Hello Johnny,
> >
> > Thanks for working on this.  If you link to the code, I will review it.
> >
> > It should not be configurable.  The standard chess rules include the
> possibility of en passant.
> >
> > However, in case you didn't notice, there is a "time" aspect involved
> with this move.  "en passant" is French for "in passing".  So a pawn can
> capture another via en passant as though the other pawn was captured "in
> the process of passing".  If the players exchange a pair of moves elsewhere
> on the board, then en passant is no longer an option for this pair of pawns
> because the other pawn has "already passed".  See the conditions given on
> Wikipedia for when this move is possible.
> >
> > Programmatically, this means that whether en passant is a valid move
> depends not just on the current state of the board but also on some of the
> history that lead to the current state.  This situation is similar to
> castling.  In the requirements for castling given on Wikipedia, the second
> rule is "Neither the king nor the chosen rook has previously moved."  If
> the other requirements for castling are satisfied, then this second
> requirement cannot be determined when only given the current state of the
> board.
> >
> > On Sat, Jun 20, 2020 at 12:19 PM Johnny Jazeix <jazeix at gmail.com> wrote:
> >>
> >> Hi Tyson,
> >> I just did some code for adding the enpassant move.
> >> As I know nothing about chess, is it a move that we should add as
> >> optional (a configuration checkbox allowing or not the enpassant move,
> >> checked or not by default?) or should it be always enabled?
> >>
> >> Johnny
> >>
> >> Le lun. 8 juin 2020 à 12:04, Tyson Williams <tyson.d.w at gmail.com> a
> écrit :
> >> >
> >> > No rush.  I can wait for your normal release process.  I don't need
> any special treatment.
> >> >
> >> > It might be possible to remove the later check for an illegal move.
> >> >
> https://invent.kde.org/education/gcompris/-/blob/master/src/activities/chess/chess.js#L151
> >> > Of course it would be safer to leave this code as is.  The main
> advantage I see with removing it is one less phrase to translate when
> localizing.
> >> >
> >> >
> >> >
> >> > On Mon, Jun 8, 2020, 3:43 AM Johnny Jazeix <jazeix at gmail.com> wrote:
> >> >>
> >> >> Hi Tyson,
> >> >>
> >> >> no release scheduled yet for the next 3 months at least. We will do
> >> >> one once "multiple dataset" feature will be done for most of the
> >> >> activities.
> >> >>
> >> >> Depending on your OS, I can take a look to generate an
> executable/package.
> >> >>
> >> >> Johnny
> >> >>
> >> >> Le dim. 7 juin 2020 à 23:37, Tyson Williams <tyson.d.w at gmail.com> a
> écrit :
> >> >> >
> >> >> > Hello Johnny,
> >> >> >
> >> >> > That looks great.  Thanks for making that change :)
> >> >> >
> >> >> > When should I expect that change to be released?  Is there a
> specific version number for it?
> >> >> >
> >> >> > On Sun, Jun 7, 2020 at 4:17 PM Johnny Jazeix <jazeix at gmail.com>
> wrote:
> >> >> >>
> >> >> >> Hi,
> >> >> >>
> >> >> >> I removed all impossible moves (should cover all images except the
> >> >> >> en-passant one):
> >> >> >>
> https://invent.kde.org/education/gcompris/-/commit/25679d605d832720447ea84066794e9283c3dd22
> .
> >> >> >>
> >> >> >> For the en-passant, as told before, it needs to be checked if it
> is
> >> >> >> already handled in the p4wn library that we use or not. If it is
> >> >> >> already implemented, we need to understand why it does not work
> in our
> >> >> >> code.
> >> >> >> If it is not, best would be to add it on the upstream library if
> they
> >> >> >> are opened to contributions and report it on our code.
> >> >> >>
> >> >> >> I'll create a new bug later for en-passant, so we can dissociate
> the 2 issues.
> >> >> >>
> >> >> >> Johnny
> >> >> >>
> >> >> >> Le dim. 7 juin 2020 à 13:45, Tyson Williams <tyson.d.w at gmail.com>
> a écrit :
> >> >> >> >
> >> >> >> > Thanks Johnny,
> >> >> >> >
> >> >> >> > If the move suggestions are an easy fix for you, then by all
> means, go ahead.  I will put it on my TODO list a well.  My typical
> development environment includes C# or F#, Visual Studio, and Azure DevOps
> or GitHub, so the different environment will be a challenge, but I am
> willing to try.  Your links into the code will be very helpful.
> >> >> >> >
> >> >> >> > On Sun, Jun 7, 2020, 5:20 AM Johnny Jazeix <jazeix at gmail.com>
> wrote:
> >> >> >> >>
> >> >> >> >> Hi,
> >> >> >> >>
> >> >> >> >> I removed the images from your mail, created a bug on our
> tracker
> >> >> >> >> (https://phabricator.kde.org/T13248) and added the images in
> it
> >> >> >> >> https://phabricator.kde.org/M175.
> >> >> >> >> For the en-passant move, I probably won't have the knowledge
> to fix it quickly.
> >> >> >> >>
> >> >> >> >> For restraining the moves to the only "really" possible ones,
> it
> >> >> >> >> should be possible:
> >> >> >> >>
> https://invent.kde.org/education/gcompris/-/blob/master/src/activities/chess/chess.js#L317
> :
> >> >> >> >> we display the possible moves.
> >> >> >> >> Here is the function where we check if the move is legal or
> not:
> >> >> >> >>
> https://invent.kde.org/education/gcompris/-/blob/master/src/activities/chess/chess.js#L151
> >> >> >> >>
> >> >> >> >> I can add it in my todo list, except if you want to take a
> look.
> >> >> >> >>
> >> >> >> >> Johnny
> >> >> >> >>
> >> >> >> >> Le dim. 7 juin 2020 à 03:30, Tyson Williams <
> tyson.d.w at gmail.com> a écrit :
> >> >> >> >> >
> >> >> >> >> > Hello everyone,
> >> >> >> >> >
> >> >> >> >> > I decided to only take screenshots for the incorrect cases,
> of which there are five.
> >> >> >> >> >
> >> >> >> >> > The first is that en passant is not possible but should be.
> See attached file "en_passant.png".
> >> >> >> >> >
> >> >> >> >> > The other four cases are moves that are suggested but should
> NOT be.  In all four cases, only the suggestions are wrong.  Trying to play
> at any of these "bad" suggestions displays the error message "Invalid, your
> king may be in check".
> >> >> >> >> > 1. Suggested moves for the king should not include moving to
> a square that is under attack.  In the attached file
> "1-King_moving_into_an_attack.png", there should be no suggested moves for
> the king.
> >> >> >> >> > 2. When in an absolute pin, there should be no move
> suggestions.  In the attached file "2-Stuck_in_absolute_pin.png", there
> should be no suggested moves for the bishop.  There are some other
> pin-related cases that are more complicated.
> >> >> >> >> > 3&4. When in check, the only valid moves of non-king pieces
> are to block or capture.  In the attached file
> "3_Only_move_absolute_pin.png", the only suggested move should be to block
> the queen's attack.  In the attached file "4-Only_move_capture.png", the
> only suggested move should be to capture the queen.
> >> >> >> >> >
> >> >> >> >> > The program already knows that some of the suggestions are
> no good.  That is why it doesn't allow those moves and shows an error
> message instead.  I just want it to never show those bad suggestions in the
> first place.
> >> >> >> >> >
> >> >> >> >> > On Fri, Jun 5, 2020 at 5:35 PM Tyson Williams <
> tyson.d.w at gmail.com> wrote:
> >> >> >> >> >>
> >> >> >> >> >> Hello Johnny,
> >> >> >> >> >>
> >> >> >> >> >> Thanks for the links.  I will take a look at them.
> >> >> >> >> >>
> >> >> >> >> >> To help you and others better understand the cases, it just
> occurred to me that I could create and markup some screenshots.  I should
> be able to get those over the weekend.
> >> >> >> >> >>
> >> >> >> >> >>
> >> >> >> >> >> On Fri, Jun 5, 2020, 2:48 PM Johnny Jazeix <
> jazeix at gmail.com> wrote:
> >> >> >> >> >>>
> >> >> >> >> >>> Hi Tyson,
> >> >> >> >> >>>
> >> >> >> >> >>> thank you for your explanation. We are using the engine of
> p4wn
> >> >> >> >> >>> (https://github.com/douglasbagnall/p4wn) to power the
> chess activity.
> >> >> >> >> >>> There were already a few bug they fixed for "en passant":
> >> >> >> >> >>>
> https://github.com/douglasbagnall/p4wn/issues?q=is%3Aissue+is%3Aclosed
> >> >> >> >> >>> but maybe that did not handle all the cases.
> >> >> >> >> >>>
> >> >> >> >> >>> If you have knowledge, for sure these improvements are
> welcome!
> >> >> >> >> >>> If you can reproduce the bugs in
> http://p4wn.sourceforge.net/, then it
> >> >> >> >> >>> would be better if this can be fixed upstream (proposing a
> pull
> >> >> >> >> >>> request) and we'll have to report on our code
> >> >> >> >> >>> (
> https://github.com/gcompris/GCompris-qt/blob/master/src/activities/chess/engine.js
> ).
> >> >> >> >> >>> I can help you understand the code on GCompris, but will
> have more
> >> >> >> >> >>> difficulty to help on the engine.
> >> >> >> >> >>>
> >> >> >> >> >>> I'll take a closer look tomorrow to try to understand more
> the
> >> >> >> >> >>> different use cases you are talking about.
> >> >> >> >> >>>
> >> >> >> >> >>> Johnny
> >> >> >> >> >>>
> >> >> >> >> >>> Le ven. 5 juin 2020 à 14:18, Tyson Williams <
> tyson.d.w at gmail.com> a écrit :
> >> >> >> >> >>> >
> >> >> >> >> >>> > !Hello everyone,
> >> >> >> >> >>> >
> >> >> >> >> >>> > My children (twin 6yos and 4yo) love playing the
> activities in GCompris.  In particular, one of my 6yos especially enjoys
> that he can been me at the flying kings variant of checkers.
> >> >> >> >> >>> >
> >> >> >> >> >>> > Anyway, there are two improvements that I would like to
> make to the chess activities.
> >> >> >> >> >>> >
> >> >> >> >> >>> > The first is that en passant is not a supported move.  I
> would like to add support for them.
> >> >> >> >> >>> >
> >> >> >> >> >>> > The second is about the inconsistency in which moves are
> displayed as possible.  After clicking on a piece, the general behavior is
> that the squares to which that piece can move are highlighted.  The
> suggested moves vary according to the situation in many cases.
> >> >> >> >> >>> >
> >> >> >> >> >>> > Here are five cases in which only legal moves are
> suggested:
> >> >> >> >> >>> > - Opponent pieces in the way (e.g. if R on a1 can
> capture at a2, then capturing at a3 is not suggested)
> >> >> >> >> >>> > - Own piece in the way (e.g. there are no suggested
> moves for the king as the first move of the game)
> >> >> >> >> >>> > - Pawn's first vs non-first move (i.e. only when it is a
> pawn's first move and the two squares in front of it are empty is the
> suggestion given to move the pawn forward two squares)
> >> >> >> >> >>> > - Pawn capture (i.e. only if an enemy piece is
> diagonally in front of a pawn is the suggestion given to move in that
> diagonal direction)
> >> >> >> >> >>> > - Castling (i.e. castling the king by moving it
> horizontally is only suggested if it is valid...which means the king has
> never moved, the rook as never moved, square the king moves through is not
> being attached, and the square the king stops on is not being attached)
> >> >> >> >> >>> >
> >> >> >> >> >>> > In contrast, there is one case in which invalid moves
> are suggested, which is when the king of that player would become under
> attack (except for castling as mentioned above).  I know of four ways in
> which this can happen:
> >> >> >> >> >>> > - Suggestions are given to move the king to a square
> that is under attack.
> >> >> >> >> >>> > - Suggestions are given to move a piece that is
> absolutely pinned.
> >> >> >> >> >>> > - For a piece that can put itself into an absolute pin,
> suggestions are given to move that piece that would not place it into an
> absolute pin.
> >> >> >> >> >>> > - For a piece that can capture a piece attacking the
> king, suggests are given to move that piece that does not capture that
> piece or place it into an absolute pin.
> >> >> >> >> >>> >
> >> >> >> >> >>> > If the user clicks such an illegal suggestion, the
> follow message is displayed.
> >> >> >> >> >>> > > "Invalid, your king may be in check"
> >> >> >> >> >>> >
> >> >> >> >> >>> > This message makes me think that I have missed some
> case....that the game can suggest a move that is illegal for some reason
> other than the king being under attack after the move.  However, I have
> been unable to find such a case.
> >> >> >> >> >>> >
> >> >> >> >> >>> > When my children play chess and their king becomes
> checked, they click the suggested moves to get out of check, but many of
> them are illegal and display that message to them.  I would prefer if those
> illegal moves were not suggested.
> >> >> >> >> >>> >
> >> >> >> >> >>> > Would making en passant possible and removing illegal
> move suggestions be welcome changes to the chess activities?
> >> >> >> >> >>> >
> >> >> >> >> >>> > --
> >> >> >> >> >>> > Tyson Williams
> >> >> >> >> >
> >> >> >> >> >
> >> >> >> >> >
> >> >> >> >> > --
> >> >> >> >> > Tyson Williams
> >> >> >
> >> >> >
> >> >> >
> >> >> > --
> >> >> > Tyson Williams
> >
> >
> >
> > --
> > Tyson Williams
>


-- 
Tyson Williams
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/gcompris-devel/attachments/20200620/be5a58ff/attachment-0001.htm>


More information about the GCompris-devel mailing list