Thank you, Gunnar. I'll read about the GTP mode to play against GNUgo and
I'll use the board library to check if a movement is legal or not and other
stuffs wich has to do with the rules of the game.
Thanks again
Timón

2008/9/25 Gunnar Farnebäck <[EMAIL PROTECTED]>

> Jorge Timón wrote:
> > Hello, is the first time i suscribe to a mailing list, so if i do
> > something wrong just tell me. I'm spanish so sorry about my poor english.
>
> It all looks fine.
>
> > I'm not really interested in developing gnu go but it can be usefull for
> > me. I'm working in a genetics algorithms based learning machine and i
> > want to use GNU go to do some tests. I'll develop a computer go player
> > and i need another one to play with. GNU go seems to be perfect for
> > that.The aim is not to beat GNUgo but to learn with it. This is a piece
> > of code as i guess i have to write it:
>
> If at all possible I would recommend doing the communication with GNU
> Go over pipes or a socket using GTP mode. In this way you don't have
> to worry about the GNU Go internals and you also get the option to
> trivially switch to a newer version or switch to some other GTP
> compliant program.
>
> If you need to integrate the code tightly the safest way to find the
> necessary setup is to trace what GNU Go in GTP mode does in main()
> until it enters gtp_main_loop(), and then emulate the behavior of
> gtp_clear_board(), gtp_play(), gtp_genmove(), and a few more commands.
>
> >
> > #include "gnugo.h"
> >
> > #define MEMORY 2
> > #define BOARDSIZE 19
> > #define KOMI 5.5int calculate_heuristic(int* board, int i, int j, int
> > color);
> >
> > //my functions
> > void insert_posible_movement(int i, int j, int heuristic_value);
> > void clear_movements();
> > void best_movement(int *i, int *j);
> >
> >
> > int one_game()
> > {
> >
> > int play=2;
> > int i, j;
> > int board[BOARDSIZE][BOARDSIZE]; //can it be a char matrix instead of
> int?
> > int heur;
> >
> > Gameinfo gameinfo;
> > init_gnugo(MEMORY);
> >
> > gnugo_clear_board(BOARDSIZE);
> > gameinfo_clear(&gameinfo, BOARDSIZE, KOMI);
> > gnugo_set_komi(KOMI);
> >
> > while(play>0) {
> >
> >  //GNUgo plays with blacks
> >  gnugo_genmove(&i, &j, BLACK);
> >  if (gnugo_is_pass(i, j)) play--;
> >  else {
> >        gnugo_play_move(i, j, BLACK);
> >        play=2;
> >   }
> >
> >  //my computer plays with whites
> >  gnugo_get_board(board);
> >
> >  heur = calculate_heuristic(board, -1, -1, WHITE);
> >  insert_posible_movement(-1, -1, heur);
> >  for (int a=0; a<BOARDSIZE; a++)
> >      for (int b=0; b<BOARDSIZE; b++)
> >          if (gnugo_is_legal(a, b, WHITE)) {
> >
> >              heur = calculate_heuristic(board, a, b, WHITE);
> >              insert_posible_movement(a, b, heur);
> >          }
> >  best_movement(&i, &j);
> >  if (gnugo_is_pass(i, j)) play--;
> >  else {
> >       gnugo_play_move(i, j, WHITE);
> >       play=2;
> >  }
> >
> > } //end while
> >
> >
> >   return 0; /* gnugo_estimate_score(float *upper, float *lower) or
> > gnugo_who_wins(int color, FILE *outfile)???? */
> >
> >
> > } /* end one_game */
> >
> > my questions:
> >
> > 1 am i using any function in a wrong way?
>
> I couldn't say without trying it out myself. Neither me nor anybody
> else has actively worked with those functions for years.
>
> > 2 the board is supposed to be unsigned char, but gnugo_get_board(int
> > b[MAX_BOARD][MAX_BOARD]) look like this.
>
> gnugo_get_board converts the board information from the internal 1D
> array of unsigned char to a 2D array of ints. The casting is no
> problem since only the values 0, 1, 2 are used.
>
> > 3 how can i get the final scores?
>
> By far most easily by doing GTP communication and issuing the
> final_score command.
>
> > 4 should i use gameinfo_play_move(Gameinfo *ginfo, int i, int j, int
> color)?
>
> There's no particular gain in doing that and in fact I'd rather
> recommend not using the gameinfo stuff at all unless you really need
> it.
>
> > 5 need i all the files of gnugo-3.6?
>
> You need nothing from the regression directory and of course doc only
> contains documentation. You don't need the subdirectories below
> interface. Otherwise most of the files are needed.
>
> But, to repeat what I said in the beginning, use GTP mode if you can.
> The API functions are ill supported and as you've noticed not all that
> well documented.
>
> If you want to use GNU Go code just for handling the board logic you
> can get away with using the board library, which only involves six
> files in the engine directory: board.c, board.h, boardlib.c, hash.c,
> hash.h, and printutils.c.
>
> /Gunnar
>
>
> _______________________________________________
> gnugo-devel mailing list
> gnugo-devel@gnu.org
> http://lists.gnu.org/mailman/listinfo/gnugo-devel
>
_______________________________________________
gnugo-devel mailing list
gnugo-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/gnugo-devel

Reply via email to