プレーヤーの処理を行う

player は、プレーヤーの処理を行うサブルーチンです。

プレーヤーは、スタンド(ステイ)とドロー(ヒット)はできますが、以下の選択肢(オプション)はありません。

  • ダブル・ダウン
  • スプリット
  • サレンダー
  • インシュランス

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

  while (1) {
    my ($i);

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

    #プレーヤーの処理を行う
    print "  Draw(D, d) or Stand(S, s) or Quit(Q, q)? : ";
    chomp($i = <STDIN>);
    if      (($i eq 'D') || ($i eq 'd')) {#カードを引く
      print "  Draw\n";
      push(@$PlayerHands, shift(@$stack));
      $$PlayerPoint = &calc(@$PlayerHands);
      last if ($$PlayerPoint == 0);
    } elsif (($i eq 'S') || ($i eq 's')) {#カードを引かない
      print "  Stand\n";
      last;
    } elsif (($i eq 'Q') || ($i eq 'q')) {#終了する
      exit(0);#正常終了
    } else {
      print "Input Error!\n";
    }
  }
}