MinetestのMeseconでプログラミング
はじめに
私は中学校技術科の授業でMinetest(マインテスト)を使ったプログラミングをしています。日本語の資料が少なくて苦労したので、入門用の資料をここにおいときます。MinetestではMesecons(メセコン)というMODを導入することで、マイクラの「レッドストーン回路」と似たような回路を作ることができます。
ランプ点灯
感圧板(Stone Pressure Plate)を踏むとランプ(Mesecon Lamp)が点灯します。
ピストン起動
感圧板を踏むと粘着ピストン(Sticky Piston)が起動します。
遅延
感圧板を踏んでしばらくしてからランプが点灯します。(Delayerを使用)
AND回路
2枚同時に感圧板を踏んだ場合のみランプが点灯します。(AND Gateを使用。他にもOR Gateとか色々あります。)
繰り返し
3秒おきに謎の花(Blinky Plant)から信号が発せられ、ピストンが上下動を繰り返します。
隠し扉
感圧板を踏むと門の中のブロック(Ghoststone)が消えます。
警報ランプ
プレイヤーがPlayer Detectorに近づくとライトが点灯します。
エレベーター
左のレバーを倒すとエレベーターのブロック(Vertical Movestone)が上に移動します。左のレバーを戻してから右のレバーを倒すと、下に移動します。
乱数(Luacontroller)
感圧板を踏むと赤・青・黃のLightstoneのどれかがランダムで光ります。Luacontrollerという部品を設置して、スクリプトを記述して使います。被覆ケーブル(Straight Insulated Mesecon)は平行に敷設できるので、回路を小型化できます。
Luacontrollerに記述するスクリプト
if (event.type == "on" and event.pin.name == "A") then
n = math.random(1,3)
if (n == 1) then
port.b = true
elseif (n == 2) then
port.c = true
else
port.d = true
end
end
if (event.type == "off" and event.pin.name == "A") then
port.b = false
port.c = false
port.d = false
end
カウンター(Luacontroller)
Aに信号が入力されると、1回目はB、2回目はC、3回目はDに信号が出力されます。4回目にはB,C,Dの全ての信号が消えます。
if (event.type == "program") then
mem.n = 0
end
if (event.type == "on" and event.pin.name == "A") then
mem.n = mem.n + 1
if (mem.n == 1) then
port.b = true
elseif (mem.n == 2) then
port.c = true
elseif (mem.n == 3) then
port.d = true
else
port.b = false
port.c = false
port.d = false
mem.n = 0
end
end
繰り返し処理(Luacontroller)
2秒おきにA,B,C,Dの順に信号が出力されます。最後に全ての信号がオフになり、また繰り返します。
interrupt(2, "timer")
if (event.type == "interrupt" and event.iid == "timer") then
if (mem.n == 1) then
port.a = true
elseif (mem.n == 2) then
port.b = true
elseif (mem.n == 3) then
port.c = true
elseif (mem.n == 4) then
port.d = true
else
port.a = false
port.b = false
port.c = false
port.d = false
mem.n = 0
end
mem.n = mem.n + 1
end
おわりに
ここに挙げた作例を組み合わせるだけでも、結構面白いものが作れると思います。マイクラのレッドストーン回路を使いこなせている子なら、すぐに適応できると思います。初心者でもそんなに難しくないはず。