rendered paste bodypackage NaughtsAndCrosses;
use strict;
use Carp;
sub new
{
my $class = shift;
my %self;
$self{board} = [[0,0,0], [0,0,0], [0,0,0]];
$self{player} = 1;
$self{moves} = 0;
bless \%self, $class;
}
sub player()
{
my $self = shift;
return $self->{player};
}
sub play
{
my ($self, $row, $col) = @_;
$row--;
$col--;
carp "Move already played" unless $self->{board}[$row][$col]==0;
$self->{board}[$row][$col] = $self->{player};
$self->{player} = $self->{player}==1? 2 : 1;
$self->{moves}++;
return;
}
sub board
{
my $self = shift;
my $board = "";
foreach my $row(@{$self->{board}})
{
foreach my $val(@{$row})
{
$board.= $val;
}
$board.= "\n";
}
return $board;
}
sub winner()
{
my $self = shift;
# todo
}
sub finished()
{
my $self = shift;
return $self->winner() || $self->{moves}==9;
}
1;