$|=1;
my $maxScore = $0;
$maxScore =~ s/.*\-(\d+).pl$/\1/;
-my (@player) = @ARGV;
+my ($shout_fifo, @player) = @ARGV;
my $dart = new Dart(player_names=>\@player,
+ shout_fifo=>$shout_fifo,
callbacks => {
shoot=>\&shoot,
next_player=>\&next_player,
before_shoot=>\&print_score,
init=>\&init,
+ end_game=>\&Dart::plot_trace_shoot,
}
);
+$dart->trace_shoot('score');
exit $dart->run();
### ===============================
sub init
{
my $self=shift;
-
for my $player_idx (0..($self->{player_count}-1))
{
$self->get_player($player_idx)->{score} = $maxScore;
{
my $self=shift;
my ($mult,$zahl)=@_;
- my $color = $self->get_color($mult,$zahl)?1:-1;
- if ($self->get_current_player()->{score} >= $mult * $zahl)
- {
- $self->get_current_player()->{score} -= $color *$mult * $zahl;
- $self->shout_last_shoot();
- $self->win() if &win_condition($self);
- }
- else
+ my $color = $self->get_color($mult,$zahl)?1:-1;
+ if ($color <0)
{
- $self->shout("miss");
- $self->get_current_player()->{score} = $self->get_current_player()->{last_score};
- $self->finish_player_round();
+ $self->shout("plus");
+ }else{
+ $self->shout("minus");
}
+ $self->get_current_player()->{score} -= $color *$mult * $zahl;
+ $self->shout_last_shoot();
+ $self->win() if &win_condition($self);
}
sub next_player
sub print_score
{
my ($self)=@_;
- printf STDERR "\n\n";
- printf STDERR "Runde\t%d\n\n",$self->{round};
+ printf "\n\n";
+ printf "Runde\t%d\n\n",$self->{round};
for my $player_idx (0..($self->{player_count}-1))
{
- printf STDERR "%s\t", ($player_idx == $self->{current_player})?"(".$self->get_player($player_idx)->{name}.")":$self->get_player($player_idx)->{name};
+ printf "%s\t", ($player_idx == $self->{current_player})?"(".$self->get_player($player_idx)->{name}.")":$self->get_player($player_idx)->{name};
}
- print STDERR "\n";
+ print "\n";
for my $player_idx (0..($self->{player_count}-1))
{
- printf STDERR "%s\t", $self->get_player($player_idx)->{score};
+ printf "%s\t", $self->get_player($player_idx)->{score};
}
- print STDERR "\n";
+ print "\n";
}