summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Klemkow <j.klemkow@wemelug.de>2012-11-12 07:43:45 +0100
committerJan Klemkow <j.klemkow@wemelug.de>2012-11-12 07:45:56 +0100
commit962b42b7a3ab20a90da859f361f1694649f22f5b (patch)
tree5f51c8a7b217e54789ceb01efc7800981097dcb3
parentff7f3f2aeb3d0a7a8ab5ecafc9da980d50d818c0 (diff)
downloadwbs-962b42b7a3ab20a90da859f361f1694649f22f5b.tar.gz
wbs-962b42b7a3ab20a90da859f361f1694649f22f5b.tar.bz2
wbs-962b42b7a3ab20a90da859f361f1694649f22f5b.zip
Add player rules wrapper for battle program.
-rw-r--r--battle.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/battle.c b/battle.c
index 4ee01df..40e9bf9 100644
--- a/battle.c
+++ b/battle.c
@@ -4,6 +4,26 @@
#define __GPROLOG_FOREIGN_STRICT__
#include "gprolog.h"
+char player(char *algorithm, char a, char b)
+{
+ char move = -1;
+ PlTerm arg[3];
+
+ int func = Pl_Find_Atom(algorithm);
+
+ Pl_Query_Begin(PL_TRUE);
+
+ arg[0] = Pl_Mk_List();
+ arg[1] = Pl_Mk_Variable();
+
+ if (Pl_Query_Call(func, 3, arg)) {
+ move = Pl_Rd_char(arg[1]);
+ }
+ Pl_Query_End(PL_RECOVER);
+
+ return move;
+}
+
int pay(char a, char b)
{
int payment = -1;
@@ -31,6 +51,7 @@ main(int argc, char *argv[])
Pl_Start_Prolog(argc, argv);
printf("pay: %d\n", pay('d', 'c'));
+ printf("move: %c\n", player("tit4tat", 'd', 'c'));
Pl_Stop_Prolog();
return 0;