質問です
投稿者 : 柿拓(245.114.44.61.fbb.aol.co.jp)
- 2008/03/17(Mon) 21:52
No.11750
|
|
|
|
|
『敵に見つかると追いかけられる』というプログラムをかきてみたのですがエラーがおこってできません。 なにか間違っているのでしょうか? extends SpriteChar; if (abs($Mychar.y-y)<20> Block_exist_x(x,y,$Mychar.x)==0) vx= 3;
while(1) { if (x< $Cursor .x) x+=2; if (x> $Cursor .x) x-=2; if (y< $Cursor .y) y+=2; if (y> $Cursor .y) y-=2; update(); } ↑がそのプログラムです。 エラーメッセージでは 『メソッドBlock_exist_xは未定義です』 と表示されます。
|
Re: 質問です
投稿者 : マッキー(0x3d2cb041.rev.ncv.ne.jp)
- 2008/03/18(Tue) 16:12
No.11752
|
|
|
|
間違ってる場所は、
Block_exist_x(x,y,$Mychar.x)
のところで、メソッド呼び出しになっています。 つまり、
function Block_exist_x(){ ... }
こんな感じのが、かかれていないと、エラーになります。 サンプルがないので、アドバイスとかはできませんが。 エラーの起こる理由は、こういうことです。
|
Re: 質問です
投稿者 : 柿拓(245.114.44.61.fbb.aol.co.jp)
- 2008/03/18(Tue) 16:30
No.11753
|
|
|
|
マッキーさんどうもありがとうございます。 試してみますね。
|
Re: 質問です
投稿者 : 柿拓(245.114.44.61.fbb.aol.co.jp)
- 2008/03/19(Wed) 19:45
No.11757
|
|
|
|
プログラミング初心者で2回もすみません。 if (abs($Mychar.y-y)<20> <20>のところエラー文法エラーがおこってしまいます。 どこかまちがっているのでしょうか? if (abs($Mychar.y-y)<15 && ($Mychar.x-x)>0 && vx==0 && Block_exist_x(x,y,$Mychar.x)==0) vx= 3; をもとに前のもつくってみたのですが・・・ お願いします
|
Re: 質問です
投稿者 : 柿拓(245.114.44.61.fbb.aol.co.jp)
- 2008/03/19(Wed) 19:54
No.11758
|
|
|
|
if (abs($Mychar.y-y)<15 function Block_exist_x(x,y,$Mychar.x)==0) vx= 3;
while(1) { if (x< $Cursor .x) x+=2; if (x> $Cursor .x) x-=2; if (y< $Cursor .y) y+=2; if (y> $Cursor .y) y-=2; update(); } これでもまだエラーがおこってしまいます。 どこかまちがっているでしょうか? これのもとは if (abs($Mychar.y-y)<15 && ($Mychar.x-x)>0 && vx==0 && Block_exist_x(x,y,$Mychar.x)==0) vx= 3;
これです。
|
Re: 質問です
投稿者 : マッキー(0x3d2cb004.rev.ncv.ne.jp)
- 2008/03/19(Wed) 21:47
No.11759
|
|
|
|
「<20>」これは、こういう書きかたはないので、文法エラーになります。
あと、なぜ「Block_exist_x(x,y,$Mychar.x)」と書いたのですか? 「Block_exist_x」は、何なのかわかりません。 オブジェクト名ですか?
それと、『敵に見つかると追いかけられる』の、 「敵に見つかる」というのは、どういうことですか?
ちょっと、説明不足です!
|
Re: 質問です
投稿者 : 柿拓(245.114.44.61.fbb.aol.co.jp)
- 2008/03/20(Thu) 11:06
No.11760
|
|
|
|
説明不足ですみません。 ええと Block_exist_x(x,y,$Mychar.x)はなくすことにします。 敵に見つかるというのは指定した範囲内に 自機がきたら追いかけられるという意味です。
|
Re: 質問です
投稿者 : マッキー(0x3d2cb15d.rev.ncv.ne.jp)
- 2008/03/20(Thu) 11:21
No.11761
|
|
|
|
11761.zip
それなら簡単です。
まず、距離を求めるには、「distメソッド」を使います。 例えば、敵のプログラムに
if(dist(x-$Mychar.x,y-$Mychar.y)<50)見つける=1else 見つける=0;
とかくと、敵から半径50ドット内に、 $MyCharがいる時は、 「見つける」の変数に、1が入ります。 $MyCharがいない時は、「見つける」の変数に、0が入ります。
サンプルを付けました。 赤が敵で、緑が自分です。
|
Re: 質問です
投稿者 : 柿拓(245.114.44.61.fbb.aol.co.jp)
- 2008/03/20(Thu) 14:36
No.11762
|
|
|
|
サンプルプログラムまでどうもありがとうございます。 早速やってみたところゲームらしくなってきました ありがとうございます
|
Re: 質問です
投稿者 : SuperSS(softbank219014238038.bbtec.net)
- 2008/05/05(Mon) 20:22
No.11824
|
|
|
|
・豆知識 オブジェクトがDxCharで目の前に自機が来たら追うというものにはcrashToLineを使います。 /*Me.tonyu*/ extends DxChar;
while(1){ // TODO:getkeyで動けるようにしてください。 update(); } /*Teki.tonyu*/ extends DxChar;
mod=0; d=0; while(1){ if($Me.crashToLine(x,y,x+cos(angle-90)*200,y+sin(angle-90)*200,10)){ if(mod==0){ mod=1; } } if(mod==1){ a=angle( $Me.x-x, $Me.y-y ); angle=a+90; d++; if(d==100){ d=0; mod=0; } } update(); } /* End of Teki.tonyu */
|
|