石取りゲームのルール

石取りゲームのルールを説明します。

前田稔の超初心者のプログラム入門

ゲームの概要

  1. 始めて作成するゲームとして「石取りゲーム」を選びました。
    Java Applet で作成するゲームプログラムの基礎を学んで下さい。
  2. 山に積まれた石をあなたとコンピュータが交互に取り除き、最後の石を取らされた方が負けです。
    1. ゲームを開始すると山には乱数で11個〜30個の石が積まれます。
    2. 山から一度に取り除くことができる最大数が2個〜6個の範囲で乱数で設定されます。
    3. 山の石をあなたの先手でコンピュータと交互に取り除きます。
    4. 最後の石(最後の一個)を取らされた方が負けです。
  3. 山に積まれた石と、取り除くことが出来る数と対戦成績などを表示します。
    ゲームのルールは簡単ですが、必勝法を知らなければ簡単には勝てません。
  4. ゲームは「ほぼ先手必勝」なので、正しく取り除けばコンピュータが負けるのですが、一度でもミスをすると 勝つチャンスは無くなります。
    そこで20%の確立でコンピュータがわざとミスをするようにプログラムします。

石取りゲームの必勝法

  1. 石取りゲームの必勝法の説明です。
    今仮に「最大3個」までの石を取り除くことができるものとします。
    石を5個(3+2) 個にして相手に手を渡せば勝てることを確認して下さい。
    相手が1個取れば3個、相手が2個取れば2個、相手が3個取れば1個取ると、最後の一個を相手が取ることになります。
  2. 石を5個にして手を渡すには、石を9個に設定すれば良いですね。
    相手が1〜3個のどの手を打っても、5個にして手を渡すことができるでしょう。
  3. この関係を整理すると、取り除く最大数を n とすると「(n+1) の倍数+1個」の数に設定して相手に手を渡せば必勝です。
    相手が必勝のパターンで迫ってきたときは、仕方がないので乱数で石数を決めます。
    また、あまりコンピュータが強すぎると面白くないので20%の確立でわざと間違えましょう。

[Next Chapter ↓] 乱数で石の数を決める

Java Game Program