Comments/Ratings for a Single Item

I have just read that thismove does not work in premove
All the more reason to not do anything there.
Very little succes s far though. This is what I have so far:
@HG Muller & @Fergus Duniho
I have looked through the musketeer chess preset and recapped a bit of the programmer's guide. I have also tried a few things. But still I have no true clue on how to do the gating. Any help with clues is welcomed. Don't bother too much though. I know you guys are busy. But some hints to where I put my code and what that code should be are very welcomed.

But some hints to where I put my code and what that code should be are very welcomed.
I think the variable 'mln' gives you the current move number in the Post-Move sections. What you want is special treatment for the first few ('prelude') moves, and then the normal procedure possibly followed by gating when this would be required. So something like:
if == mln 0: ... // do what has to be done for the first prelude turn elsif == mln 2: ... // do what has to be done for the third prelude turn else: gosub HandleMove true; set waiting where #ori 0 -1; // square behind moved piece if not flag #ori and == 1 rank #ori != @ space #waiting: // virgin first-rank piece with something behind it add space #waiting #ori; // gate the piece empty #waiting; endif; endif;
You stil would have to suppress normal moves for the pieces waiting to be gated. I suppose the easiest way to do this define an alternative version of those that looks the same but does not have any moves, and put those on 0th rank. When its turn comes to be gated you then put the version with moves on the board.
Thanks, I look into it soon!
I think the variable 'mln' gives you the current move number in the Post-Move sections.
It does not. I have made that mistake too and had to correct it. To use $mln
to get the move number, you need to get $mline[$mln]->movenum
. $mline is an array with a separate entry for each line of the movelist, but besides containing actual moves, it contains comments. $mln
is the index that a line has in this array, but when some lines are comments, it will go out of sync with the move number.
GAME Code has turn
, which will return $mline[$mln]->turn
, but it doesn't currently have anything returning $mline[$mln]->movenum
.

It does not. I have made that mistake too and had to correct it. To use
$mln
to get the move number, you need to get$mline[$mln]->movenum
.
This is somewhat important, because the first things that the HandleMove routine does in the betza.txt include after the move is parsed is:
set all == mln $maxmln; // indicates last move
Note there is no $ there, so we might be talking about different things, and this one might be a legacy variable. The purpose here is to determine whether the subsequent move generation needs to generate all pseudo-legal moves, and compare the input move against those for testing its legality. Or whether it can simply assume the move is legal, because it is not the final move of the stored game, and thus must already have passed the legality test on the turn where it was entered. If the latter is the case only the moves with implied side effects are generated, (e.g. e.p. capture or castling), for the purpose of reconstructing the side effect, and apply it to the board together with the entered move.
I cannot image how this would work if mln was not the current move number.
set all == mln $maxmln; // indicates last move
Note there is no $ there, so we might be talking about different things, and this one might be a legacy variable.
This operator just outputs the value of $mln.
I cannot image how this would work if mln was not the current move number.
It works because you are comparing mln with its maximum value. When there are comments, $maxmln will be greater than any move number, but it will be no higher than mln will eventually reach.

OK, so the betza.txt code, which thus aims to test for whether the move is the one that was just entered, would work fine even in the presence of comments?
And the code to test for whether we are in prelude should look like
if == 0 $mline[$mln]->movenum:
?
if == 0 $mline[$mln]->movenum:
That is mixing GAME Code with PHP. GAME Code does not support classes with properties or write out array elements with brackets, and it doesn't provide read access to $mline. But you can use the value of turn
with your knowledge of which side you're concerned with to determine where you are in a game.
@Fergus & @ H.G.
So basically it can't be done yet!

