第 3 章 落ちものパズル共通ルール記述言語 20
A.1.9 setTumo( array , pattern , returnnum )
ゲーム中に使用するツモの形状を作成する。arrayにはツモの形状を整数値で表した2次元配 列を指定する。2 次元配列にて正の値を代入しておくとcreateBlockPatternで作成したブロッ クの役割識別番号をランダムで代入する。同じ数値にすると同じ役割のブロックにすることがで きるため、すべてばらばらの役割を持つブロックとして出現させたい場合はそれぞれ違う数値に する必要がある。2次元配列にて数値を代入する際、createBlockPatternで作成したブロックの 種類以上の数値は無視する。負の値を 2次元配列に代入しておくと、出現するブロックの役割 を固定することが可能である。例として、-2と指定した部分は、役割識別番号が2 のブロック が、-3と指定した部分は、役割識別番号が3のブロックが必ずその位置に出現するようになる。
patternはツモの種類を整数値で指定する。patternが複数指定されていた場合、ゲーム中ランダ
ムでpatternで指定した分の形状が出現する。returnnumは何番目のツモの回転形状にするかを
整数値で指定する。returnnumで指定した回転形状パターンは0番目の形状を初期値として代入
する。returnnumで指定した回転形状パターンの数を超えると再び0番目の回転形状になる。左 回転操作をすると右回転操作の逆の動作をする。returnnum、patternの値は複数指定がある場合 0から1ずつ加算するように指定する。以下のソースコードはsetTumoの記述例である。
1
2 --多次元配列準備
3 --Luaの多次元配列を用意し、arrayに指定する。
4 for p = 1 , 4 do
5
6 arrays[p] = {}
7 8 end
9
10 --ツモの設定
11 --T字形状のツモを作成し、ブロックの役割はバラバラにする。
12 --それぞれ違う数値を入れているが、ランダムに指定されたブロックの役割によっては、
13 --同じ役割として出現する場合もある。
14 arrays[0] = { 0 , 0 , 0 , 0 } 15 arrays[1] = { 0 , 1 , 0 , 0 } 16 arrays[2] = { 2 , 3 , 4 , 0 } 17 arrays[3] = { 0 , 0 , 0 , 0 } 18
19 setTumo( arrays , 0 , 0 ) --0回転目 20
21 arrays[0] = { 0 , 0 , 0 , 0 } 22 arrays[1] = { 0 , 2 , 0 , 0 } 23 arrays[2] = { 0 , 3 , 1 , 0 } 24 arrays[3] = { 0 , 4 , 0 , 0 } 25
26 setTumo( arrays , 0 , 1 ) --1回転目 27
28 arrays[0] = { 0 , 0 , 0 , 0 } 29 arrays[1] = { 0 , 0 , 0 , 0 } 30 arrays[2] = { 4 , 3 , 2 , 0 } 31 arrays[3] = { 0 , 1 , 0 , 0 } 32
33 setTumo( arrays , 0 , 2 ) --2回転目 34
35 arrays[0] = { 0 , 0 , 0 , 0 } 36 arrays[1] = { 0 , 4 , 0 , 0 } 37 arrays[2] = { 1 , 3 , 0 , 0 } 38 arrays[3] = { 0 , 2 , 0 , 0 } 39
40 setTumo( arrays , 0 , 3 ) --3回転目 41
42 --複数のツモ形状を作り、ブロックの役割は固定する 43 --L字型の形状として2つめの形状を作成。
44 --負の値(-2)を指定しているため、必ずブロックの役割識別番号が2のものが出現する 45 arrays[0] = { 0 , 0 , 0 , 0 }
46 arrays[1] = { 0 , 0 , -2 , 0 } 47 arrays[2] = { -2 , -2 , -2 , 0 } 48 arrays[3] = { 0 , 0 , 0 , 0 } 49
50 setTumo( arrays , 1 , 0 ) --0回転目
52 arrays[0] = { 0 , 0 , 0 , 0 } 53 arrays[1] = { 0 , -2 , 0 , 0 } 54 arrays[2] = { 0 , -2 , 0 , 0 } 55 arrays[3] = { 0 , -2 , -2 , 0 } 56
57 setTumo( arrays , 1 , 1 ) --1回転目 58
59 arrays[0] = { 0 , 0 , 0 , 0 } 60 arrays[1] = { 0 , 0 , 0 , 0 } 61 arrays[2] = { -2 , -2 , -2 , 0 } 62 arrays[3] = { -2 , 0 , 0 , 0 } 63
64 setTumo( arrays , 1 , 2 ) --2回転目 65
66 arrays[0] = { 0 , 0 , 0 , 0 } 67 arrays[1] = { -2 , -2 , 0 , 0 } 68 arrays[2] = { 0 , -2 , 0 , 0 } 69 arrays[3] = { 0 , -2 , 0 , 0 } 70
71 setTumo( arrays , 1 , 3 ) --3回転目 72
73 --数値が同じなため、同じ役割のブロックが出現するが、正の値を代入したため色は出現ごとにランダムとなる。
74 --回転しても形状が変わらない場合は一つのみ登録すればよい。
75 arrays[0] = { 0 , 0 , 0 , 0 } 76 arrays[1] = { 0 , 2 , 2 , 0 } 77 arrays[2] = { 0 , 2 , 2 , 0 } 78 arrays[3] = { 0 , 0 , 0 , 0 } 79
80 setTumo( arrays , 2 , 0 ) --0回転目 81
82 --入れ替え型のツモの作成例
83 arrays[0] = { 0 , 0 , 0 , 0 } 84 arrays[1] = { 0 , 1 , 0 , 0 } 85 arrays[2] = { 0 , 2 , 0 , 0 } 86 arrays[3] = { 0 , 3 , 0 , 0 } 87
88 setTumo( arrays , 3 , 0 ) --0回転目 89
90 arrays[0] = { 0 , 0 , 0 , 0 } 91 arrays[1] = { 0 , 3 , 0 , 0 } 92 arrays[2] = { 0 , 1 , 0 , 0 } 93 arrays[3] = { 0 , 2 , 0 , 0 } 94
95 setTumo( arrays , 3 , 1 ) --1回転目 96
97 arrays[0] = { 0 , 0 , 0 , 0 } 98 arrays[1] = { 0 , 2 , 0 , 0 } 99 arrays[2] = { 0 , 3 , 0 , 0 } 100 arrays[3] = { 0 , 1 , 0 , 0 } 101
102 setTumo( arrays , 3 , 2 ) --2回転目 103
104 --変化型ツモの作成例
110 setTumo( arrays , 4 , 0 ) --0回転目 111
112 arrays[0] = { 0 , 0 , 0 , 0 } 113 arrays[1] = { 0 , 2 , 2 , 0 } 114 arrays[2] = { 0 , 2 , 2 , 0 } 115 arrays[3] = { 0 , 0 , 0 , 0 } 116
117 setTumo( arrays , 4 , 1 ) --1回転目 118
119 arrays[0] = { 0 , 0 , 0 , 0 } 120 arrays[1] = { 0 , 3 , 3 , 0 } 121 arrays[2] = { 0 , 3 , 3 , 0 } 122 arrays[3] = { 0 , 0 , 0 , 0 } 123
124 setTumo( arrays , 4 , 2 ) --2回転目