狠狠撸

狠狠撸Share a Scribd company logo
プログラム全体構造とタイトル画面
第 9 回
そもそも
プログラム全体構造とタイトル画面
というタイトルですが、なぜ全体構造とタイトル画面が併記されたのか!!
その理由は、
ゲームのメイン部分とタイトル部分は同格なのです!
というのも、ゲーム部分とタイトルは同時に動かないですからね。
そういうわけで、ゲームのメイン部分と同じくらいの
スケールの大きさの機能にしてあげないといけません。
となると、ゲームのメインループというのは
どれくらいのスケールのものなのか
を知る必要があります。
そこで、全体像の紹介となるわけです。
全体像の把握は、 Main.js にあり、です!
ここさえ追えれば全体像が理解できたも同然です!
ちなみにこの構造はどのゲームでも大体こうなっている
黄金パターンなのです。
そもそも JavaScript 的に実行される部分というのはどこなのか
という話ですが、最初に実行されるのは、
if (window.TouchEvent)
と書かれている部分です。
他の function から始まる部分は
”関数の “宣言 というものです。
宣言、ということはまだ実行していないわけです。
マニフェストみたいなもんですね。
やらない可能性もあります。
そして皆さんが期待しているメイン部分はここです!
ここから実行せずにプログラムを追いかけていきます。
GameStart() にカーソルを合わせた状態で、
Visual Stadio を使っている人は 右クリック => 定義へ移動
Brackets を使っている人は Ctrl + J
を押してみましょう。
すると、 GameStart() がどこにあるか案内してくれるはずです。
GameStart() はこうなっているはずです。
まずはデータの読み込みから始まります。
LoadImage() を簡素化するとこんな感じです。
LoadImage() の特徴は、
1.メインのプログラムと非同期で読取りをしている
2.LoadSound() と連携を取っている
3.Sound() も読込み終わっていれば init() を呼ぶ
という感じです。
複雑に見えるのは、1つ読込み予約をして、
読取り終わったら再度自分を呼んでもらうようにしているからです。
(この部分が非同期になっているカラクリです)
LoadSound() も基本的には同じ仕組みになっています。
その次は init() です。
init は initialization の省略で、
プログラムでは良く使われる省略名です。
良く使われる省略名
source
init
program
tempolary
pointer
destination
src
initialization
prg
temp
ptr
dest
=>
=>
=>
=>
=>
=>
init() は初期化を行うところです。
例えばデータのロードであったり、
アイテムや敵の配置のしなおしだったりと
ゲームが毎回同じ状況でスタートできるようにする部分です。
9回目プログラム全体の説明とタイトル画面
setInterval とは何か
1つ目の引数に渡された関数が
2つ目の引数に渡された数字の時間ごとに呼び出されるようにする
普通のプログラムでは画面更新の命令があるので
無限ループを作って、その中で画面更新の命令を OS に出します。
JavaScript 、というかブラウザでは
その命令は JavaScript の処理が終わらないと実行されません。
C とか C++
とか Java とか
for (;;) { main(); }
当たり判定
プレイヤー移動とか
画面更新
プログラム OS
当たり判定
プレイヤー移動とか
画面更新
当たり判定
プレイヤー移動とか
画面更新
画面更新
画面更新
無
限
ルー
プ
JavaScript for (;;) { main(); }
当たり判定
プレイヤー移動とか
画面更新
プログラム ブラウザ
当たり判定
プレイヤー移動とか
画面更新
当たり判定
プレイヤー移動とか
画面更新
画面更新予約
画面更新予約
OS
( ? -` ) . ? oO ( …まだ処理終わらないのかな )
無
限
ルー
プ
setInterval を使うと??
JavaScript setInterval(main, 16);
当たり判定
プレイヤー移動とか
画面更新
プログラム ブラウザ
当たり判定
プレイヤー移動とか
画面更新
当たり判定
プレイヤー移動とか
画面更新
画面更新予約
画面更新予約
OS
( `? ω ? ?) お仕事忙しい
画面更新
画面更新
main 一回
main 一回
main 一回
ゲームの処理や AI 、画面の更新や当たり判定等、
ゲームに必要な処理を行う部分です。
ここまでで解説した通り、毎フレーム実行される処理です。
いつも呼んで欲しいものはここに書くことになります。
main は何か?
そしてゲームに限らずプログラムというのは
init()
main()
terminate()
が必ず1セットになっています。
今回のゲームは terminate がないじゃないか?
… えぇ、すみません、サボりましたw
main() の中の
update();
global.hitTestAll();
draw()
はすでに皆さんが良く知っているものです。
そんなわけで、
タイトル画面とゲームのメイン画面。
どうやって作っていけばいいかなんとなく想像つきますか?
まぁ正解があるわけでもないので
個々人が感じた印象を
そのままプログラムすれば良いのではないかと思います。
というところで今日は終了になります。
お疲れ様でした。
おわり

More Related Content

9回目プログラム全体の説明とタイトル画面