If I understood Fergus correctly all that is needed to do it is compare the value of turn instead of mln. Like
if == 1 turn: ... // code for first prelude step elseif == turn 2: ... // code for second prelude step else: gosub HandleMove true; ... // code for performing the gating if needed endif;
The only thing I am still in doubt about is whether the current betza.txt include file on which the PTA-generated code relies tests for a move being the final one in a safe and reliable way. Because it uses mln for the test rather than turn. But that would affect every preset automated through the PTA, and I have never encountered a case where it did not work.
It is definitely not that easy.
One thing is that when I try to make the move to a1 (for example), which would be an eligible brouhaha square I get an error saying that said move it is not even a pseudo legal move. By the way for now I have disabled the brouhaha squares and left the whole board intact (meaning no ----). But I could not comment the set brouhaha instruction in the pregame code.
Another thing is that the regular moves of all pieces are still displayed despite the fact that they are not legal anymore (i have setsystem the legalmoves array to () or even to null).
No matter I have made some progress!
The only thing I am still in doubt about is whether the current betza.txt include file on which the PTA-generated code relies tests for a move being the final one in a safe and reliable way. Because it uses mln for the test rather than turn.
I have just added thismovenum and maxmovenum. These will return $mline[$mln]->movenum and $mline[$maxmln]->movenum. It's likely that maxmovenum will be returning the same value as movenum, which returns $movenum, but using it will add clarity to your code.
Acording to the rules of the game, first white has to place it's two gating pieces behind. Then black his two. I got stuck while trying to do both move in the same turn. I have tried using continuemove, but I get into infinite loops no matter what I had done.
What the rock is with bent riders? They bend on 90 degrees instead of 45!
And it is on my Windows laptop with Edge! while on iPhone with Safari it works fine...
how to encode Hexmaster to not earn too much lines of code for legs which go out from board and wich have no use but they exist to be unable to copy on phone for making Game Courier preset, so I used to use my laptop which fails to enable Oracle correctly?..
in other words, please shorten the notation of Hexmaster to match the 8x10 board.

Try to refresh the browser cache. I suspect you still have an old version of betza.js there, which still requires the deflection angle to be fully specified with directional modifiers (fs).
What is a Hexmaster?
Please, tap here, use this to learn about
and sorry, but I’ll have no access to my laptop next several days.
This is an interesting page and I am still digesting the information. I was hoping to use this applet to test my chess variant. It is a version of dark chess combined with chess 960 influence.
I could not yet figure out whether I can use the applet the create the following version:
- Board size and pieces are as in regular chess.
- The starting position has only the pawns for both players.
- The first move is to place your pieces in the first (or last) rank in any order. (Unlike in chess 960, there are no restrictions whatsoever. You can even have two same colored bishops.)
- This is a version of dark chess. You can see only the part of the board that your pieces can "see". A piece can see all squares directly around it and all squares it could move to as if no own pieces would be in the way. That means that a queen can see in the 8 directions until its view is blocked by an enemy piece. (The enemy piece is seen, but not beyond.) Based on this definition a knight in the center can see the 16 squares. The king has special seeing ability. The king can see much more than other pieces. It can see everything a queen would see that is on a square a king can move to. Note that this does not imply that the king cannot move onto an attacked square. For example, if the white king is on E1, and black has a bishop on F3 and a knight on G4, the king cannot see the night. If other pieces of white cannot see the night either, then the white king may decide to move to F2 and be captured.
- The goal is to capture the king. No stalemate.
- No castling.
- No double pawn move or en passant.
- 50 move rule applies.
In the starting position you only see some of your opponents pawns as they block your view. This means you do not see where your opponent's king or other major pieces are when you start.
The two players see different parts of the board and so this is best suited for computer play (or two board and arbiter is needed), hence I hoped to model it with this applet.
Is that possible? Thanks a lot!

Is that possible?
I am afraid not. The applet serves two purposes: act as an 'electronic chess board', where a single player (or a pair sitting before the same computer display) can see and manipulate the entire board, or to play against an AI. But the AI handles two-player zero-sum games with complete information. For games where (a different) part of the game state is hidden for each player, like in your variant, you would need a completely different type of AI. Conventional chess engines are completely useless for that.
In this Play-test applet I haven't found out how to promote multiple pieces to different promotions. How would an HTML-Code for Variants such as Shogi look like?
25 comments displayed
Permalink to the exact comments currently displayed.
I have just read that thismove does not work in premove