Could anyone make me a Windows compile...?

Discussion of chess software programming and technical issues.

Moderator: Ras

User avatar
hgm
Posts: 28480
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: Could anyone make me a Windows compile...?

Post by hgm »

Latest XBoard commit understands jO as castling with piece one step away from the edge, as in Omega Chess. So

piece K& KisjO2
piece Q& QisjO2

would do it. (Dark squares are considered to be beyond the edge.)
User avatar
Evert
Posts: 2929
Joined: Sat Jan 22, 2011 12:42 am
Location: NL

Re: Could anyone make me a Windows compile...?

Post by Evert »

Two problems I noticed in this position:

1**********1/*1r3k1nr1*/*pppp2pppp*/*w1cn2q3*/*1b2Cp1c2*/*1W2p2b2*/*1P2P5*/*3Q3P2*/*9W*/*P1PP1PPP1P*/*1RNB1KBNR1*/1**********1 b KQkq - 12 15

1. XBoard didn't record the castling possibilities when I copied the position (it had "-", I added them in by hand)
2. Sjaak tried to castle (and sent "O-O-O"), but the move was then rejected by its second instance. XBoard prints "xboard: Illegal move "Xg12xc12" (rejected by second chess program)" in the console. I stupidly overwrote the debug log file, but I'll try to reproduce it in another game.
In the terminal, Sjaak accepts all of O-O-O, g11e11 and g11c11 (KxR) as castling moves.

EDIT: happened again almost immediately in a second game. It looks like the SAN interpretation of O-O-O/O-O castling doesn't take the actual rank the king is on into account and just assumes that it's the first/last rank:

Code: Select all

36097 <second:   2   258      0       505  31. Ke2 Qj9 32.  g4
36098 <second:   3   243      0       659  31. Ke2?
36098 <second:   3   217      0       828  31. Ke2?
36098 <second:   3   193      1      1920  31. Ke2 Qj9 32. Qe5 Qh7
36099 <second:   4   162      2      4981  31. Ke2?
36110 <second:   4   202      8     15479  31. Ke2!
36133 <second:   4   212     10     21310  31. Ke2 Qj9 32. Qe5 Qj7 33.  g4 Qh7
36206 <second:   5   199     18     38926  31. Ke2 Qj9 32. Qe5 Nd8 33.  i5  i7
36206 <second: move f2e2
36207 >first : time 274
36207 >first : otim 292
book hit = (NULL)
36207 >first : f2e2
36287 <first :   2  -158      0       393  31. ... O-O-O 32. Qg7 Qxh3
(2-type) castling 6 2
36287 <first :   3  -158      0       621  31. ... O-O-O 32. Qg7 Qxh3
(2-type) castling 6 2
36288 <first :   4  -165      0      1087  31. ... O-O-O 32. Qg7 Qh5 33.  g4 Qxh3
(2-type) castling 6 2
36288 <first :   5  -155      6     11862  31. ... Kg10!
36389 <first :   5  -182     18     31627  31. ... O-O-O 32.  g4 Qg6 33. Qe5  f6
(2-type) castling 6 2
36389 <first : move O-O-O
(2-type) castling 6 2
36390 >second: time 292
36390 >second: otim 256
book hit = (NULL)
36390 >second: g12c12
36392 <second: Error (Illegal move or unknown command): g12c12
User avatar
hgm
Posts: 28480
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: Could anyone make me a Windows compile...?

Post by hgm »

Evert wrote:Ah, that is the obvious solution, of course: if the first piece it finds isn't the castle-partner, then no castling would be possible anyway.
Although, wouldn't this allow castling with Nb1 in ortho-chess?
When you manage to input e1c1 while there is a Knight on b1 (e.g. because legality testing is off), then indeed it would move the Knight to d1 rather than the Rook. I don't see that as more unnatural than making the Rook jump over the Knight. Usage of the Rook can be forced by the KxR notation. The legality testing will decide which of those you can enter, or otherwise the engine.
Has anyone ever done something like that?
Not that I know. But it could be a theoretical possibility, e.g. in a Grand-Chess-like setup. Or in 9x9 Shogi.
User avatar
hgm
Posts: 28480
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: Could anyone make me a Windows compile...?

Post by hgm »

Evert wrote:EDIT: happened again almost immediately in a second game. It looks like the SAN interpretation of O-O-O/O-O castling doesn't take the actual rank the king is on into account and just assumes that it's the first/last rank:
Indeed, this is the case. I will look into it.