All pastes #597900 Raw Edit

Miscellany

public text v1 · immutable
#597900 ·published 2007-06-30 22:14 UTC
rendered paste body
package 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;