NAME

Games::Cards::Bridge::Rubber - Object for Bridge (card game) Rubber scoring

VERSION

Version 0.01

SYNOPSIS

This module provides a class for creating Bridge rubber objects, including the results and scoring and current state of the rubber.

use Games::Cards::Bridge::Rubber;
sub show_score {
  my $rubber = shift;
  printf "Totals (above/below): We = %d/%d \t They = %d/%d\n", $rubber->we_above, $rubber->we_below, $rubber->they_above, $rubber->they_below; 
  printf "  Legs:  We = %d \t They = %d\n", $rubber->we_leg, $rubber->they_leg;
  printf "  Vul:  We = %d \t They = %d\n", $rubber->we_vul, $rubber->they_vul;
  printf "==COMPLETE==\n\tWe: %d\tThey: %d\n", $rubber->we_score, $rubber->they_score if $rubber->complete;
}
my $rubber = Games::Cards::Bridge::Rubber->new;

show_score($rubber);
foreach my $opts (
  { direction => 'we', trump => 'H', bid => '2', made => '4' },
  { direction => 'they', trump => 'S', bid => '4', down => '2', dbl => 1 },
  { direction => 'they', trump => 'N', bid => '3', made => '4' },
  { direction => 'they', trump => 'S', bid => '3', made => '3' },
  { direction => 'they', trump => 'D', bid => '2', down => '2'  },
  { direction => 'we', trump => 'H', bid => '6', made => '7', dbl => 1 },
  { direction => 'they', trump => 'N', bid => '1', made => '2' },
  { direction => 'we', trump => 'C', bid => '3', made => '3' },
  { direction => 'they', trump => 'H', bid => '3', made => '3' },
){
  $rubber->contract( %$opts );
  show_score($rubber);
}

METHODS

new

No parameters needed.

contract

Add a contract to the rubber. This needs the same arguments as Games::Cards::Bridge::Contract's constructor, as well as a direction parameter of 'we' or 'they' (and the declarer parameter is not used). This method is also responsible for internally updating the attributes. See also http://www.acbl.org/learn/scoreRubber.html

we_score

Gives the current total 'We' score.

they_score

Gives the current total 'They' score.

both_vul

Alias to returns true iff ->we_vul() and ->they_vul().

ATTRIBUTES

These are all auto-calculated/maintained; their current values are available from the accessor method provided by Class::Accessor.

contracts

Array ref holding all the contracts added by the contract() method.

we_above

Current above-the-line score for 'We'.

we_below

Current below-the-line score for 'We'.

we_leg

The current "leg" for 'We'.

they_leg

The current "leg" for 'They'.

they_above

Current above-the-line score for 'They'.

they_below

Current below-the-line score for 'They'.

we_vul

Returns true if the 'We' side is vulnerable (has one "game").

they_vul

Returns true if the 'They' side is vulnerable (has one "game").

complete

Returns true if the rubber has concluded (one side got two "games").

PREREQUISITES

TODO

  • Handle honors bonuses

AUTHOR

David Westbrook, <dwestbrook at gmail.com>

BUGS & SUPPORT

See Games::Cards::Bridge::Contract

COPYRIGHT & LICENSE

Copyright 2006 David Westbrook, all rights reserved.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.