ブログ内検索

2019年7月1日月曜日

7-15 一括変数移動

我はより補充処理を単純にするため、以下の手法をとることにした。

あらかじめ補充段数を取得して、その分一気に変数を移動させる。
それに従い、マスの状況を更新するが、それは当然一気に移動した後なので、段数補充分だけさかのぼってピクチャを「押し戻す」。
そしてあたかも生成されているかのようにピクチャをまた「補充する」。

ただしこれをするとドロップの外枠からはみ出る可能性があるので、そこは来るべき時が来るまで透明にしておくなどの処理を使えばよい。

で、変数の一括移動だが、これは一見簡単そうに見えるが実はそうではない。

例えば最上段が8個のとき、ID20のマスは3段生成でどこへ移動するか。
これは少し考えるとわかるが、7+8+7マス分移動する。(左上から順に1,2,3…とIDを振っている)
最上段が7個だったら、これは8+7+8分移動する。
そしてそれ以外にも新しく補充するマスについても同様の処理が必要となる。

7+8+7のような和はループにおいて面倒なので一発で式で表したい。
そうすると、ちょっと考えると以下の式を得る。

(75*n)/10

ここで注意したいのは「/」の演算子は普通に割るのではなく、割った値を切り捨てたもの、ということ。いわば通常の意味での「/」の整数部分をとる、ということである。

例えばn=1ならば7.5で、整数部分をとるので7。
n=2ならば15でそのまま15。このようにすると、一つの式で7,8,7,8と続く級数を表現できる。楽で助かる。

ウディタの性質上、先に75/10で7.5にすればいいやん、というやり方は通用しない。
ウディタでは小数を表現できないので。なお、ウディタでの今回の特殊な意味での「/」に相当する記号は「÷」である。

最上段が7個のときも同様にして、(75*n+5)/10を得る。

こうすれば補充1段ごとのかくつきが減り、しかも処理が減るという利点。
先日簡易化したリーチ処理との相乗効果で、よりスムーズなゲームが可能になる…と思う