コード例 #1
0
ファイル: play_gtp.c プロジェクト: MarcosPividori/Go-player
/* Function:  Compute the score of a finished game.
 * Arguments: Optional random seed
 * Fails:     never
 * Returns:   Score in SGF format (RE property).
 *
 * Status:    GTP version 2 standard command.
 */
static int gtp_final_score(char *s) {
  float final_score = game->get_final_score();
  gtp_start_response(GTP_SUCCESS);
  if (final_score > 0.0)
    gtp_printf("W+%3.1f", final_score);
  else if (final_score < 0.0)
    gtp_printf("B+%3.1f", -final_score);
  else
    gtp_printf("0");
  return gtp_finish_response();
}
コード例 #2
0
ファイル: play_gtp.c プロジェクト: MarcosPividori/Go-player
/* Function:  List all known commands
 * Arguments: none
 * Fails:     never
 * Returns:   list of known commands, one per line
 *
 * Status:    GTP version 2 standard command.
 */
static int gtp_list_commands(char *s) {
  int k;
  UNUSED(s);

  gtp_start_response(GTP_SUCCESS);

  for (k = 0; commands[k].name != NULL; k++)
    gtp_printf("%s\n", commands[k].name);

  gtp_printf("\n");
  return GTP_OK;
}
コード例 #3
0
ファイル: interface.c プロジェクト: fairy-tale/GoMaterial
static int
gtp_list_commands(char *s)
{
  int i;

  gtp_start_response(GTP_SUCCESS);

  for (i = 0; commands[i].name; i++)
    gtp_printf("%s\n", commands[i].name);

  gtp_printf("\n");
  return GTP_OK;
}
コード例 #4
0
ファイル: play_gtp.c プロジェクト: MarcosPividori/Go-player
/* Function:  Show debug info related to patterns to stdout.
 * Arguments: none
 * Fails:     never
 * Returns:   nothing
 *
 */
static int gtp_match_patterns(char *s) {
  UNUSED(s);

  gtp_start_response(GTP_SUCCESS);
  gtp_printf("\n");
  game->match_patterns();
  return gtp_finish_response();
}
コード例 #5
0
ファイル: play_gtp.c プロジェクト: MarcosPividori/Go-player
/* Function:  Write the debug info to stdout.
 * Arguments: none
 * Fails:     never
 * Returns:   nothing
 *
 */
static int gtp_debug(char *s) {
  UNUSED(s);

  gtp_start_response(GTP_SUCCESS);
  gtp_printf("\n");
  game->debug();
  return gtp_finish_response();
}
コード例 #6
0
ファイル: play_gtp.c プロジェクト: MarcosPividori/Go-player
/* Function:  Write the position to stdout.
 * Arguments: none
 * Fails:     never
 * Returns:   nothing
 *
 * Status:    GTP version 2 standard command.
 */
static int gtp_showboard(char *s) {
  UNUSED(s);

  gtp_start_response(GTP_SUCCESS);
  gtp_printf("\n");
  game->show_board(gtp_output_file);
  return gtp_finish_response();
}
コード例 #7
0
ファイル: interface.c プロジェクト: fairy-tale/GoMaterial
static int
gtp_final_status_list(char *s)
{
  int n;
  int i, j;
  int status = UNKNOWN;
  char status_string[GTP_BUFSIZE];
  int first_string;

  if (sscanf(s, "%s %n", status_string, &n) != 1)
    return gtp_failure("missing status");

  if (!strcmp(status_string, "alive"))
    status = ALIVE;
  else if (!strcmp(status_string, "dead"))
    status = DEAD;
  else if (!strcmp(status_string, "seki"))
    status = SEKI;
  else
    return gtp_failure("invalid status");

  compute_final_status();

  gtp_start_response(GTP_SUCCESS);

  first_string = 1;
  for (i = 0; i < board_size; i++)
    for (j = 0; j < board_size; j++)
      if (get_final_status(i, j) == status) {
	int k;
	int stonei[MAX_BOARD * MAX_BOARD];
	int stonej[MAX_BOARD * MAX_BOARD];
	int num_stones = get_string(i, j, stonei, stonej);
	/* Clear the status so we don't find the string again. */
	for (k = 0; k < num_stones; k++)
	  set_final_status(stonei[k], stonej[k], UNKNOWN);
	
	if (first_string)
	  first_string = 0;
	else
	  gtp_printf("\n");
	
	gtp_print_vertices(num_stones, stonei, stonej);
      }

  return gtp_finish_response();
}
コード例 #8
0
ファイル: interface.c プロジェクト: fairy-tale/GoMaterial
static int
gtp_showboard(char *s)
{
  int i, j;
  int symbols[3] = {'.', 'O', 'X'};
  
  gtp_start_response(GTP_SUCCESS);
  gtp_printf("\n");

  letters();
  
  for (i = 0; i < board_size; i++) {
    printf("\n%2d", board_size - i);
    
    for (j = 0; j < board_size; j++)
      printf(" %c", symbols[get_board(i, j)]);

    printf(" %d", board_size - i);
  }
  
  printf("\n");
  letters();
  return gtp_finish_response();
}
コード例 #9
0
ファイル: interface.c プロジェクト: fairy-tale/GoMaterial
/* Common code for fixed_handicap and place_free_handicap. */
static int
place_handicap(char *s, int fixed)
{
  int handicap;
  int m, n;
  int first_stone = 1;

  if (!board_empty())
    return gtp_failure("board not empty");

  if (sscanf(s, "%d", &handicap) < 1)
    return gtp_failure("handicap not an integer");
  
  if (handicap < 2)
    return gtp_failure("invalid handicap");

  if (fixed && !valid_fixed_handicap(handicap))
    return gtp_failure("invalid handicap");

  if (fixed)
    place_fixed_handicap(handicap);
  else
    place_free_handicap(handicap);

  gtp_start_response(GTP_SUCCESS);
  for (m = 0; m < board_size; m++)
    for (n = 0; n < board_size; n++)
      if (get_board(m, n) != EMPTY) {
	if (first_stone)
	  first_stone = 0;
	else
	  gtp_printf(" ");
	gtp_mprintf("%m", m, n);
      }
  return gtp_finish_response();
}