reset password
Author Message
rabbott
Posts: 1649
Posted 22:08 Apr 28, 2014 |

Here is one of the rules for Alquerque, which we looked at last time. (It transfers control from red to black.)

(<= (next (control black))
    (true (control red)))

Can you explain why the rule says  (true (control red)) instead of just  (control red)?

In other words, what function does the predicate true play in GDL?

Last edited by rabbott at 22:09 Apr 28, 2014.
Eric Liao
Posts: 158
Posted 22:38 Apr 28, 2014 |

There is no function to predict which (red or black) is currently playing

(<= (base (control ?role))

(role ?role) )

At the very beginning where they define the control, they only specify the control has be role, where role can be either red or black at the end of this GDL.

In other word, besides using (true (control red)) there is no other functions to determine control by red because if you call (control red) it will return true because control function is defined to be one of the role (red or black).

rabbott
Posts: 1649
Posted 22:47 Apr 28, 2014 |

I'm not following what you are saying. This is not a matter of predicting anything. The rule that you quote doesn't really define control. It says that one can write (control <x>) as part of a state if <x> is a role.  As you say, there are also rules that say that both red and black are roles. 

But it's not true that a call to (control red) will return true. There is no rule to that effect.

It's really too bad that the videos didn't spend more time explaining GDL and how the rules determine how the game engine works. 

rabbott
Posts: 1649
Posted 23:35 Apr 28, 2014 |

Ask yourself this question: how would you write a game engine for games specified by GDL rules?  How does that game engine work? How does it use the GDL game definition to determine what to do after each move?

At each turn the game engine gets input from each player (a Move). It then updates its record of the game state. How does it keep track of that state? Then it sends a message back to the players. How does it decide what that message should contain?

Last edited by rabbott at 23:39 Apr 28, 2014.