次の面に移る †敵をすべて倒すと、次の面に移る処理を行いましょう。 2面を作る †といっても、今のところゲーム画面が1つしかないので もう1つ面をつくることにしましょう。 今までのゲーム画面を1面、これから新しく作る面を2面とします。 まず1面のページを開きます。 そして「ファイル」の「名前をつけて保存」を選びます。 ここではstage2.cmmlという名前で保存します。 これで、1面の内容が2面にコピーされました。 今は2面が開いているので、2面のパターンを作ってみましょう 敵の数をふやしたり、はしごの配置をかえたり、いろいろ変更をくわえてみてください。 1面をクリアしたら、2面を開始する処理を作る †さらに、1面をクリアしたらこの2面が始まるようにしましょう プロジェクトマネージャを開き、再び1面を開きます。 まず、クリアしたかどうかの判定を行いましょう クリアしたら2面に移動するという動作を行うオブジェクトを作ります。 オブジェクトを作るを参考にオブジェクトを作成します。ここでは$stage1という名前にします。 さらに、「オブジェクトの種類」を「シークレット」にします。 このオブジェクトは、クリアしたかどうかの判定だけを行うので、実行中は表示する必要がありません。「シークレット」にすると実行中に表示されないオブジェクトになります。 オブジェクトをダブルクリックし、次のように入力します。 extends SecretChar; enemyLives=1; while (enemyLives==1) { enemyLives=0; for (e in $chars) { if (e is Enemy) enemyLives=1; } update(); } $projectManager.loadPage( ''$page_stage2'' ); ''$page_stage2''の部分は、2面のページの名前です。これはプロジェクトマネージャで確認して、もし違う名前だったらその名前にしてください。 実行してみると、敵が全滅すると2面が開始します。 ここで、$stage1オブジェクトの動作を説明します。 まず、敵が全滅するまでは、この部分を実行します: enemyLives=1; while (enemyLives==1) { enemyLives=0; for (e in $chars) { if (e is Enemy) enemyLives=1; } update(); } while文の働きにより、enemyLivesが1のときは次の部分(while文の中)を実行します。 enemyLives=0; for (e in $chars) { if (e is Enemy) enemyLives=1; } update(); ↑この処理は、enemyLivesが0になるまで繰り返します。 enemyLivesは enemyLives=0; によって、一旦0になりますが for (e in $chars) { if (e is Enemy) enemyLives=1; } によって、画面内に敵が1つでもいる場合、1になります 結果として、敵がまったくいなくなると、enemyLivesが0になり、while文以降の処理に以降します。 while文以降の処理では、2面を読み込みます。 $projectManager.loadPage($page_stage2); 2面をクリアしたときの処理を追加する †今回は簡単のため、2面クリアしたら終わりにして、タイトルに戻るようにしましょう。 まず2面を読み込みます オブジェクトを作るを参考にオブジェクトを作成します。ここでは$stage2という名前にします。また、先ほどと同じく、「シークレット」を選択します。 オブジェクトをダブルクリックし、次のように入力します。 extends SecretChar; enemyLives=1; while (enemyLives==1) { enemyLives=0; for (e in $chars) { if (e is Enemy) enemyLives=1; } update(); } $projectManager.loadPage( $page_start ); $page_startの部分は、スタート画面のページの名前です。これはプロジェクトマネージャで確認して、もし違う名前だったらその名前にしてください。 |