この初心者講座で各命令の基本的な使い方を学んだけれど、それをどう使えばゲームとして完成させられるのかが分からない…という人もいるかと思います。
実は、どんなジャンルのゲームであっても、基本的なプログラムの構造を基にして作られています。
操作の説明などを表示
操作の入力を待つメインループ
操作の結果を表示
メインループに戻る
…というような流れが、全てのゲームで使われています。
もちろん、メインループ内に複数のループが入ったり、複数のサブルーチンがあったり…と、たくさんの要素が追加されているのですけど、おおざっぱな構造は、上記の通りなのです。
具体的な例を見たほうが分かりやすいので、ジャンケンのサンプルを用意しました。
ジャンケンはルールを知っている人が多く、結果も分かりやすいので、サンプルとして最適です。
とりあえず、緑色のコメント以外を入力してみてください!
入力したプログラムを実行(RUN)すると、この画像のように表示されます。
実際の画面では、左上に表示されていますが、見やすくするために画像を加工しています。
操作の説明が表示され、ボタンを押すと結果の表示に移ります。
この画像の部分がメインループで、Xボタンを押すまで繰り返しジャンケンをすることができます。
A・B・Yボタンのいずれかを押すと、この画像のように表示されます。
実際の画面では、左上に表示されていますが、見やすくするために画像を加工しています。
この画像では、Aボタンを押して、コンピューターがチョキを出したので、プレイヤーの勝ちとなっています。
結果が表示された状態で、何かボタンを押せば、結果を消して最初に戻ります。
全てのゲームが、このような構造で作られています。
ゲーム内容によって表示は変わりますけど、おおざっぱな仕組みは同じです。
基本編では、ジャンケンの結果を分岐するための IF ~ THEN が並列に並んでいましたが、それをグループに分けてまとめるのが応用編です。
ジャンケンのような条件分岐だと、どちらでも同じ処理となるのですけど、もっと複雑な条件分岐を作りたい場合には、応用編のような多層構造の IF ~ THEN が必要になります。
ちなみに、この画像ではプログラムの最後が見えませんが、基本編と全く同じです!(※変化する部分が分かれば良いため、省略しました。)
プレイヤーがグーを出した時の3パターンというように、プレイヤーの選択ごとにグループ化することで、判定のミスを減らすことができますし、プログラムの見やすさも良くなります。
複雑な条件を判定する場合には、このような多層構造の IF ~ THEN を使えるようになったほうが有利です。
並列の IF ~ THEN でもできないわけじゃないのですけど、プログラムが凄く長くなってしまうし、誤判定が発生してしまう可能性が高くなるので、あまりお勧めできません。
私も最初の頃は並列でしか入力できていませんでしたが、だんだんと多層構造で入力できるように変わってきました。
ジャンケンのような単純な判定は、並列でも多層構造でも同じで、誤判定も発生しませんから、どちらで入力しても構いません。
基本編の23行目から31行目を応用編の23行目から37行目までに変えられるということを理解できれば、別のプログラムを作る時にも応用できるでしょう。
多層構造のほうが行数は多くなってしまいますが、IF ~ THEN の間が短くなるので、分岐条件のチェックがしやすくなります。
基本編の文字だけジャンケンでもゲームとして成立していますが、絵があるジャンケンのほうが見た目が良く、楽しいと感じますよね。
発展編では、スプライトを使ってキャラクターとジャンケンの手を追加してみました!
プログラムの構造は基本編と同じですが、スプライトを表示したり、文字の表示位置を調節したり、さまざまな改良をしているため、行数が大幅に増えています。
応用編のサンプルを基にして作ったので、保存(セーブ)してあった人はロードしてプログラムを追加してください!
応用編のプログラムと比べると、かなり違って見えるかもしれませんが、基本的な構造は一緒であるというのが分かりますか?
どんなゲームもいきなり完成するわけではなく、その作品に必要なプログラムを追加していくことで完成に至ります。
だから、最初はシンプルな形で作っていき、だんだんと追加していくのが近道なのです。
基本編から発展編までの内容を見れば、追加されたプログラムの多さが分かるでしょう。
作品の規模によってプログラムの行数が大きく変わるので、完成までにかかる期間はそれぞれですけど、小規模でも数時間から数週間かかったりするので、気長に進めるしかありません。
完成する日を目指して頑張りましょう!
入力したプログラムを実行(RUN)すると、この画像のように表示されます。
デフォルト素材だけで作っているため、プレイヤーをハカセ、コンピューターをダミーさんにしています。
ダミーさんとジャンケンの手はデフォルト素材の向きでは不都合なので、アトリビュートを変更することによって、このように表示されています。
スプライトが表示されることによって、画面が華やかになりますよね。
アトリビュートが難しくて分からない…という人は、この後の補足資料という項目を見てください!
A・B・Yボタンのいずれかを押すと、この画像のように表示されます。
この画像では、Bボタンを押して、コンピューターがグーを出したので、プレイヤーの負けとなっています。
結果が表示された状態で、何かボタンを押せば、結果を消して最初に戻ります。
応用編と大きく異なるのが、スプライトの表示を元に戻す必要があることです!
キャラクターの表情や出したジャンケンの手を元に戻さないと、不具合が生じてしまいます。
スプライトは状況に応じて操作する必要があることに注意してください!
発展編のプレイ画面を見て、気付いたかもしれませんが、ジャンケンの手が全て表示されているのだから、それをタッチして選べたら良いと思いませんでしたか?
もちろん、タッチ操作できるようにプログラムを変更すれば、そのようにもできます。
また、BGMを追加したり、勝負の回数を増やしたり、登場キャラクターを変更したり、いろいろなアレンジもできます。
この講座でそれらを追加しようとは思っていませんが、このサンプルを更に発展させていくヒントになったと思います。
この初心者講座で扱っているのは、基本的な事だけですので、まだまだ知るべき知識や技術がたくさんあると思います。
でも、基礎が分かっているのと分かっていないのとでは、大きく違います!
初心者講座の各章で学んだ知識と技術があれば、プチコン4でのプログラミングの基本はできていると思います。
後は、それぞれで応用していくだけです!
もし忘れてしまったことがあったら、初心者講座を復習してみてくださいね。
アトリビュートについての説明は、第1章でも行っているのですが、より分かりやすくなるサンプルを作成したので、こちらに追加しました。
このサンプルを実際に入力してみたほうが理解が深まると思いますけど、画像を見るだけでも数値がすぐに分かるので、参考にしてみてください!
デフォルト素材をそのまま表示すると、アトリビュートは 0 です。
横に反転させて表示したい場合は、アトリビュートを 4 にすれば良いと分かります。