セミナーに参加されました一年生の皆様、お疲れ様です。
私たちGESの用意致しましたセミナー、いかがでしたでしょうか?
できるだけついていけない人を作らないようにと、
随分長い間の講義になってしまったかと思います。
お急ぎ(?) の1年生方にはまこと申し訳ございませんでした。
他、既に技術力の高い方には退屈なものになってしまったかと思います。
とはいいましたものの、果たして私たちの講義の内容は伝わったのでしょうか?
セミナー終了後に書いて頂いたアンケート結果では、
良いと悪いの中間辺りの評価をいただきました。
しかし、細かい指摘を頂くには至らなかったため、一抹の不安が残っています。
そこで、"補講" といったノリで少しばかり色々と書いていこうと思います。
[2回]
さて、今回のセミナーで使用したじゃんけんゲームのプログラムですが、
パッと見て何をしているか分かりましたか?
プログラムを読むときに、上から順番に流れを漠然と追っていくだけでは、
頭に入ってくるものも入って来ません。
ですので、まずは理解しやすいようにプログラムの処理を大きくカテゴライズしてしまいます。
要するに、「ここからここまでの部分は、○○の更新をしているところだ」という風に、
理解しやすい単位で抽象的に括ってしまうのです。
特にゲームのためのプログラミングでは、ほとんど以下のような流れを持っています。
最初の設定や初期化処理(変数の宣言や初期値設定)
↓
▽ゲームループ開始
↓
ユーザーからの入力(キーボード・マウス・ゲームパッド)
↓
処理1の更新(例えば主人公を入力に応じて移動させる)
処理1の表示(例えば主人公を画面の移動させたところに描画する)
↓
処理2の更新(例えば敵をランダムに移動させる)
処理2の表示(例えば敵を移動させたところに描画する)
↓
少しだけ待つ(60fpsだと16.6...ミリ秒くらい待つ)
↓
△ゲームループ先頭に戻る
今回使用したじゃんけんゲームのプログラムは、
この「更新」と「表示」のように綺麗に揃っておらず、入り交じっています。
では、じゃんけんゲームから例となるものを簡単に抜き出してみましょう。
対戦回数を表示する部分です。
まず、
1.対戦回数を記録する変数の初期化「int match_count = 1;」
2.対戦回数を記録する「match_count++;」
3.対戦回数を表示する「printf("%d回戦目\n", match_count);」
の3つの部分で構成されています。
これらをカテゴリに分けると、
1.対戦回数を記録する変数の初期化 = 最初の設定や初期化処理
2.対戦回数を記録する = 処理の更新
3.対戦回数を表示する = 処理の表示
となります。
簡単ですよね?
最初の設定や初期化処理というものは、
ゲームループの中に記述することはありません。
この場合、対戦回数を記録する変数が毎回の対戦のごとにゼロに戻されたら
たまったものではないからです。
同じように、何回対戦したか記録する処理と表示する処理は、
ゲームループの中に入れなければならないことが分かります。
ともかく、少し長ったらしいプログラムでは「どこがなにしてる?」
という事を考えて読んでいくと、理解が早くなります。
ですが、もっと長ったらしいプログラムだと、どうでしょうか。
ごちゃごちゃして、段々、段々と読むのが辛くなっていき……
……ってことはないのです!!!
このカテゴリ……つまり、「理解しやすい単位」をまとめてしまう
素晴らしい考え方があるのです!!!
それは「関数」です!
この関数については、次回のGESセミナーにて詳しくするつもりです。
次はもっと楽しい気分になれる+分かりやすいセミナーを目指していくので、
よろしくお願いします。
それではまた~!
by リーダー:ふぅた
PR
COMMENT
No Title
時間があったらコメントの方も見てあげてね。
4月ぐらいのコメントが、ずっと放置されてるし。