Ratings & Comments
And of course, the big question: Why don't I have at least one Imitator piece in Unnecessarily Complicated Chess?
I need to go fix that.
@Fergus OK, I wanted to review a past game of Xhess. I picked Wed dec 13 2017. 23 moves, the last move was a resgin. so far so good. I click orentation 2nd palyer on the drop down list box. I click go back to starting position. OK so far so good. Now the view buttons contain a ">" go to next move button. I click that. next move. good. I click again next move. good. I do this four times and one of the viewing button becomes a "@". There is an info message: "Lacking data to view this position. To view whole game, load in last move.". From that point on viewing moves becomes difficult. Can you view a prior past game of xhess and see if the view functionality is working as you like? thanks. Jim.
one of the viewing button becomes a "@". There is an info message: "Lacking data to view this position. To view whole game, load in last move.".
This means you loaded the game from an earlier position instead of from the latest position. You might have done this accidentally by clicking the View button, which used to be the only way to navigate through the moves of a game. You should follow the instructions and load it from the latest position. Click on the >|
button, then click on the View button. This will load the game at the last move, making all past moves accessible without the need to reload any of them.
@fergus I am playing a copper pocket shogi game, and when you play against another person there is a preview button and a confirm button. It seems to me that when you press the confirm button I am getting error messages in the "post move section of the code". If I had to guess the variable dollar moved is either not getting populated or it is getting populated in a different way. If I had to guess, when you get to the confirm button the variable dollar moved contains the previous move, and not the preview move. If you want we could play a shogi game so that you can see what I mean. Jim.
*** you fixed it thank you.
@fergus, one of our games is stuck. The error message is:
Syntax Error on line 396
MOVE: @ f2-f1 is not a valid expression, because @ is not a recognized piece, coordinate, command, or subroutine.
I just fixed that. I think a bug (which I hope I got rid of) introduced an almost duplicate move in the movelist without any encryption of the piece label. Removing that line fixed it.
def White_Elephant checkleap #0 #1 2 2 or checkleap #0 #1 1 1 ; def White_Elephant-Range mergeall leaps #0 2 2 leaps #0 1 1 leap #0 0 1;
set White_Elephant-Desc "The %s may leap two spaces in any diagonal direction, or go backwards 1 space if the space is empty.";
def Black_Elephant checkleap #0 #1 2 2 or checkleap #0 #1 1 1; def Black_Elephant-Range merge leaps #0 2 2 leaps #0 1 1; set Black_Elephant-Desc "The Elephant may leap two spaces in any diagonal direction, and may move one space backward if the square is empty.";
*** What do I need to do to make a non-capture move that is 1 square south?
For potential moves, you need to check whether the space is empty, and for actual moves you need to check whether a capture has been made. See my code for the Cannon for an example of how to do this.
Does this work?
def White_Elephant checkleap #0 #1 2 2 or and checkaleap #0 #1 0 -1 empty where #0 0 -1;
def White_Elephant-Range mergeall leaps #0 2 2 where #0 0 -1;
def Black_Elephant checkleap #0 #1 2 2 or and checkaleap #0 #1 0 1 empty where #0 0 1;
def Black_Elephant-Range mergeall leaps #0 2 2 where #0 0 1;
No, this may work for potential moves, but it will not work for actual moves. I believe you should replace "empty where #0 0 -1" with "cond empty #0 capture empty #1". Also, the function would be better optimized for most legal moves, as well as for testing for check on the King, if you reversed its two parts. This will also allow you to use breaking logic all the way through.
def White_Elephant checkaleap #0 #1 0 -1 and cond empty #0 capture empty #1 or checkleap #0 #1 2 2;
def Black_Elephant checkaleap #0 #1 0 1 and cond empty #0 capture empty #1 or checkleap #0 #1 2 2;
I think @arx is the owner of Skica. I am playing a game right now. When the other player did a castle move, the king disappeared. So I think the code needs a tweak to fix that. Also, can you add "pass" as a valid move? This way it is possible for people to communicate without making moves.
@arx, I think I tried that, and it did not work. I'm putting the code down for a while, so I don't get frustrated.
The elephant to me is a diagonal mover. It may leap 1 or two squares. I want to make a variant of the elephant that has the ability to change its diagonal color (checkered board). The changing of color is a special move.
I think the original suggestions I gave were mistaken.
def White_Elephant checkaleap #0 #1 0 -1 and cond empty #0 capture empty #1 or checkleap #0 #1 2 2;
def White_Elephant checkaleap #0 #1 0 -1 and cond empty #0 not capture empty #1 or checkleap #0 #1 2 2 or checkleap #0 #1 1 1;
def Black_Elephant checkaleap #0 #1 0 1 and cond empty #0 capture empty #1 or checkleap #0 #1 2 2;
def Black_Elephant checkaleap #0 #1 0 1 and cond empty #0 not capture empty #1 or checkleap #0 #1 2 2 or checkleap #0 #1 1 1;
So each one first checks whether the move is a diagonal leap of one or two spaces. If it is not, it checks the condition "cond empty #0 not capture empty #1". If the origin space is empty, it is checking an actual move. So it checks whether a capture has already been made. If the origin space is not empty, it is checking a potential move. So it checks whether the destination space is still empty. If it turns out to be a capturing move, the function immediately returns false. Otherwise, it evaluates whether it is a one-space move vertically backwards.
This looks like a problem with betza.txt, so you'll have to wait till H G Muller looks at it
Hi all, I have a site I just released a web app that combines new pieces (royalty family, ghost family, equus family), spells (arcana - badges that are specific to a player that allow you to bend rules of the game like castling through check, alternate piece move patterns, and square conditions to name a few) - the engine validates and evaluates these rules as well. It also features a campaign that takes you through a story with technical and philosophical lessons, challenges and custom matches. Happy to discuss feedback or answer questions and share a link if it's allowed.
I would say a single link to a functional chessvariants-related content is always allowed, especially in a Comment. We even have article pages especially for external links.
Thanks, I didn't want to be to advertise-y but it's open source anyway. It's tactorius.org.
One of my long term goals is to create a CWDA game that has jokers. It seems to me weird to have the joker imitate a piece from the enemy army. So I had thought at a transferrer. A piece that transfers the power from the enemy piece to it's counterpart from my army. So if such a piece should exist in the classic Betza's CWDA for example if the opponent moves a BEDE I get to move a charging rook (in a NN versus a CC). One trouble is that no programs implements this yet, firstly because that has not crossed anyone's mind. I can make my own program (I am progressing at my work for an apothecary chess program by the way) but this takes a bit of time. I'd like to try some basics. Anyone, any Idea how. Maybe the ID HG? It seems difficult to me though.
Anyway is the transferrer an interesting concept, or the joker should be enough even in this context?
Anyway is the transferrer an interesting concept, or the joker should be enough even in this context?
Well, I dislike Jokers to begin with, so perhaps I am not the right person to comment on this. In principle you can make this as complex as you want: not imitate the piece that was moved, but for each possible type define the type the Joker should move as independently. This way you could also define partical imitation: e.g. if you want to disallowe.p. capture and double push when imitating Pawns, you could define a (no-participating) Pawn without these moves, and ilet the Joker imitate that when a Pawn is moves.
This could be implented by having the user define an array to map (moved) piece types onto (imitated) piece types. In the code you would then simply replace "imitated = movedPiece" by "imitated = transfer[movedPiece]". By default the transfer array would map every type on itself.
You mean, this can be done in the ID? I mean without you putting in extra work.
No, it would require some extra programming. But not very much.
As you wish. Thanks for your input, though!
Tactorius V2.0.0 has been released. Come check out the new spells like dyads (move twice, no captures), offerings, and new modifications. New pieces: Valkyrie and Herring (must be captured if legal). Explore the spells in quickplay or challenge yourself in the campaign. tactorius.org
25 comments displayed
Permalink to the exact comments currently displayed.
At least in my case that's very much the reason; in principle the dicussion is very interesting (especially since a game I've been thinking about would involve a closely‐related, if potentially even more powerful (though less apparently‐random) piece)
My impression is that jokers are a bit like Querquisites and Smess/Ivory‐Tower pieces, in that they depart substantially enough from normal Chess dynamics that they'd take a good bit of learning to handle. And in their particular case, the art of dealing with them is in part (principally?) the fact that they reduce the value of strong pieces, especially if well placed: you can't freely move the queen if there's a joker ready to copy its move while still being worth (on average, presumed — though of course this ‘chilling’ effect increases its value correspondingly to the powerful pieces on the board) less.
I'd be interested to see how Jokers handle in games with (a small number of) really powerful pieces. I'd almost predict that capturing the jokers to free the power pieces (with maybe some judicious moves by the latter in between either while the J is still hidden in the setup position, or to give check) would be an important middle‐game theme.
But in any case for now you're probably one of the people here with most experience with the J :)