PICO-8スネークゲーム「ピコニョロ」のアイテムの出現率について考えてみました。
「たまに出現する」の「たまに」を、どれくらいにしたら良いのかを考えています。
「このどれくらいに」は作っている私の感覚になるのですが、その感覚をコード化しなければなりません。
つまり、実際の数値と計算式で表さなければなりません。
まず、ボーナス点が得られる星のマークのアイテムですが、あたりとしては「1ステージで出現するかしないかぐらい」にしたいと考えています。
1ステージのクリアまでのプレイ時間を3分間とし、その3分間に出現するかしないかぐらいを目標とします。
_update関数で、30分の1秒ごとに処理をしているため、出現チェックは30回×60/分となり、3分間のゲームプレイだとすると、180回×3分間で540回実行することになる。
言い方を変えると、540回出現チェックをして、1回出現するかしないかの確率を導き出せば良いのです。
絵で示すと解りやすいと思い、540≒5329(73×73)回チェックして出現チェックで出現したら別の色で点を打つプログラムを書いてみました(pの値は1で1%)。
出現なら黄色で、出現しなければ灰色で点を打っていきます。
t={}
p=1
for y=0,72 do
for x=0,72 do
if rnd(100) < p
then add(t,{x=x, y=y, v=true})
else add(t,{x=x, y=y, v=false})
end
end
end
cls()
for i in all(t) do
if i.v==true then
pset(i.x,i.y,10)
else
pset(i.x,i.y,5)
end
end
::a_label::
goto a_label
結構出ています。
では、その10分の1の0.1%で実行してみます。
だいぶ減りましたが、まだまだです。
出現率をまた10分の1の0.01%にしたら、出現しなかったり、出現しても1〜2つで思ったような結果になりました。
つまり1万分の1の確率です。
暫定としてこの確率で実装していこうと思います。
コメント