Pölygamy (日本語)

Pölygamy は小型の LÖVE フレームワーク です。

現在、状態およびキーボードのモジュールは利用可能であり、タイマー・モジュールは開発中です。各モジュールは独立して使用することができますが、それらの設計は補足的なものです。

モジュール:

Polygamy.keyboard

  • 宣言的方法によりコールバックキーを結び付けられるようにします。
  • 複数構成、および切り替えへの対応。
  • 構成の(単一)継承への対応。
  • 有効範囲 ([f-j] は f, g, h, j へ拡張されます) および Lua パターン・ライブラリに影響を受けたその他のパターンへの対応。
  • キーボードのキー・マトリックス扱うことができます。現在は US QWERTY キーボードに対してのみ完全対応しておりますが、 QWERTY, AZERTY および QWERTYZ の共通部分の集合については全般的に使用することができます (すまない、 DVORAK 利用者)。
  • 親しみやすい命令法およびオブジェクト指向コーディング様式。

Polygamy.state

  • あたかもそれが完全な LÖVE アプリケーションかのように各ゲームの状態を設計することを可能にします (任意の更新および描画コールバック)。
  • 遷移状態の対応 (before( from, to, ... ) および after( from, to, ... ) コールバックにより)

最新版および(広範囲の)説明書に関しては このフォーラムの投稿を参照してください。

こちらは Pölygamy にて記述された見本のアプリケーションです:

love.filesystem.load("library/Polygamy/init.lua")("library/Polygamy/") -- 必ず load コールバックの外側にしてください。
                                                -- 任意の love.run ループを作成するため

local state, goto, pkeyboard = Polygamy.state, Polygamy.state.goto, Polygamy.keyboard   -- 利便性のために
-- リソースの読み込み、コードによる初期化... その次に: 


--------------------------------------------------------------------------------

title = state( "Title Screen" )
              --============--

function title.before() pkeyboard.use( "title" ); print"menu" end
function title.update(dt)  --[[ タイトルを更新するためのコールバック ]] end
function title.draw()      --[[ こちらへ細かくタイトルを描画します  ]] end

pkeyboard( "title" ):setConfig( "pressed", {
	[{" ", "return"}] = function() goto("In Game")       end,
	escape            = function() love.event.push('q') end,
	[Polygamy.default] = print
})


---------------------------------------------------------------------------------

ingame = state( "In Game" )
               --=======--

function ingame.before( from, to, ... )
	if from == "Title Screen" then --[[Game.state.reset()]] end
	Polygamy.timer:resume()
	pkeyboard.use( to ) -- この場合は to == "In game" です。
	print "In Game"
end

function ingame.update( dt ) --[[ ゲームの世界へ生命を吹き込みます ]] end

function ingame.draw()   --[[ そして完全なる栄華を描画します ]] end

function ingame.after( from, to, ... )
	Polygamy.timer:pause()	
	if to == "Pause Screen" then
		-- 画面を暗くして、画面撮影を取得します
	end
end



pkeyboard("In Game"):setConfig("pressed", {
	
	[" %arrows "] = { held = function(key,_,_,dt) Hero:move(key,dt); end },
	[" "]  = function() Hero:shoot()           end,
	escape = function() goto( "Title Screen" ) end,
	p      = function() goto( "Pause Screen" ) end
})


----------------------------------------------------------------------------------

pause = state( "Pause Screen" )
              --============--
function pause.before() pkeyboard.use( "pause" ); print"Pause" end
function pause.update(dt) end -- 定義をしないならば、以前のコールバックは有効のままになります。
function pause.draw() --[[ 画面撮影上に "Paused" を表示します。 ]] end


pkeyboard( "pause" ):setConfig( "pressed", {
	escape = function() goto( "Title Screen" ) end,
	p      = function() goto( "In Game" )      end
})

-- そして球体の回転を取得します :-)

function love.load() 
    print"Start" 
    goto("Title Screen") 
end

そのほかの言語