[Top][All Lists]
[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 {
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [gnugo-devel] twogtp backward compatibility,
Evan Berggren Daniel <=