2011年02月20日
「迷走しながら進む(その2)」
みなさん、こんにちは~
お仕事のかた、お勤めご苦労さまです。
休みの人は、何していますか?
私の土曜日は、JAVAでブロック崩しを作ってみましたよ~
こちらで、よければ遊んでください。
アプレットが起動しない人は、
「JAVA VM」をダウンロードして下さいね。
ゲームは、「スペースボタンを押して、離して下さい」
球が飛びだしますよ~
コリジョンの取り方など、
改良の余地はまだまだありますが、一応、形にしてあります。
作りこみ始めるといろいろやりたくなるのですが、
あくまでも、ゲームプログラミングの勉強ということで、
ソースの量が増えすぎない程度にしておきました。
これから4~5年ぐらい、
iphone , android でのアプリ開発は続くと思います。
言語では、JAVAとC/C++の両方を使えるようにしておきたいですね~
ふと思えば、ゲームプログラミングなんていうのは、
まさに、迷走のしながら作るものです。
設計とコーディングを同時に行うことは、
実験と検証の繰り返し。
さらに見栄えや(グラフィック)、おもしろさ(ゲーム性)、
というファクターを入れたら、マルチ感覚ですね~
今回はソースは公開しませんので、
少し作り方のヒントを教えます。
まずオブジェクト思考で作りますから、
できれば全ての部品を、基底クラスを共通化したいところです。
まず、部品にあたるのは、ボール、ブロック、ラケット、壁ですね。
さらに、エフェクトや点数表示なども含めることができるでしょう。
あとは、これらの部品全体をコントールするクラスや、
アプレットなどの独立したクラスが必要になります。
ここで最初の4つの部品についての機能を考えてみましょう。
まず、共通している実装する処理は、
1.アクションルーチン
2.座標移動ルーチン
3.画像表示ルーチン
4.コリジョンルーチン
これぐらいでしょうか?
ここで、こんな疑問を持つ人もいます。
「壁は動かないから、ブロックとは違うのでは?」
勿論、そうですが、
壁を、上下左右の4つに分かれた、
大きなブロックと見れば、どうでしょうか?
共通化した方が、
プログラム処理もシンプルになります。
このように、基底クラスは、
なるべく多くの部品に共通になるよう、
抽象化して、まとめていきます。
そして、それを継承して、
処理が異なる場合は、オーバーライドすればOKです。
極端な話、何も処理をしたくなければ、
空っぽの関数を追加して上書きすれば、
壁は、絶対に移動しなくなります。(^^;;
でも、どうでしょう??
ちょっと待ってください。
もしかすると、壁も動かした方が、
ゲームとしておもしろくなるかも?
と、思いついた瞬間・・・
壁は、絶対に動かないと物として、
プログラムしていたら仕様変更となります。
おそらく感がよい人は、ここまでの話で、
プログラムミングのコツに気付いたと思います。
要するに極端な話、
すべてを変数化してしまえば、仕様拡張が容易なのです。
もし2つの変数の足し算がある場合、
1)X+1=?
2)X+Y=?
中途半端に、定数を使うのではなく、
両方とも変数にすれば、拡張性が広くなりますよね~
つまり壁は、動かないのではなく、0の移動を繰り返している。
数式でいえば、X+0=X なんです。
こんな感じでイメージできれば、
プログラムも柔軟に対応できるでしょう。
年をとると、性格や頭が堅くなりますが、
プログラムをしていると想像力もつき、
柔軟性が出てきますよ~(^^)/
今日も柔らかい気持ちで、
「いいスマイル」で行きましょう!
ツイッターはじめました~フォロー待ってま~す!!
↓↓↓下記の3つのバナーをクリックして下さい。ランキングUPにご協力をお願いします。↓↓↓
投稿者 shiozumi : 12:08