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」の中にこのように記述したら、実行してみましょう。

画面の大きさが先ほどよりも小さくなり、ピッタリになりましたね!

お疲れさまでした!