ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/kgsueme/bin/kgsueme
(Generate patch)

Comparing kgsueme/bin/kgsueme (file contents):
Revision 1.5 by pcg, Thu May 29 01:13:32 2003 UTC vs.
Revision 1.6 by elmex, Thu May 29 03:11:56 2003 UTC

1#!/opt/bin/perl 1#!/usr/bin/perl -I../lib/
2 2
3use PApp::Util qw(dumpval); # debug only 3#use PApp::Util qw(dumpval); # debug only
4 4
5use Gtk; 5use Gtk;
6use Gtk::Gdk; 6use Gtk::Gdk;
7use Gtk;
8#use Gtk::Gdk::ImlibImage;
9use Gnome;
10init Gnome "kgsueme";
11
7 12
8use KGS::Protocol; 13use KGS::Protocol;
9use KGS::Listener::Debug; 14use KGS::Listener::Debug;
10 15
11use IO::Socket::INET; 16use IO::Socket::INET;
476 $self->{window}->signal_connect(delete_event => sub { $self->part }); 481 $self->{window}->signal_connect(delete_event => sub { $self->part });
477 482
478 $self->{window}->add(my $hpane = new Gtk::HPaned); 483 $self->{window}->add(my $hpane = new Gtk::HPaned);
479 ::state $hpane, "game::hpane", undef, hpane_position => 500; 484 ::state $hpane, "game::hpane", undef, hpane_position => 500;
480 485
481 $hpane->add(my $board = new Gtk::Table $self->{size}, $self->{size}, 1); 486 $hpane->add(my $canvas = new Gnome::Canvas);
487 $self->{canvas} = $canvas;
488# $canvas->set_pixels_per_unit(300);
489 $canvas->set_scroll_region(0,0,400,400);
490 $self->{board} = [[]];
491# $canvas->style->bg('normal', $canvas->style->white);
492 {
493 my $croot = $canvas->root;
494 my $cgroup = $croot->new($croot, "Gnome::CanvasGroup");
495 my $w = 400;
496 my $pad = 26;
497 my $box = $cgroup->new($cgroup,"Gnome::CanvasRect",
498 x1 => 0, x2 => $w,
499 y1 => 0, y2 => $w,
500 outline_color => "green",
501 fill_color => "green",
502 width_pixels => 2,
503 );
504 my $box2 = $cgroup->new($cgroup,"Gnome::CanvasRect",
505 x1 => $pad, x2 => $w - $pad,
506 y1 => $pad, y2 => $w - $pad,
507 outline_color => "brown",
508 fill_color => "brown",
509 width_pixels => 2,
510 );
511 my @lines;
512 my $x1 = $pad * 2; # == my $y1 = 30;
513 my $x2 = $w - ($pad * 2); # == my $y2 = 270;
514 my $w = $x2 - $x1;
515 my $s = $self->{size} - 1;
482 516
483 for my $x (0 .. $self->{size} - 1) { 517 for (my $i = 0; $i <= $s; $i++) { # one more iteration for the finishing lines
484 for my $y (0 .. $self->{size} - 1) { 518 push @lines,
485 my $cell = new Gtk::Label; 519 $cgroup->new($cgroup,"Gnome::CanvasLine",
486 $board->attach_defaults($cell, $x, $x + 1, $y, $y + 1); 520 points => [ $x1, $x1 + ($w/$s)*$i, $x1 + $w, $x1 + ($w/$s)*$i ],
487 $self->{board}[$x][$y] = $cell; 521 fill_color => "darkbrown",
522 width_pixels => 1);
523 push @lines,
524 $cgroup->new($cgroup,"Gnome::CanvasLine",
525 points => [ $x1 + ($w/$s)*$i, $x1, $x1 + ($w/$s)*$i, $x1 + $w ],
526 fill_color => "darkbrown",
527 width_pixels => 1);
528 }
529 $self->{board_gfx}->{lines} = \@lines;
530 my $stones = [[]];
531 my $wf = ($w/$s);
532 for (my $x = 0; $x < $self->{size}; $x++) {
533 for (my $y = 0; $y < $self->{size}; $y++) {
534 $stones->[$x]->[$y]->[0] = # black stone
535 $cgroup->new($cgroup,"Gnome::CanvasEllipse",
536 x1 => $x1 + $wf*$x - ($wf/2.2), x2 => $x1 + $wf*$x + ($wf/2),
537 y1 => $x1 + $wf*$y - ($wf/2.2), y2 => $x1 + $wf*$y + ($wf/2),
538 fill_color => "black");
539 $stones->[$x]->[$y]->[0]->hide;
540 $stones->[$x]->[$y]->[1] = # black stone
541 $cgroup->new($cgroup,"Gnome::CanvasEllipse",
542 x1 => $x1 + $wf*$x - ($wf/2.2), x2 => $x1 + $wf*$x + ($wf/2),
543 y1 => $x1 + $wf*$y - ($wf/2.2), y2 => $x1 + $wf*$y + ($wf/2),
544 fill_color => "white");
545 $stones->[$x]->[$y]->[1]->hide;
488 } 546 }
489 } 547 }
548 $self->{board_gfx}->{stones} = $stones;
549
550 # smooth => 1,
551 # spline_steps => 50
552# $line->hide;
553 }
554$canvas->show();
555
490 556
491 $hpane->add(my $vpane = new Gtk::VPaned); 557 $hpane->add(my $vpane = new Gtk::VPaned);
492 ::state $vpane, "game", $self->{name}, vpane_position => 80; 558 ::state $vpane, "game", $self->{name}, vpane_position => 80;
493 559
494 $vpane->add(my $sw = new Gtk::ScrolledWindow); 560 $vpane->add(my $sw = new Gtk::ScrolledWindow);
555} 621}
556 622
557sub event_update_tree { 623sub event_update_tree {
558 my ($self) = @_; 624 my ($self) = @_;
559 625
626# if (not defined $self->{board_pm}) {
627# $self->{board_pm} = new Gtk::Gdk::Pixmap ($self->{board}->window, 100, 100, -1);
628# $self->{board_pm}->draw_rectangle($self->{board}->style->white_gc, 1, 0, 0, 100, 100);
629# }
630# my $red = $self->{board}->window->get_colormap->color_alloc( { red => 65000, green => 0, blue => 0 } );
631# my $red_gc = new Gtk::Gdk::GC ( $self->{board}->window );
632# $red_gc->set_foreground( $red );
633#
634# my $px = $self->{board_pm};
635
560 for my $x (0 .. $self->{size} - 1) { 636 for my $x (0 .. $self->{size} - 1) {
561 for my $y (0 .. $self->{size} - 1) { 637 for my $y (0 .. $self->{size} - 1) {
562 $self->{board}[$x][$y]->set_text(""); 638# $self->{board}[$x][$y] = 0;
639 $self->{board_gfx}->{stones}->[$x]->[$y]->[0]->hide;
640 $self->{board_gfx}->{stones}->[$x]->[$y]->[1]->hide;
563 } 641 }
564 } 642 }
565 643
566 for (0..$self->{node}) { 644 for (0..$self->{node}) {
567 while (my ($k, $v) = each %{$self->{tree}[$_]}) { 645 while (my ($k, $v) = each %{$self->{tree}[$_]}) {
568 if ($k eq "move7") { 646 if ($k eq "move7") {
569 if ($v->[1] < 255) { 647 if ($v->[1] < 255) {
570 $self->{board}[$v->[1]][$v->[2]]->set_text(("X", "O", "-")[$v->[0]]); 648# $self->{board_gfx}->{stones}[$x][$y]->[0]->show;
649 ($v->[0] == 0) &&
650 $self->{board_gfx}->{stones}->[$v->[1]]->[$v->[2]]->[0]->show;
651 ($v->[0] == 1) &&
652 $self->{board_gfx}->{stones}->[$v->[1]]->[$v->[2]]->[1]->show;
653 # $self->{board}[$v->[1]][$v->[2]] = ($v->[0] + 1); # ("X", "O", "-")
654 # 0 1 2 (+1)
571 } 655 }
572 } 656 }
573 } 657 }
574 } 658 }
575} 659}

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines