You may be wondering how to prevent some actions to be chosen by Perkun (http://sourceforge.net/projects/perkun/) in some situations. Download the file dorban_general.perkun. Take a look at the beginning. There are two input variables:
input variable where_is_Dorban:{place_Wyzima,place_Shadizar,place_Novigrad};
input variable do_I_see_vampire:{false,true};
There are three places (Shadizar, Wyzima and Novigrad). I have borrowed the names from the fantasy literature, two from Sapkowski and one from Howard. There are also three corresponding actions plus do_nothing:
output variable action:{do_nothing,goto_Wyzima,goto_Shadizar,goto_Novigrad};
How do we tell Perkun that while being in Wyzima it is no point to use the action goto_Wyzima? There is a special instruction for that used in the model section. It is called "illegal". Grep the file dorban_general.perkun for it:
$ grep "illegal" dorban_general.perkun
illegal({where_is_Dorban=>place_Wyzima, do_I_see_vampire=>false},{action=>goto_Wyzima});
illegal({where_is_Dorban=>place_Wyzima, do_I_see_vampire=>true},{action=>goto_Wyzima});
illegal({where_is_Dorban=>place_Shadizar, do_I_see_vampire=>false},{action=>goto_Shadizar});
illegal({where_is_Dorban=>place_Shadizar, do_I_see_vampire=>true},{action=>goto_Shadizar});
illegal({where_is_Dorban=>place_Novigrad, do_I_see_vampire=>false},{action=>goto_Novigrad});
illegal({where_is_Dorban=>place_Novigrad, do_I_see_vampire=>true},{action=>goto_Novigrad});
The syntax is:
illegal(VISIBLE_STATE_QUERY,ACTION_QUERY);
The VISIBLE_STATE_QUERY contains the input variable values, while the ACTION_QUERY contains the output variable values. That is it, Perkun won't try to use these actions when these situations occur!
No comments:
Post a Comment