Ticket #96: gunnar_7_9.10.diff

File gunnar_7_9.10.diff, 6.6 KB (added by gunnar, 6 years ago)

add semeai attack and defense codes in struct dragon_data2

  • engine/dragon.c

    RCS file: /cvsroot/gnugo/gnugo/engine/dragon.c,v
    retrieving revision 1.160
    diff -u -r1.160 dragon.c
     
    726726    set_eyevalue(&dragon2[d].genus, 0, 0, 0, 0); 
    727727 
    728728    dragon2[d].semeais                  = 0; 
     729    dragon2[d].semeai_defense_code      = 0; 
    729730    dragon2[d].semeai_defense_point     = NO_MOVE; 
     731    dragon2[d].semeai_attack_code       = 0; 
    730732    dragon2[d].semeai_attack_point      = NO_MOVE; 
    731733    dragon2[d].owl_attack_point         = NO_MOVE; 
    732734    dragon2[d].owl_attack_code          = 0; 
     
    15731575      } 
    15741576      if (dd->status == CRITICAL && d2->semeais) { 
    15751577        if (d2->semeai_defense_point) 
    1576           gprintf("... semeai defense move at %1m\n", d2->semeai_defense_point); 
     1578          gprintf("... semeai defense move at %1m, result code %s\n", 
     1579                  d2->semeai_defense_point, 
     1580                  result_to_string(d2->semeai_defense_code)); 
    15771581        if (d2->semeai_attack_point) 
    1578           gprintf("... semeai attack move at %1m\n", d2->semeai_attack_point); 
     1582          gprintf("... semeai attack move at %1m, result code %s\n", 
     1583                  d2->semeai_attack_point, 
     1584                  result_to_string(d2->semeai_attack_code)); 
    15791585      } 
    15801586      gprintf("... neighbors"); 
    15811587      for (k = 0; k < d2->neighbors; k++) { 
     
    25092515  gfprintf(outfile, "owl_attack_kworm        %1m\n", d2->owl_attack_kworm); 
    25102516  gfprintf(outfile, "owl_defense_kworm       %1m\n", d2->owl_defense_kworm); 
    25112517  gfprintf(outfile, "semeais                 %d\n", d2->semeais); 
     2518  gfprintf(outfile, "semeai_defense_code     %d\n", d2->semeai_defense_code); 
    25122519  gfprintf(outfile, "semeai_defense_point    %1m\n", d2->semeai_defense_point); 
    25132520  gfprintf(outfile, "semeai_defense_certain  %d\n", 
    25142521           d2->semeai_defense_certain); 
    25152522  gfprintf(outfile, "semeai_defense_target   %1m\n", 
    25162523           d2->semeai_defense_target); 
     2524  gfprintf(outfile, "semeai_attack_code      %d\n", d2->semeai_attack_code); 
    25172525  gfprintf(outfile, "semeai_attack_point     %1m\n", d2->semeai_attack_point); 
    25182526  gfprintf(outfile, "semeai_attack_certain   %d\n", d2->semeai_attack_certain); 
    25192527  gfprintf(outfile, "semeai_attack_target    %1m\n", d2->semeai_attack_target); 
  • engine/liberty.h

    RCS file: /cvsroot/gnugo/gnugo/engine/liberty.h,v
    retrieving revision 1.256
    diff -u -r1.256 liberty.h
     
    887887  int surround_size;           /* Size of the surrounding area               */ 
    888888 
    889889  int semeais;         /* number of semeais in which the dragon is involved  */ 
     890  int semeai_defense_code ;/* Result code for semeai defense.                */ 
    890891  int semeai_defense_point;/* Move found by semeai code to rescue dragon     */ 
    891892  int semeai_defense_certain; 
    892893  int semeai_defense_target; /* The opponent dragon involved in the semeai   */ 
     894  int semeai_attack_code ; /* Result code for semeai attack.                 */ 
    893895  int semeai_attack_point; /* Move found by semeai code to kill dragon       */ 
    894896  int semeai_attack_certain; 
    895897  int semeai_attack_target; /* The opponent dragon involved in the semeai    */ 
  • engine/semeai.c

    RCS file: /cvsroot/gnugo/gnugo/engine/semeai.c,v
    retrieving revision 1.77
    diff -u -r1.77 semeai.c
     
    210210        update_status(DRAGON(d1).origin, CRITICAL, CRITICAL); 
    211211      else if (best_attack == 0 && attack_certain) 
    212212        update_status(DRAGON(d1).origin, ALIVE, ALIVE); 
     213      dragon2[d1].semeai_defense_code = best_defense; 
    213214      dragon2[d1].semeai_defense_point = defense_move; 
    214215      dragon2[d1].semeai_defense_certain = defense_certain; 
    215216      gg_assert(board[semeai_defense_target] == OTHER_COLOR(board[dragon2[d1].origin])); 
    216217      dragon2[d1].semeai_defense_target = semeai_defense_target; 
     218      dragon2[d1].semeai_attack_code = best_attack; 
    217219      dragon2[d1].semeai_attack_point = attack_move; 
    218220      dragon2[d1].semeai_attack_certain = attack_certain; 
    219221      dragon2[d1].semeai_attack_target = semeai_attack_target; 
     
    284286              defend_move, str, opponent); 
    285287        dragon2[d].semeais++; 
    286288        update_status(str, CRITICAL, CRITICAL); 
     289        dragon2[d].semeai_defense_code = resulta; 
    287290        dragon2[d].semeai_defense_point = defend_move; 
    288291        dragon2[d].semeai_defense_certain = certain; 
    289292        gg_assert(board[opponent] == OTHER_COLOR(board[dragon2[d].origin])); 
     
    296299        owl_analyze_semeai_after_move(defend_move, OTHER_COLOR(color), 
    297300                                      str, opponent, &resulta, NULL, 
    298301                                      NULL, 1, NULL, 0); 
    299         if (resulta != WIN) 
     302        if (resulta != WIN) { 
     303          dragon2[d].semeai_attack_code = REVERSE_RESULT(resulta); 
    300304          dragon2[d].semeai_attack_point = defend_move; 
     305        } 
    301306        else { 
    302307          int k; 
    303308          int libs[MAXLIBS]; 
     
    308313                                          str, opponent, &resulta, NULL, 
    309314                                          NULL, 1, NULL, 0); 
    310315            if (resulta != WIN) { 
     316              dragon2[d].semeai_attack_code = REVERSE_RESULT(resulta); 
    311317              dragon2[d].semeai_attack_point = libs[k]; 
    312318              break; 
    313319            } 
     
    317323            DEBUG(DEBUG_SEMEAI, 
    318324                  "No move to attack in semeai (%1m vs %1m), seki assumed.\n", 
    319325                  str, opponent); 
     326            dragon2[d].semeai_attack_code = 0; 
    320327            dragon2[d].semeai_attack_point = NO_MOVE; 
    321328            update_status(str, ALIVE, ALIVE_IN_SEKI); 
    322329          } 
     
    382389              defend_move, str, opponent); 
    383390        dragon2[d].semeais++; 
    384391        update_status(str, CRITICAL, CRITICAL); 
     392        dragon2[d].semeai_defense_code = resulta; 
    385393        dragon2[d].semeai_defense_point = defend_move; 
    386394        dragon2[d].semeai_defense_certain = certain; 
    387395        gg_assert(board[opponent] == OTHER_COLOR(board[dragon2[d].origin])); 
     
    394402        owl_analyze_semeai_after_move(defend_move, OTHER_COLOR(color), 
    395403                                      str, opponent, &resulta, NULL, 
    396404                                      NULL, 1, NULL, 0); 
    397         if (resulta != WIN) 
     405        if (resulta != WIN) { 
     406          dragon2[d].semeai_attack_code = REVERSE_RESULT(resulta); 
    398407          dragon2[d].semeai_attack_point = defend_move; 
     408        } 
    399409        else { 
    400410          int k; 
    401411          int libs[MAXLIBS]; 
     
    406416                                          str, opponent, &resulta, NULL, 
    407417                                          NULL, 1, NULL, 0); 
    408418            if (resulta != WIN) { 
     419              dragon2[d].semeai_attack_code = REVERSE_RESULT(resulta); 
    409420              dragon2[d].semeai_attack_point = libs[k]; 
    410421              break; 
    411422            } 
     
    415426            DEBUG(DEBUG_SEMEAI, 
    416427                  "No move to attack in semeai (%1m vs %1m), seki assumed.\n", 
    417428                  str, opponent); 
     429            dragon2[d].semeai_attack_code = 0; 
    418430            dragon2[d].semeai_attack_point = NO_MOVE; 
    419431            update_status(str, ALIVE, ALIVE_IN_SEKI); 
    420432          }