関数
投稿者 : メリッサ(p234.net059086002.tnc.ne.jp)
- 2006/08/26(Sat) 11:44
No.10259
|
|
|
|
|
メリッサです。
早速質問ですが、どのオブジェクトでも引き出せる関数はどうやって作るのでしょうか。 function 関数名(){}を使えばいいと思うのですが、 この文をどのクラスのオブジェクトに書けばいいのかわかりません。 お願いします。
|
継承
投稿者 : かしょー(ZS202132.ppp.dion.ne.jp)
- 2006/08/26(Sat) 14:36
No.10260
|
|
|
|
OYAというクラスに
Extends SpriteChar
function neco(){ //処理 }
と書き、その関数を使いたいクラスを
Extends OYA
で始めれば、OYA内に書いた関数を使用する事が出来ます。
所謂継承なのですが、一度調べてみるとよいかと。
|
Re: 関数
投稿者 : メリッサ(p247.net059086012.tnc.ne.jp)
- 2006/08/26(Sat) 14:54
No.10261
|
|
|
|
お返事ありがとうございます。
しかし、上の方法だと、OYA(親)がSpriteCharということなので、子のクラスをDXにしたいけど…という場合やシークレットにしたい…というときに困ってしまいます。 すみませんが、DxCharもシークレットもすべてを含むクラス。つまりオブジェクトすべての親となるクラスはないのでしょうか。お願いします。今調べています。
|
Re: 関数
投稿者 : x.x(pd3a420.tkyoac00.ap.so-net.ne.jp)
- 2006/08/26(Sat) 18:31
No.10262
|
|
|
|
$クラス名.関数名() でほかのクラスからも参照できます。 例えば、$my2内で定義されている関数 function f1(){} を$my1で使いたければ、$my1内で $my2.f1(); とすれば$my1内でも使うことができます。
|
Re: 関数
投稿者 : メリッサ(p166.net059086000.tnc.ne.jp)
- 2006/08/26(Sat) 19:50
No.10263
|
|
|
|
ありがとうございます
ゲームを作っていますが、なかなか進まず苦戦中です。 これからもよろしくおねがいします
|
Re: 関数
投稿者 : 大月(240.229.192.61.east.flets.alpha-net.ne.jp)
- 2006/08/28(Mon) 02:21
No.10264
|
|
|
|
うちのゲームでも $lib というライブラリ(独自関数群)オブジェクトを一つ作って他のいろんなオブジェクトから呼び出しや参照をしてます。 どんどんいろんな関数や変数が付け足されて、既に関数群では収まらないようなモノに変化しつつありますけど(笑
よく使うのは if( min < a && a < max ) を関数化した $lib.range( min, max, a ); ですかね。見た目がかなりすっきりするんで使い勝手は良好です。
|
Re: 関数
投稿者 : メリッサ(p157.net059086008.tnc.ne.jp)
- 2006/08/28(Mon) 17:47
No.10265
|
|
|
|
やはり、初心者から中級者になるには関数によっていかに効率のいいプログラムを書けるか、ですね。 私はもう1年もtonyuをやっているのでそろそろ初心者という肩書を返上したいです。
|
Re: 関数
投稿者 : 大月(240.229.192.61.east.flets.alpha-net.ne.jp)
- 2006/08/28(Mon) 18:27
No.10266
|
|
|
|
ちなみに継承というのは、親クラスになにか付け足しをして子クラスを作るものです。 tonyuで全てのオブジェクトの親であるクラスはその名も「object 」というのがありますが、ここから派生させて「oya」クラスを作ったとしても、SpriteCharやDXCharはobjectから派生したクラスであることに変わりはないので、oyaで追加したプロパティやメソッドを使うことはできません。 図解するとこんな感じです。
Object--+--Sprite--PlainChar--+--SpriteChar | |--DXChar |--Oya
つまり末端のクラスにある機能の全てを使えるクラスというのは、オブジェクトプログラミングでは存在しないということです。
ですが、SpriteCharはDXCharで代用が効くので(というよりDirectXを使うのが前提であればSpriteCharを使うメリットが薄い)
Object--+--Sprite--PlainChar--+--SpriteChar |--DXChar--oya--+--slime |--orc |--wolf
たとえば全ての敵キャラの親となるクラスをDXCharの下に作り、それをさらに継承する形で各敵キャラを作っていく方法を採れば oyaに、敵キャラを動かす上で共通する処理をまとめて書いておくことができるようになります。 (しかも修正する場合もoya1カ所を直せば済む)
どっちの手を使うかは、自分のプログラミング能力や設計の仕方によってやりやすい方法を選べば良いです。 難しいことに挑戦して四苦八苦するよりは、簡単な方法を並べてでもゲームが無事動作することの方に価値があると考えます。
ではがんばってくださいませ。
|
Re: 関数
投稿者 : メリッサ(p096.net059086014.tnc.ne.jp)
- 2006/08/28(Mon) 18:48
No.10267
|
|
|
|
ありがとうございます。 自分のやりやすいようにプログラミングし、必要があれば発展的な高度なプログラミングをしていきたいです。
|
|