Games::Bingo::Column - a column class used for generating bingo cards


Games-Bingo documentation Contained in the Games-Bingo distribution.

Index


Code Index:

NAME

Top

Games::Bingo::Column - a column class used for generating bingo cards

SYNOPSIS

Top

	my $c = Games::Bingo::Column-E<gt>new();

	foreach my $number(@numbers) {
		$c-E<gt>populate($number);
	}

	my @numbers = qw(1 2 3 4 5 6 7 8 9);

	my $c = Games::Bingo::Column-E<gt>new(@numbers);

	my $number = $c-E<gt>get_highest_number();

DESCRIPTION

Top

The Column is used when building the bingo cards and is a temporary data structure.

The class has two attributes:

METHODS

Top

new

The contructor optionally takes an array as an argument, and sets the _array attribute to point to this.

populate

populate is a simple accessor which can be used to add additional number to the list of number contained in the class. This is a secondary use of the class, please refer to the description of the algoritms used in the program described in the Games::Bingo class.

get_highest_number

The get_highest_number is also a simple accessor, it returns the highest number from the list contained in the class.

If the optional parameter is set to true, it splices the list contained in the class, meaning the class shrinks by 1. Default behaviour is not shrinking.

get_random_number

The get_random__number is also a simple accessor, it returns a random number from the list contained in the class.

If the optional parameter is set to true, it splices the list contained in the class, meaning the class shrinks by 1. Default behaviour is not shrinking. See also get_highest_number.

_reverse

The method used by Perls sort to sort the list

get_label

Accessor returning the label of the G::B::Column object.

count_numbers

Returns the number of numbers contained in a G::B::Column object.

SEE ALSO

Top

Games::Bingo
Games::Bingo::ColumnCollection

TODO

Top

The TODO file contains a complete list for the whole Games::Bingo project.

AUTHOR

Top

jonasbn <jonasbn@cpan.org>

ACKNOWLEDGEMENTS

Top

My friend Allan helped me out with some of the algoritmic stuff and was in on the development when this class was thought up.

COPYRIGHT

Top


Games-Bingo documentation Contained in the Games-Bingo distribution.
package Games::Bingo::Column;

# $Id: Column.pm 1869 2007-08-12 15:52:36Z jonasbn $

use strict;
use integer;
use Games::Bingo;
use vars qw(@ISA $VERSION);

@ISA = qw(Games::Bingo);
$VERSION = '0.03';

sub new {
	my $class = shift;
	my $label = shift;
	my @array = sort _reverse (@_);
	
	my $self = bless {
		label  => $label?$label:0,
		_array  => \@array
	}, $class;
}

sub _reverse { $b <=> $a }

sub populate {
	my ($self, $value) = @_;
	
	push @{$self->{_array}}, $value;
	
	@{$self->{_array}} = sort _reverse @{$self->{_array}};
}

sub get_random_number {
	my ($self, $do_splice) = @_;
	
	my $pos = $self->random($self->count_numbers);
		
	my $number = $self->{_array}->[$pos];
	splice(@{$self->{_array}}, $pos, 1) if $do_splice;
	
	return $number;
}

sub count_numbers {
	my $self = shift;
	
	return scalar @{$self->{_array}};
}

sub get_highest_number {
	my ($self, $do_splice) = @_;

	my $number;
	if ($do_splice) {
		$number = shift(@{$self->{_array}});
		return $number;
	} else {		
		return $self->{_array}->[0];
	}
}

sub get_label {
	my $self = shift;
	
	return $self->{label};
}

1;

__END__