Check out Symmetric Chess, our featured variant for March, 2024.


[ Help | Earliest Comments | Latest Comments ]
[ List All Subjects of Discussion | Create New Subject of Discussion ]
[ List Latest Comments Only For Pages | Games | Rated Pages | Rated Games | Subjects of Discussion ]

Comments/Ratings for a Single Item

LatestLater Reverse Order EarlierEarliest
Chess. Play Chess online with other people, using Game Courier, a PBM system that works with any web browser on any computer.[All Comments] [Add Comment or Rating]
M Winther wrote on Sun, Dec 19, 2010 08:48 AM UTC:
Fergus, I am having problems with the *ask* command. It seems to end up in an eternal loop. When I choose an alternative it merely asks again. I even use a constant to prevent eternal loops, but it doesn't help. (In the following code I use 'skip' for testing purposes):

[...]
elseif equal moved K;
    set legal or checkleap origin dest 1 1 checkleap origin dest 1 0;
    if var legal; 
      if and equal dest c1 equal #wcastletest 0;
        unsetconst wcastletest; 
        setconst wcastletest 1;
	if or and equal origin b1 and equal @ space d1 equal R space a1
              and equal origin d1 and equal @ space b1 equal R space a1;
	   ask 'Do you want to castle long?' 'y' 'skip' 'n' 'skip';
        endif; 	
      endif;
    else;
[...]
    endif;
endif;


Nor can I get 'askpromote' to work. This generates an eternal loop:

if and var legal equal rankname dest 8;
      askpromote Q R B N;
endif;

/Mats

M Winther wrote on Sat, Dec 18, 2010 06:39 AM UTC:
Thanks for the clarification.
/Mats

🕸📝Fergus Duniho wrote on Fri, Dec 17, 2010 10:52 PM UTC:
Since you are using an if-elseif statement, the elseif code will not get executed when the if code has been executed. If you change your elseif to an if (and close off the previous if with an endif), you can see that it does immediately recognize the change in the variable's value. As your code exists, it is still going to create an infinite loop. Note that this is actually an infinite meta-loop, not a loop inside the program. For each move, Game Courier constructs and runs a GAME Code program from the beginning. Each time it runs this program, the flag firstturn gets turned on, causing your 'if flag firstturn' code to run. Since extendmove appears in this code block, it constructs and runs a new GAME Code program before bringing you to the Verify form. It then executes extendmove again, and again and again for each new move you make, adding all the moves into one long move statement for White's first move. If you replace your firstturn flag with a firstturn constant whose value you change once by deleting it and creating it again with a new value, this should break you out of the infinite loop. Unlike a variable, a constant exists in the log, and you can change what its value will be at the beginning of the program used for subsequent moves. What I have done instead of this in my old Korean Chess preset is to use extendmove only when certain moves are made, which I then translate into other moves that do not call on the use of extendmove.

M Winther wrote on Fri, Dec 17, 2010 08:14 AM UTC:
Of course, 'extendmove' must be conditioned, but it seems like the flags don't change their value when 'extendmove' is used(?). Correct me if I'm wrong; if I change a flag in order to make extendmove conditional, the flag doesn't actually change its value until the other *colour* gets the turn. 

Example: 

if flag firstturn;

  if == origin e1 and == dest g1:
    setsystem moves 'swap e1 g1';
    add K g1 N e1;
  endif;

  unsetflag firstturn; 
  setflag secondturn; 
  extendmove;

elseif flag secondturn;

  if equal moved Q;
    setsystem moves 'swap origin dest';
    add moved origin moved dest;
  endif;

  unsetflag secondturn; 

endif;

In the above code 'secondturn' is executed by the same colour. But this code is never executed because the flag 'secondturn' does not actually change its value until the other player gets the turn. The command extendmove seems to have this effect, if I'm correct.

/Mats

M Winther wrote on Fri, Dec 17, 2010 06:33 AM UTC:
Good. How about the problem that the board does *not* turn (in single mode) when first player is set to Black?
/Mats

🕸📝Fergus Duniho wrote on Fri, Dec 17, 2010 05:44 AM UTC:
I now seem to have extendmove working well in both solitaire and correspondence modes. Just remember that extendmove will create an infinite loop when used unconditionally. It is analogous to the continue command.

🕸📝Fergus Duniho wrote on Fri, Dec 17, 2010 12:00 AM UTC:

Okay, the problem on my end is that the extendmove command is not yet working properly in solitaire mode. But my tests indicate that it is working properly in correspondence mode.

The problem on your end is that putting extendmove as the final command in the postmove code creates an infinite loop. It's not a proper use of the command. It should only be used within a conditional statement that checks whether it needs to be called. In this Chess game between myself and my alter ego, extendmove is the only command, occurring in post-move1 by itself. It does not turn the board around, but it creates an infinite loop in which White can keep moving one piece after another but is never able to send the move to his opponent. You can try it yourself.


M Winther wrote on Thu, Dec 16, 2010 08:04 AM UTC:
Fergus, if I insert it *last* in the post-move code, as the final command (or as the only command), then the move is extended, but the board turns. You can test it yourself, it takes 15 seconds.
/Mats

