Basic8 Understanding Main Loop And Driver 日本語訳メモ Basic paradigm

基本パラダイム

Event-drivenとmain-loopは、プログラムを構造化するための2つの主要なパラダイムです。これらはすべて、広範囲のアプリケーションで広く使用されています。BASIC8プログラムの最も外側の構造は、コードブロックが1秒間に複数回実行されるmain-loopがベースです。;各サイクルはフレームと呼ばれます。コードは30FPSで実行され、レンダリングは60FPSです。

プログラムの最小限のセットアップは、以下のように短縮できます。:

def update(delta)
enddef

update_with(driver())

BASIC8はプログラムをtop-downで実行します。DRIVER()関数は、常に現在のプログラムで唯一アクティブなDRIVERを返します。;UPDATE_WITH(drv[,r])関数はこのプログラムをチェックする方法をDRIVERに伝え、この場合 "UPDATE" ルーチンを探します。





別のルーチン名を明示的に使用する場合は、次のコードを使用します"BLAH"。:

def blah(delta)
enddef

update_with(driver(), call(blah))




または、同じ目的で文字列指定子を使用します。:

update_with(driver(), "blah")




tickルーチンはLAMBDAを使って匿名でも構いません。:

update_with
(
driver(),
lambda (delta)
(
)
)





"delta"パラメータは、最後のtickから(秒で)経過した時間を示します。これは、時間に関連する変更を計算するのに役立ちます。
例:等速直線運動による円の移動:

x = 0
def update(delta)
x = x + delta * 10
circ x, 63, 5, rgba(0, 0, 255)
enddef

update_with(driver(), call(update))




"delta"が存在する理由は、実際にはフレームを刻むのに予想よりも少し短いか長い時間がかかるかもしれず、実際の間隔を知る方法が必要だからです。




main-loopとしてルーチンを使用する代わりに、手動で無限ループを作成することもできます。:

x = 0
while true
delta = sync
x = x + delta * 10
circ x, 63, 5, rgba(0, 0, 255)
wend


サイクルをdriverにコミットするには、フレームごとにSYNC関数を手動で呼び出す必要があり、SYNC関数は"delta"時間を返します。

main-loopパラダイムは、ゲームを含む様々なフィールドで使用され、これは何かを更新しレンダリングする上でのすべてのブロックです。これは、プログラムの他の部分をEvent-drivenパラダイムで編成できないという意味ではありませんが、別の話題です。

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント