トピック
けんた nishisab

このようなプログラムを実行すると、BGGETの所で、「Out of range」 エラーが出るのですが、どの様にすれば、良いのでしょうか?

知っていれば、自分が動くと、その方向にBGが動き、その逆の方向から、BGが出てくると言うのは、どの様にすれば良いでしょうか。 マップは、スマイルツールのマップエディターで作ったものなので、それにあった方法でお願いします。
0そうだね
プレイ済み
返信[1]
親投稿
ほしけん Hosiken
エラーで止まったところで、ダイレクトモードから PRINT X,Y と入力するとなんと表示されますか? たぶんマイナスになってそう。
0そうだね
プレイ済み
返信[2]
親投稿
マギー M191246
BGGETの4番目(最後)の引数を 1にする(ドット単位指定にする)と できるかなと思います。
0そうだね
プレイ済み
返信[3]
親投稿
けんた nishisab
PRINT X,Yとすると、110,190と表示されました。
0そうだね
プレイ済み
返信[4]
親投稿
けんた nishisab
すみません、190,110でした。
0そうだね
プレイ済み
返信[5]
親投稿
けんた nishisab
試してみたところ、マギーさんのとうりに、引数の最後を1にすれば出来ました! でも、上と左と右は、どの様にすれば、判定出来ますか?
0そうだね
プレイ済み
返信[6]
親投稿
マギー M191246
X,Yは、このスプライトにとって 表示するための基準点でしかないので 残りの頂点(X+15,Y),(X,Y+15),(X+15,Y+15) についても、 それぞれ別に調べる必要があると思います。
0そうだね
プレイ済み
返信[7]
親投稿
けんた nishisab
BGに当たったら、進め無いように、出来たのですが、少し、長押しすると、すり抜けてしまいます。どの様にすれば良いでしょうか?
0そうだね
プレイ済み
返信[8]
親投稿
マギー M191246
現在地ではなく移動先の状態を調べてから、 実際に移動するかどうかを 決定するようにしてみては、どうでしょう? 今、 IF ~ THEN Y=Y~ IF ~ THEN X=X~ となっているところを 例えば IF ~ THEN KY=Y~ IF ~ THEN KX=X~ IF KX,KYなど4点とも空白 THEN X=KX:Y=KY みたいにします。
0そうだね
プレイ済み
返信[9]
親投稿
けんた nishisab
その様にしているつもりなのですが、このプログラムで、出来ていますか?
0そうだね
プレイ済み
返信[10]
親投稿
マギー M191246
X,Yに直接代入してしまうと、 実際にSPOFSが実行されなくても 位置情報は、更新されていくので 例えば、16回以上加算された時点で ひとつ先のBGを調べることになって そこが空白なら、 そこに飛ぶ(すり抜ける)ことになります。
0そうだね
プレイ済み
返信[11]
親投稿
マギー M191246
それと、 SPOFS ~ OUT MX,MY SPOFS ~,MX,MY は、すべて無くても問題ない気がします。
0そうだね
プレイ済み
返信[12]
親投稿
けんた nishisab
これが、修正したプログラムですが、これでも、まだ、座標を代入していますか?
0そうだね
プレイ済み
返信[13]
親投稿
マギー M191246
BGをチェックするまでは、 X,Yを変更しないことが大切です。
0そうだね
プレイ済み
返信[14]
親投稿
けんた nishisab
BGをチェックしてから移動するように、BGをチェックする所と移動する所を逆にしたのですが、それでは、BGに当たったら、もう、そのBGから離れられなくなってしまいました・・・
0そうだね
プレイ済み
返信[15]
親投稿
マギー M191246
現在地点を調べているので BGがあれば、そこから動かなくなります。 移動しようとする先の点を チェックする必要があります。 X,Yを変更する前に移動しようとする先の座標を計算して、 その地点のBGをチェックするようにします。 (続きます)
0そうだね
プレイ済み
返信[16]
親投稿
マギー M191246
そのために、例えば KX,KYという変数を用意して IF (B~ THEN Y=Y~ IF (B~ THEN X=X~ のところを IF (B~ THEN KY=Y~ IF (B~ THEN KX=X~ として、それに続いて ~=BGGET(0,KX,KY,1) … と4点のチェックをします。 そのあとで X=KX:Y=KY SPOFS 100,X,Y とするといいと思います。
0そうだね
プレイ済み
返信[17]
親投稿
けんた nishisab
その様にすると、動けなくなってしまいました・・・
0そうだね
プレイ済み
返信[18]
親投稿
マギー M191246
KX,KYの初期化の指示を忘れていました。 WHILE~ のすぐあとくらいに KX=X:KY=Y といれてみてください。
0そうだね
プレイ済み
返信[19]
親投稿
けんた nishisab
ありがとうございました! 出来ました!
0そうだね
プレイ済み