X-Git-Url: https://git.realraum.at/?a=blobdiff_plain;f=dart%2Fdart-red-x01.pl;h=b06b8a62cd0e7e16f34377cce71978ab1f547225;hb=050398149d26f27a0b19971cbcea990574d73a57;hp=56b4cb28a3e75178dbbd90c71b2cecd0fd03b985;hpb=0e5aa9dd0b200a8bd5d9b886debfd9b44c451b0f;p=svn42.git diff --git a/dart/dart-red-x01.pl b/dart/dart-red-x01.pl index 56b4cb2..b06b8a6 100755 --- a/dart/dart-red-x01.pl +++ b/dart/dart-red-x01.pl @@ -5,16 +5,19 @@ use Dart; $|=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(); ### =============================== @@ -22,7 +25,6 @@ exit $dart->run(); sub init { my $self=shift; - for my $player_idx (0..($self->{player_count}-1)) { $self->get_player($player_idx)->{score} = $maxScore; @@ -39,19 +41,16 @@ sub shoot { 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 @@ -63,16 +62,16 @@ 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"; }