トピック
Ki.Hibiki Hibiki.2323

画像の様に

画像の様に、キャラクターが階段に行ったら次の@に行く方法を教えて下さい! 自分なりに考えたのですが、反応しません!(自分なりに考えたプログラムはコメントで)
0そうだね
プレイ済み
返信[1]
親投稿
Ki.Hibiki Hibiki.2323
自分なりに考えたプログラムです。
0そうだね
プレイ済み
返信[2]
親投稿
あんど AND1GOUKI
全体の流れを追いかける気はありませんが・・・ Xの値が128「ぴったり」で、Yの値が80「ぴったり」ならGOTOす ると思います。 「ぴったり」って所がヒントですよ? プログラムは思った通りには動きません、書いた通りに動きます。 「おかしいな?」と思ったら、プチコンさんの気持ちになってプログラムを見直してみましょう。 製作中は重要な変数の値を表示しておくと分かりやすいカモ。
2そうだね
プレイ済み
返信[3]
親投稿
あんど AND1GOUKI
あ、、変なところに改行が入った。。。
1そうだね
プレイ済み
返信[4]
親投稿
みむ*mim hidemimtp
あんどさんのおっしゃる「ぴったり」を回避するか、 思考を変えて、 キャラの背景をBGGETするか、 キャラの移動をを8or16ドット単位にするか、 ってのも選択肢ですね。 ちなみによく見かける X==0 AND B==0 理論的に間違ってはいないのですが、こういう論理式(正しいか正しくないかの2択)同士をつなげる場合は、 X==0 && B==0 と書くのが一般的です。 ANDの意味を理解してあえて使用されているのであれば、 それは書き手の自由なので異議はありません。
1そうだね
プレイ済み
返信[5]
親投稿
AND&&の話なので余談。 理解しているなら*(かけ算)も使えます。 読みにくいので字数優先でなければ特にメリットがないのですが。
1そうだね
プレイ済み
返信[6]
親投稿
ツララ LongIceSword
ANDはどっちかって言うと「足す」や「引く」とか、数値を操作する計算に近い処理で、&&とかは白か黒かハッキリさせたる!みたいな感じですね。 IF文中の条件式で、複数の条件式を繋いで一つ式にしたものを使いたい場合なんかは最終的に&&や||で白黒付けた方がスッキリしてキモチイイ! ・・・えー、目的のラベルにジャンプする処理がちゃんと実行されているか確認する時に自分なんかは、適当な位置にPRINT "処理番号"みたいなのを書いて置いたり、すぐ次の処理に移って確認し辛くなるのを防ぐためにWAIT 60とか書いたりしてます。 ループから抜けるBREAKを上手く活用して、IF文の入れ子を浅くして分りやすくしたりなんかもしてますね。 ちなみに画面のプログラムからは肝心なXとYの代入する部分の式が読み取れないので、何とも言えないですね。
1そうだね
プレイ済み
返信[7]
親投稿
Ki.Hibiki Hibiki.2323
回答有難うございます! X,Yに代入するプログラムはこの投稿の画像の一番上にあります。 BGGETと言うのは、当たり判定の時にも使う命令ですか? ちょっと自分なりのプログラムを考えて来ますね!
0そうだね
プレイ済み
返信[8]
親投稿
Ki.Hibiki Hibiki.2323
画像付け忘れました
0そうだね
プレイ済み
返信[9]
親投稿
Ki.Hibiki Hibiki.2323
自分なりに考えたプログラムです。
0そうだね
プレイ済み
返信[10]
親投稿
みむ*mim hidemimtp
スプライトとBGの判定をするのは、BGGETを使うのが一番多いパターンだと思います。 ただこういうRPGっぽいのだと階段が複数あったりもするので、座標で判定するのも正しいやり方です。 BGGETを使うなら、キャラの原点が左上だとすると、 BGET = BGGET(0,X+8,Y+8,1) AND &HFFF IF BGET==&H362 THEN ~ &H362が下りる階段のキャラ番号。 「AND &HFFF」するのは、取得できる値がキャラ番号+アトリビュート(回転反転など)なので、そのうちのキャラ番号だけを取るための処理です。
0そうだね
プレイ済み
返信[11]
親投稿
みむ*mim hidemimtp
最初にされていたように座標で判定する場合、スプライトのドット座標ではなく、BGキャラ単位で判定するといいですよ。 BGCOORD 0,X+8,Y+8,1 OUT BGX,BGY IF BGX==7 && BGY==5 THEN ~ やり方は色々あるし、どれが正しいというのもないので、作りやすいやり方法を見つけてください。
0そうだね
プレイ済み
返信[12]
親投稿
Ki.Hibiki Hibiki.2323
返信遅くなりごめんなさい! BGGETで問題なく実行出来ました! 有難う御座いました! が、まだいまいちBGGETが良く分からないです。みむさんが教えて下さったBGGETの文に解説を付けて教えて頂きたいです!
0そうだね
プレイ済み
返信[13]
親投稿
みむ*mim hidemimtp
BGGETは・・・これが全てですよ。 アトリビュートをAND &HFFFするのは、 http://petitcom.net/3gou/manual/bgput ここの「※bitで表した場合」などを参照してください。
0そうだね
プレイ済み
返信[14]
親投稿
Ki.Hibiki Hibiki.2323
うーん...。BGGETの、X+8,Y+8と、&HFFFが良く分からないです。 聞いてばっかりでごめんなさい!
0そうだね
プレイ済み
返信[15]
親投稿
みむ*mim hidemimtp
+8は、スプライトキャラの原点が左上だと、そこで判定してしまうとおかしいので、体の中心で判定するようにしているだけです。元々スプライトの原点がキャラの中心にあるのなら不要です。 &HFFFに関しては・・・ BGキャラは"FFFF"のような16進数×4桁で表されます、 左端の"F"は、反転・回転などを表すもの、 あとの"FFF"は、キャラ番号です。 当たり判定のときは、回転や反転しているかなどは関係なく「階段かどうか」を知りたいので、「右3桁がFFFかどうか」が知りたいわけです。 それを取得するのが、BGGET(~) AND &HFFF という式です。 なぜこれで取れるかは「AND」を調べてみてください。ただこれは難しいかもしれないので「こうやったら取れるんだ」と思って先に進むのも選択肢ですよ。私も昔、1年くらい理解不能でした。
0そうだね
プレイ済み
返信[16]
親投稿
Ki.Hibiki Hibiki.2323
ふむふむ...。分かりました!回答有難う御座いました! 他の質問をしたいので受付終了させて頂きます!
0そうだね
プレイ済み