🕸📝Fergus Duniho wrote on Thu, Dec 16, 2010 05:13 AM UTC:
Where precisely are you inserting it?

M Winther wrote on Thu, Dec 16, 2010 04:53 AM UTC:
But I'm not doing anything. I just insert the statement 'extendmove' and the board still turns. So there is nothing to look at. It works, because I can move the same colour again, but from the top of the board. This is confusing, of course.
/Mats

🕸📝Fergus Duniho wrote on Tue, Dec 14, 2010 05:41 PM UTC:
Mats, In case you don't know the difference between show and tell, you haven't shown me anything yet. If I'm to help you, I need to actually see what you're doing, not just be told what you're doing.

🕸📝Fergus Duniho wrote on Tue, Dec 14, 2010 05:38 PM UTC:
Because one move does the job, and I'm now using the new rewritemove command with it, because the repositioning should be done before either player moves.

M Winther wrote on Tue, Dec 14, 2010 04:44 PM UTC:
Fergus, why don't you try to implement your Janggi with two relocation moves in a row, and make use of extendmove. 
/Mats

🕸📝Fergus Duniho wrote on Tue, Dec 14, 2010 12:27 AM UTC:

I need you to show me the preset you are using the extendmove command in.


M Winther wrote on Mon, Dec 13, 2010 06:33 PM UTC:
When I use extendmove I hoped to be able to make one more move with the same player. This seems to work, however, the board has turned. If white is going to make one more move, he has to do it with his pieces at the top of the board, and this is awkward.
/Mats

🕸📝Fergus Duniho wrote on Mon, Dec 13, 2010 04:16 PM UTC:
You'll need to show me what you're actually doing with the command.

M Winther wrote on Mon, Dec 13, 2010 06:40 AM UTC:
However, I have a problem. If the game is started with Black as the first party to move, then the board doesn't turn when a move is made. It's a bug in Game Courier. (This is regardless of extendmove.)

Moreover, after 'extendmove' the board is still turned, which forfeits the purpose of the command, I think.
/Mats

M Winther wrote on Sun, Dec 12, 2010 02:50 PM UTC:
Wonderful! Thanx! I think I can attract more chessplayers to the site to test my Relocation variants, when I have implemented them, because this is chess close to Fide chess. What was the latest Anand vs. Carlsen game all about? I say computer preparation far into the middle game. I don't believe in this development.
/Mats

🕸📝Fergus Duniho wrote on Sun, Dec 12, 2010 04:01 AM UTC:

The extendmove command should do what you want. It does not change the turn order, and it does not force anyone to pass a turn. What it does is return the player to the form for making a move, showing the moves as they have already been made for that turn, and allowing the player to make another move. It then appends the new move to the past moves. It may be used once or multiple times for longer moves, depending on what is called for. When using this command, care should be taken that it only be used for the current move. This may involve writing code that distinguishes between partial moves and complete moves. Basically, it lets you use the mouse to do what you could always do previously by typing moves manually. See my current code for Korean Chess for an example similar to what you want. It allows the player to swap one or both pairs of Knight and Elephant, then immediately make a move, all using the mouse. But I'm going to change this in a new preset, because this doesn't follow the rules of Korean Chess strictly.


M Winther wrote on Sun, Nov 28, 2010 07:15 AM UTC:
Good. Now you only need to implement a way of disrupting the move order,
e.g. give a command, for instance, 'keepturn' and the turn remains with
the player who just moved. In this way I can implement my revolutionary
Relocation Variants. Perhaps this could be implemented by forcing a pass move(?).
/Mats

🕸📝Fergus Duniho wrote on Sun, Nov 28, 2010 03:44 AM UTC:
I have added a new command to the Pawn subroutines in the chess.txt and chess2.txt include files. This new command, called askpromote, will ask you what you want to promote a Pawn to when you advance a Pawn to the last rank without promoting it first. This is useful with point-and-click movement, in which you get to make only the first part of your move before the move gets entered into Game Courier. This will affect other presets that use these subroutines. I have made use of the wprom and bprom variables, which are arrays of all the pieces each Pawn may promote to, based on the assumption that a Pawn may promote to any piece of its own color originally on the board besides a King and a Pawn. Since names aren't programmed into the presets, it uses piece images to identify the pieces.

linhaoying wrote on Thu, Nov 18, 2010 12:10 PM UTC:Average ★★★
not fun

🕸📝Fergus Duniho wrote on Sun, Jan 4, 2009 08:23 PM UTC:
For interested developers, I have added a link to a Chess preset that uses the chess2 include file.

kween wrote on Wed, Sep 20, 2006 06:54 AM UTC:Good ★★★★
the games no fun if you cheat

shivangi wrote on Mon, Apr 24, 2006 07:30 AM UTC:Excellent ★★★★★
Good Site seems to be Intresting

25 comments displayed

LatestLater Reverse Order EarlierEarliest

Permalink to the exact comments currently displayed.