gnugo-devel
[Top][All Lists]
Advanced

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

[gnugo-devel] twogtp backward compatibility


From: Evan Berggren Daniel
Subject: [gnugo-devel] twogtp backward compatibility
Date: Mon, 14 Jul 2003 00:19:14 -0400 (EDT)

this patch makes twogtp check the protocol_version command and behave
occasionally.  It also adds support for gtp version 2 showboard.

I've verified that the patch works for playing gnugo 3.2 against cvs, but
I haven't done thorough testing.

twogtp-a patch will be along in a bit.

Evan Daniel

Index: interface/gtp_examples/twogtp
===================================================================
RCS file: /cvsroot/gnugo/gnugo/interface/gtp_examples/twogtp,v
retrieving revision 1.11
diff -u -d -r1.11 twogtp
--- interface/gtp_examples/twogtp       11 Jul 2003 13:26:58 -0000      1.11
+++ interface/gtp_examples/twogtp       14 Jul 2003 03:34:18 -0000
@@ -39,7 +39,7 @@

     print $hin "$cmd\n";

-# parse the 2-line response of the GTP program
+# parse the response of the GTP program

     my $line;
     my $repchar;
@@ -51,7 +51,12 @@
     ($repchar, $result) = split(/\s*/, $line, 2);
     print STDERR "$hin 2:repchar $repchar\n" if ($debug);
     print STDERR "$hin 3:result $result\n" if ($debug);
+
     $line = <$hout>;
+    while (!($line =~ /^\s*$/)) {
+       $result .= $line;
+       $line = <$hout>;
+    }
     print STDERR "$hin 4:$line" if ($debug);
     if ($repchar eq '?') {
        return "ERROR";
@@ -86,8 +91,9 @@
 use IPC::Open2;

 struct('GTP::Player' => {
-    'in'       => 'FileHandle',
-    'out'      => 'FileHandle'
+    'in'           => 'FileHandle',
+    'out'          => 'FileHandle',
+    'gtp_version'   => '$',
 }
 );

@@ -101,6 +107,10 @@
     my $cmd = shift;

     my $pid = open2($self->{out}, $self->{in}, $cmd);
+    $self->{gtp_version} = GTP::exec_cmd($self->{in},
+       $self->{out}, "protocol_version");
+    $self->{gtp_version} eq 1 or $self->{gtp_version} eq 2 or
+       die "Unsupported gtp version $self->{gtp_version}\n";
     return $pid;
 }

@@ -109,10 +119,15 @@
     my $color = shift;

     my $cmd;
+    if ($self->{gtp_version} eq 1) {
+       $cmd = "genmove_";
+    } else {
+       $cmd = "genmove ";
+    }
     if ($color =~ /^b/i) {
-       $cmd = "genmove black";
+       $cmd .= "black";
     } elsif ($color =~ /^w/i) {
-       $cmd = "genmove white";
+       $cmd .= "white";
     } else {
        die "Illegal color $color\n";
     }
@@ -122,15 +137,27 @@
 sub black {
     my $self = shift;
     my $move = shift;
+    my $cmd;
+    if ($self->{gtp_version} eq 1) {
+       $cmd = "black ";
+    } else {
+       $cmd = "play black ";
+    }

-    GTP::exec_cmd($self->{in}, $self->{out}, "play black $move");
+    GTP::exec_cmd($self->{in}, $self->{out}, $cmd . $move);
 }

 sub white {
     my $self = shift;
     my $move = shift;
+    my $cmd;
+    if ($self->{gtp_version} eq 1) {
+       $cmd = "white ";
+    } else {
+       $cmd = "play white ";
+    }

-    GTP::exec_cmd($self->{in}, $self->{out}, "play white $move");
+    GTP::exec_cmd($self->{in}, $self->{out}, $cmd . $move);
 }

 sub komi {
@@ -179,8 +206,13 @@

 sub showboard {
     my $self = shift;
+    my $board;
+
+    $board = GTP::exec_cmd($self->{in}, $self->{out}, "showboard");

-    GTP::exec_cmd($self->{in}, $self->{out}, "showboard");
+    if ($self->{gtp_version} eq 2) {
+       print $board;
+    }
 }

 sub get_random_seed {




reply via email to

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