これまでのあらすじ

なんと!!
日記なのにあらすじがある!!(笑)
これは画期的だ!!

この日記はへっぽこプログラマーのえむっちが日々なにをどう考えたかを記録しておくために書こうと思ったのを次いでだからホームページに掲載しようと考えた訳です。

で、あらすじってのは、これを書き始めるより前に考えた事を書いて置こうという訳です。


で、ここからが考えた事・・・

現在のゲームはCでほとんど記述されているなぁ・・・
ほんの数年前、(ゲーム機でいうとPS,SS以前のSFCの時代、パソコンならMS-DOSの時代)は、ほとんどが、アセンブラで記述されていたのに・・・
当時の風潮は「アセンブラじゃないのはゲームじゃない。」とか「アセンブラが出来ない奴はゲームプログラマじゃない」といった極端なものだったよなぁ・・・
でも、いまアセンブラなんていう奴はほとんどいないなぁ・・・
その代わりにC言語だよな。
えむっちもPSの仕事してるけどC言語だもん。
SSの仕事してる奴もC言語だって言ってた。
パソコンはWindows95になってからどうなんだろう?
パソコンは知り合いがいないのでわからんなぁ

ところで、数年後にC言語とかいう奴はいるのだろうか?
えむっちのこの考え方もかなり極端だよなぁ。
少なくとも現時点では・・・
しかし、全く可能性がないと否定もできない・・・

うーん、これに備えてという訳ではないが、C++でゲームを組んでみよう。
って言うか、ゲーム用のクラスライブラリを作ってみようと思う。
えむっちがへっぽこなのはヒャクも承知だ。
これはえむっちの身に余る野望だが、研究する価値は非常に大きいと思うぞ。

よって、やる!

どれぐらい前だったかわからんけど、とにかくやってみる事に決めた。


C++はオブジェクト思考言語だ。
シューティングゲームをC++で作るとすると、敵の1体1体はオブジェクトだなぁ・・・
それから、自機もオブジェクトだなぁ・・・
いやいや、アイテムとかもオブジェクトかぁ・・・
それらが、マルチタスクで動いてるんだよなぁ・・・
とすると、動くものはみんなオブジェクトか?
背景とかも?
・・・よく分からんがそんな気がするぞ。

あと、タスクを動かしてる奴がいるよなぁ。
これは、どうなんやろ?
むかし、C言語で作った奴は、生きてる敵の配列を作って番兵おいてそれを順番に調べたよなぁ・・・

そうか、オブジェクトのリストを作ってそれをたぐればいいんじゃないだろうか?

抽象化して、Object->Execute()って感じで呼び出してやればいいじゃん!!

うんうん、これはカッコイイよ。

つまり、タスクを管理するクラスと、タスクのオブジェクトの抽象クラスを作ればいいのか。

という事は・・・
タスクを管理するクラスにはAdd(Object *)ってメソッドがいるな。

で、タスクのオブジェクトの方はさっきのExecute()がいるよな。
こいつは仮想関数だ。

うんうん、そうだそうだ・・・


オブジェクトは生成するのにnewしないとだめだなぁ・・・
でも、newはmallocとたいしてかわらんのだから、遅いんじゃないか知らん?
C言語だと、最初にいっぱい確保しといて、自分で割り当てるよなぁ・・・
でも、C++なのにそんなんカッコ悪いよなぁ・・・

ん?いやいや待てよ、C++には演算子オーバーロードがあるじゃないか!!
つまりnew演算子にその割り当てをオーバーロードしてやればいいじゃないか!!
で、開放処理をdelete演算子に割り当ててやれば・・・

くぅ〜カッコイイ!!俺って天才?


newとdeleteに割り当てるのはいいとしても、サイズが固定じゃないと扱いにくいよなぁ・・・
っていうか、不定にしたらmallocとかとたいしてかわらんのしか組めん。
でも、全部のオブジェクトが一緒のサイズって訳じゃないよなぁ・・・
じゃ、どうしたらいいのん?
はっきりいってわからん!!


わからんって思ってたけど、チョットずつ大き目に作ればいいじゃん!!
っていうか、一番大きい奴にあわせればいいのでは・・・
うんうん、いいよ。


うーん、一番大きいのあわせるのはいいけど、そんな事したらキャストだらけになるんじゃないだろうか・・・?
それは、カッコワルイなぁ・・・
って、言うかそれじゃキャストしそこなったら、すぐバグるんじゃ・・・
それじゃ、せっかくのC++も意味がないよ〜。

ん?いやいや待てよ・・・
newにオーバーロードするんだから、当然クラスの数だけそれを書かなければならんのだから、
newに割り当てた関数の中でキャストした、アドレスをリターンしてやれば、キャストの回数はグーンと減るんじゃないでしょうか?

うんうん、これだよ、これ。


newにオーバーロードするのはOKだ。
ところで、この場合コンストラクタはどうなるんだ?
あと、deleteとデストラクタの場合も・・・?

わからん・・・・
先生にメールしてみよう・・・


よく考えたら、自分で試してみればいい事じゃないか!!
でも、メールしちゃったので、返事を待つとしよう。


返事が返ってきた。

「呼び出されるはず」って回答でした。

なるほど、呼び出されるのか・・・
一つ賢くなった。


戻る