メインルーチン

以下は、「ブラックジャックの Perl プログラム」のメインルーチンです。

必要なサブルーチンを呼び出して、全体を制御しています。


{
  my ($nround);     #ラウンド数
  my ($PlayerPoint);#プレーヤーの合計点数
  my ($DealerPoint);#ディーラーの合計点数
  my (@PlayerHands);#プレーヤーの手札
  my (@DealerHands);#ディーラーの手札
  my (@stack);      #カードの山

  #カードを混ぜる
  &shuffle(\@stack);

  $nround = 0;
  while ($#stack >= 10) {
    undef @PlayerHands;#プレーヤーの手札
    undef @DealerHands;#ディーラーの手札

    $nround++;
    print "--- Round $nround ---\n";

    #カードを配る
    for (0 .. 1) {
      push(@PlayerHands, shift(@stack));
      push(@DealerHands, shift(@stack));
    }

    #合計点数を計算する
    $PlayerPoint = &calc(@PlayerHands);
    $DealerPoint = &calc(@DealerHands);

    #プレーヤーの処理を行う
    &player(\@stack, \@PlayerHands, \$PlayerPoint, \@DealerHands, $DealerPoint);

    #ディーラーの処理を行う
    &dealer(\@stack, \@DealerHands, \$DealerPoint) if ($PlayerPoint);

    #カードを画面に表示する
    &display(1, \@PlayerHands, $PlayerPoint, \@DealerHands, $DealerPoint);
  }

  print "--- Dealer doesn't have enough cards to continue. ---\n";

  exit(0);#正常終了
}