(10.2)メモリをかたまりで使う、(10.2.3)全てのマス目がどうなっているか覚える
ハンドへルド・ビュー:
-- 10.2 メモリをかたまりで使う -- 10.2.3 全てのマス目がどうなっているか覚える local w = platform.window.width() -- 画面の幅 local h = platform.window.height() -- 画面の高さ local lineCount = 20 -- 縦の段数(外側の段数) local colCount = 10 -- 横の段数(内側の段数) local sideLen = math.floor(h/(lineCount * 1.25)) -- 四角の 1 辺の長さ(隙間をあけないなら 1 辺の長さは 1 段の高さと同じにすればよい) local dansa = math.floor(h/lineCount) -- 1 段の高さ local marginLeft = sideLen * 1 -- 左端の余白 local marginTop = sideLen/2 -- 上端の余白 local refWallL = {marginLeft, marginTop} -- 左壁始点 local refWallR = {marginLeft + dansa + dansa * (colCount), marginTop} -- 右壁始点 local refBottom = {marginLeft + dansa, marginTop + dansa * (lineCount - 1)}--底始点 local refInnerL = {refWallL[1] + dansa, marginTop} -- 内壁左側始点 local gray = 0xC5C1AA local red = 0xC67171 local blue = 0x7D9EC0 --- マス目の状態を覚えておくテーブルを作る ----------- --- インデックスは Lua の習慣に従って 1 から始める mt = {} -- 空のテーブルを作成する for i = 1, lineCount do -- 行を作る mt[i] = {} for j = 1, colCount + 2 do -- 列を作る mt[i][j] = 0 -- 初期値を入れる end end ---- 部分プログラム(左壁始点の何マス目から, 1 辺いくつの正方形を, 横に何個, 縦に何個敷き詰める, 何色で, gc)------ ---- 始点をゼロ・マス目とする function drawBlocks(x, y, sideLen, yokoCount, tateCount, color, gc) gc:setColorRGB(color) for i = 0, tateCount - 1 do for j = 0, yokoCount - 1, 1 do gc:drawRect(refWallL[1] + dansa * (x + j), refWallR[2] + dansa * (y + i), sideLen, sideLen) mt[y+(i+1)][x+(j+1)] = 1 -- 四角を描いたらマス目テーブルに 1 を代入する end end end function on.paint(gc) ---[[ drawBlocks(3,6,sideLen,3,7,red,gc) -- 試しにブロックを描いてみる --]] drawBlocks(0, -- 左壁を描く 0, sideLen, 1, lineCount, gray, gc) drawBlocks(colCount + 1, -- 右壁を描く 0, sideLen, 1, lineCount, gray, gc) drawBlocks(1, -- 底を描く lineCount - 1, sideLen, colCount, 1, gray, gc) ---[[確認のため、マス目行列の内容を表示する for i = 0, lineCount - 1 do for j = 0, colCount + 1 do gc:setFont("sansserif", "r", 7) gc:setColorRGB(blue) gc:drawString(mt[i+1][j+1], 1 + refWallL[1] + dansa * (j), 4 + refWallL[2] + dansa * (i), "middle") end end--]] end
参考文献:
プログラムはこうして作られるプログラマの頭の中をのぞいてみよう
- 作者: 平山尚(株式会社セガ)
- 出版社/メーカー: 秀和システム
- 発売日: 2013/09/25
- メディア: 単行本
- この商品を含むブログ (5件) を見る