カタツムリ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にご協力をお願いします。↓↓↓

にほんブログ村 経営ブログへランキングUP!

ランキングUP!

banner2.gif 人気blogランキング!

投稿者 shiozumi : 12:08