山水堂
A008.マップ表示基本
マップデータに応じて赤い四角を描画するプログラムです。
http://dxlib.o.oo7.jp/dxprogram.html#N3
DXライブラリを参考にしました!
-- main.lua local MAP_SIZE = 64 local MAP_WIDTH = 10 local MAP_HEIGHT = 8 local mapdata = { {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 1, 0, 1, 1, 1, 1, 1, 1, 0}, {0, 1, 0, 1, 1, 0, 0, 0, 1, 0}, {0, 1, 1, 1, 1, 0, 0, 0, 1, 0}, {0, 1, 0, 1, 0, 0, 0, 0, 1, 0}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, } function love.keypressed(key, isrepeat) -- ■キーが押された! -- エスケープボタンが押されたら終了イベントを起こす if key == "escape" then love.event.quit() end end function love.draw() -- ■描画処理! for y = 1, MAP_HEIGHT do for x = 1, MAP_WIDTH do if mapdata[y][x] == 0 then -- 現状の色を取得! local r, g, b, a = love.graphics.getColor() -- 赤色に変更! love.graphics.setColor(255, 0, 0, 255) -- 矩形を描画! love.graphics.polygon( "fill", (x - 1) * MAP_SIZE, -- 左上 (y - 1) * MAP_SIZE, x * MAP_SIZE, -- 右上 (y - 1) * MAP_SIZE, x * MAP_SIZE, -- 右下 y * MAP_SIZE, (x - 1) * MAP_SIZE, -- 左下 y * MAP_SIZE ) -- 色を返す! love.graphics.setColor(r, g, b, a) end end end end
起動すると、黒色の部分と赤色の部分で描画されましたね!
このサンプルでは描画のみなので、必要のないlove.loadなどのコールバックは省いてあります。
love.draw内で、mapdataをぐるぐるとまわして、ゼロになっている個所を赤色にしています。
love.graphics.polygonというのが出てきましたね。
これは、三角形以上を描画するためのLOVE用の関数です。
https://www.love2d.org/wiki/love.graphics.polygon
引数の初めが、"fill"か"line"で、塗り潰すか、線にするかを指定。
その後は、x、yの組み合わせで3つ以上(三角形以上)になるように渡すというものです。
四角にしたいので、x、yの組み合わせを4つ渡しています。
ぱっと見だと何をやっているかが判りにくいですが、案外大したことないです。
y座標が下側なので、点を右回りに渡す、ということだけ注意しましょう。
さて、このプログラムを動かしてみると、指定サイズよりもプログラムが大きいので、黒い部分のノリシロが見えて格好悪い感じですね。
それもそのはず、640*480を想定してプログラミングしているにもかかわらず、デフォルトのプログラムの大きさは800*600なのです。(0.10.1時点)
ということで、画面サイズを変える処理をついでに覚えましょう。
LOVEでは、「conf.lua」という設定変更用の特別なファイルを用意することが出来ます。
フォルダの中身を開いて、ファイルを作ります。
「フォルダ内空白個所」(右クリック)→新規作成→テキスト文書
で、テキストのファイルを作ります。
次に、テキストファイルの名前を変えます。
新しいテキスト ドキュメント.txt(右クリック)→名前の変更→「conf.lua」に変更
これで、conf.luaが出来ました!
フォルダの中には、「main.lua」と「conf.lua」が一緒にあればオッケーです!
では「conf.lua」で、画面サイズを640*480に変更してみましょう。
-- conf.lua function love.conf(t) t.window.width = 640 t.window.height = 480 end
「conf.lua」の中にこのように記述したら、実行してみましょう。
画面の大きさが先ほどよりも小さくなり、ピッタリになりましたね!
お疲れさまでした!