X-Git-Url: https://git.realraum.at/?a=blobdiff_plain;f=dart%2Fdart-cricket.pl;h=f96b0b94568995841fcc6dcfc3ee879203b230bc;hb=3c56468dcf725e2b51076295f16601f8f025922e;hp=91431d9ddd7eb192d7a8622f72723032dedc3744;hpb=adc899317657443237e27bcf81fec5ba6f220f80;p=svn42.git diff --git a/dart/dart-cricket.pl b/dart/dart-cricket.pl index 91431d9..f96b0b9 100755 --- a/dart/dart-cricket.pl +++ b/dart/dart-cricket.pl @@ -13,6 +13,7 @@ my $dart = new Dart(player_names=>\@player, shoot=>\&shoot, next_player=>\&next_player, before_shoot=>\&print_score, + init=>\&init, } ); exit $dart->run(); @@ -25,6 +26,37 @@ sub gueltig return $zahl>1; } +sub init +{ + my $self=shift; + for my $i (0..21) + { + for my $player_idx (0..($self->{player_count}-1)) + { + my $zahl = $i>20?25:$i; + next if $zahl > 0 and not gueltig($zahl); + $self->get_player($player_idx)->{score}->{$zahl}=0; + } + } +} + +sub win_condition +{ + my ($self) = @_; + for my $i (keys %{$self->get_current_player()->{score}}) + { + next if not $i; + return if $self->get_current_player()->{score}->{$i}<3; + } + my $score = $self->get_current_player()->{score}->{0}; + for my $player_idx (0..($self->{player_count}-1)) + { + next if not $self->get_player($player_idx)->{active}; + return if $score > $self->get_player($player_idx)->{score}->{0}; + } + return 1; +} + sub shoot { my $self=shift; @@ -72,6 +104,7 @@ sub shoot $self->shout_last_shoot() if ($scored || $self_scored); $self->shout("scored") if $scored; $self->shout("scho") if $scho && not $scored; + $self->win() if &win_condition($self); } sub next_player