【Age of Networks(AoN-DB)え~ちゃんぶろぐねっとわ~く】【徒然】JavaScript格闘中なう

東方二次ゲームメインからオリジナル・企業系や漫画へ。TRPGやサバゲのアナログライクも

Age of Networks(AoN-DB)え~ちゃんぶろぐねっとわ~く

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

【徒然】JavaScript格闘中なう

【ある程度の予備知識を要します】

職場でちまちま作ってるおもちゃの方が本題になりつつあるえ~ちゃんです、どうも!
もちろん、仕事はちゃんとやってますよ?
しかし、それ以上に休憩時間にちょこっと作っているJavaScriptゲームの方が楽しく感じてしまいつつあり、仕事として本末店頭でないか?と思い始めてます。正直ちょっと危ない!

今の課題は、Sleep関数ってところですね。
Sleep関数というのは、ある特定の処理を一時的に中断して、他のプログラムを動かす関数のことです。
イメージをWindows的に言うなら、ブラウザの「中止」ボタンの事だとでも思っていただければ。
もちろん厳密には違いますが、処理を一時的に中断する意味では、イメージとしては大体合ってるかと。

まず、JavaScriptについてですが、他の言語には用意されているSleepやらWait関数というものがありません。
で、あの手この手を使えば、JavaScirptでもSleep関数もどきは作れるんですが、レスポンスが悪くなる上にメモリによろしくない。
で、今まで何とかSleep関数を使わなくて良いように作り変えたり、そもそもその間の処理をしないように、という感じでちょこちょこ作り変えていたりしたんですが、そろそろマルチタスク(複数のプログラムを同時に走らせる事)をやらざるを得なくなってしまってですね。
で、ゲームって同じパラメーターを使いまわす事が結構多くて、関数渡しに特化しているJavaScriptなので使いまわし過ぎると、自分でも何やってたか分からなくなるスパゲッティソースが出来ちゃうんですね。
スパゲッティソースと言っても、トマトソースじゃないですよ?
スパゲッティみたいに、ごちゃごちゃと絡み合うプログラムの事で、読み手にはありがたくない、悪い書き方です。
イメージは、宿題で提出するノートやレポートの字が汚すぎて読めないアレに似ていますね。

では、その具体的なプログラムが何なのか、という事についてですが、パラメーター管理と入力の受付状態についてですね。
ADVゲーでよくある、「メッセージウィンドウにテキスト出しつつ、しかしマウスクリックなどの入力を受け付けて次のテキストを表示させる」というアレです。
アレなんてその典型で、「文字を表示する」プログラムと「キーボードやマウスの入力を受け付ける」プログラムが同時に走っているんですね。
でなければ、文字を入力している間はあらゆる処理は受け付けないし、入力を受け付けている間は何の処理もしない事になりますから。
(同期の問題は敢えて言いません。ややこしくなります)

PRGツクール的に言うと、「自動的に処理する」内容の条件が外れない限り、入力を受け付けなくなるあの状態です。
「定期的に処理する」と、入力を受け付ける代わりに、キー入力による割り込み処理が入るので、処理が長い場合とか、重い場合はあんまりオススメ出来ません。
よくありがちなのが、座標弄ったり表示形式変えたりパノラマ使ったりですね。
(私が勝手にグラフィカルプログラミングと呼んでいるアレです)

まぁ、それを抜きにして、キーボードのどれを押したとか、マウスでどの座標(X,Y)をクリックしたという情報は常に取得出来るようにしておいた方がプログラム的にもユーザーにも優しく感じられますよ。
問題は、それをどうやるのか、という事なんですが。
まぁ、急いでもアレなので、まったり進行でやります。
関連記事
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。