PC6001NOTE No.5 - 三連

Home PC-6001mkII Program etc

同人誌投稿プログラムの余談

三連 (PC6000NOTE No.5)
◆遊び方◆

 並んだ数字群から数字を3つずつとっていくワンキーゲームです。

画像

 左から右に流れる「^」をスペースキーで止めて、数字を3つ取って行ってください。取られた場所の数字は0に変わります。

 3つの数字の合計が得点になります。さらに、取った数字のうち2つが同じなら2倍、3つが連番(順不同)なら3倍、3つとも同じ数字なら4倍の倍率が得点にかかります。

 これを5回繰り返し、合計得点を競います。

 貴方のスペースキーさばきは如何ほどか?


◆プログラムについて◆

 今回の苦労点は、倍率の計算式でした。

 同じ数字の組み合わせだけならまだ楽だったのです。
 今回、取った3つの数字をP,Q,Rの変数に入れているのですが、P=Q, Q=R, R=Pの条件に合った数をカウントすれば、値が0, 1, 3のいずれかになります。このカウント数に1を加えると、倍率として使えます。
 3つとも同じ数字の場合の倍率が4倍なのは、この計算式の都合によるものです。

 では、3つの数字が連続しているかどうかはどうやって判定するか?

 これには、3つ中2つの数字の差分を利用しています。3つの数字が連続数(順不同)の関係の場合、P-Q, Q-R, R-Pの各差分は必ず±2,±1,±1の組み合わせとなります(±は数字の大小で変わります)。

 という事は…連続数を満たすときは、各差分を掛け合わせた数の絶対値「ABS((P-Q)*(Q-R)*(R-P))」の値は必ず2になるという事です。

 逆に、連続数の条件を満たさない場合は、先ほどの計算結果は2にならないのか?

これについても以下の理由で大丈夫のようです。

  • 3つの数字のうち同じ数字を含む場合、差分の1つが0になるため、差分を掛け合わせた値も0
  • 3つともバラバラの数字で、かつ連続数でない場合、一番大きい値と一番小さい値の差は3以上になるため、差分を掛け合わせた結果は少なくとも3以上になる(2にはならない)

 このように、倍率計算は絶妙なバランスで成り立っています。
◆リスト◆

画像


◆その他余談◆

 このゲームは、スロットのように目押しをするワンキーゲームを目指して作りました。

 途中の段階で「過去に取った数字の部分は0に変わる」というルールを足したら、少し緊張感が増えたような気がします。

 3つの数字を取る時、2番目の数字は1番目に取った数字より右の範囲から、3番目の数字は2番目に取った数字より右の範囲からしか取れない というルールを書くのを忘れてた。ま…まあ、プレイすればわかるよね(^_^;)。



PC-6001mkII