gnugo-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[gnugo-devel] two-gtp-a patch


From: Evan Berggren Daniel
Subject: [gnugo-devel] two-gtp-a patch
Date: Mon, 14 Jul 2003 16:27:51 -0400 (EDT)

This patch adds backward compatibility to twogtp-a.

Evan Daniel

Index: interface/gtp_examples/twogtp-a
===================================================================
RCS file: /cvsroot/gnugo/gnugo/interface/gtp_examples/twogtp-a,v
retrieving revision 1.11
diff -u -d -r1.11 twogtp-a
--- interface/gtp_examples/twogtp-a     10 Jul 2003 22:56:02 -0000      1.11
+++ interface/gtp_examples/twogtp-a     14 Jul 2003 20:25:26 -0000
@@ -141,6 +141,8 @@
 my $black_out = new FileHandle;                # stdout of black player
 my $white_in  = new FileHandle;                # stdin of white player
 my $white_out = new FileHandle;                # stdout of white player
+my $b_gtp_ver;                         # gtp version of black player
+my $w_gtp_ver;                         # gtp version of white player

 while ($games > 0) {
     $pidb = open2($black_out, $black_in, $black);
@@ -164,6 +166,8 @@
        }
     }

+    print $black_in  "protocol_version\n";
+    $b_gtp_ver = eat_gtp_ver($black_out);
     print $black_in  "boardsize $size\n";
     eat_no_response($black_out);
     print $black_in  "clear_board\n";
@@ -171,6 +175,8 @@
     print $black_in  "komi $komi\n";
     eat_no_response($black_out);

+    print $white_in  "protocol_version\n";
+    $w_gtp_ver = eat_gtp_ver($white_out);
     print $white_in  "boardsize $size\n";
     eat_no_response($white_out);
     print $white_in  "clear_board\n";
@@ -199,7 +205,11 @@
     }
     while ($pass < 2) {
        if ($toplay eq 'B') {
-           print $black_in "genmove black\n";
+           if ($b_gtp_ver eq 1) {
+               print $black_in "genmove_black\n";
+           } else {
+               print $black_in "genmove black\n";
+           }
            $move = eat_move($black_out);
            $sgfmove = standard_to_sgf($move);
            print SGFFILEHANDLE ";B[$sgfmove]\n" if defined $sgffilename;
@@ -209,15 +219,27 @@
            } else {
                $pass = 0;
            }
-           print $white_in "play black $move\n";
+           if ($w_gtp_ver eq 1) {
+               print $white_in "black $move\n";
+           } else {
+               print $white_in "play black $move\n";
+           }
            eat_no_response($white_out);
            if ($verbose > 1) {
                print $white_in "showboard\n";
-               eat_no_response($white_out);
+               if ($w_gtp_ver eq 2) {
+                   eat_showboard($white_out);
+               } else {
+                   eat_no_response($white_out);
+               }
            }
            $toplay = 'W';
        } else {
-           print $white_in "genmove white\n";
+           if ($w_gtp_ver eq 1) {
+               print $white_in "genmove_white\n";
+           } else {
+               print $white_in "genmove white\n";
+           }
            $move = eat_move($white_out);
            $sgfmove = standard_to_sgf($move);
            print SGFFILEHANDLE ";W[$sgfmove]\n" if defined $sgffilename;
@@ -227,11 +249,19 @@
            } else {
                $pass = 0;
            }
-           print $black_in "play white $move\n";
+           if ($b_gtp_ver eq 1) {
+               print $black_in "white $move\n";
+           } else {
+               print $black_in "play white $move\n";
+           }
            eat_no_response($black_out);
            if ($verbose > 1) {
                print $black_in "showboard\n";
-               eat_no_response($black_out);
+               if ($b_gtp_ver eq 2) {
+                   eat_showboard($black_out);
+               } else {
+                   eat_no_response($black_out);
+               }
            }
            $toplay = 'B';
        }
@@ -371,6 +401,40 @@
     my ($equals, $result) = split(' ', $line, 2);
     $line = <$h>;
     return $result;
+}
+
+sub eat_gtp_ver {
+    my $h = shift;
+    my $line = "";
+
+    while ($line eq "") {
+       chop($line = <$h>) or die "No response!";
+       $line =~ s/^\s*//msg;
+       $line =~ s/\s*$//msg;
+    }
+    $line =~ s/\s*$//;
+    my ($equals, $result) = split(' ', $line, 2);
+    $line = <$h>;
+    return $result;
+}
+
+sub eat_showboard {
+    my $h = shift;
+    my $line = "";
+
+    while ($line eq "") {
+       chop($line = <$h>) or die "No response!";
+       $line =~ s/^\s*//msg;
+       $line =~ s/\s*$//msg;
+    }
+    $line =~ s/\s*$//;
+    my ($equals, $result) = split(' ', $line, 2);
+
+    while (!($line =~ /^\s*$/)) {
+       $result .= $line;
+       $line = <$h>;
+    }
+    print STDERR $result;
 }

 sub standard_to_sgf {




reply via email to

[Prev in Thread] Current Thread [Next in Thread]