トピック
つばさ☆ nsm2116

SPが表示されぬ……

画像の@MTから@Eまでのプログラムなんですが、なぜかSPが表示されません。VISIなんちゃらも使ってないSPCLRはこのプログラムの前にしか使ってない……みむさんの_SPCHECKER使うとそもそも表示されてないとなっております。SPUSED使っても表示されてないとなるので、どうすれば良いですか?
2そうだね
プレイ済み
返信[1]
親投稿
みむ*mim hidemimtp
342行目のIFが通っているのかどうか、356で「STOP」して、「?I」してみたらどうでしょう。 そもそもこれ、 FOR Y=0 TO 39  FOR X=0 TO 399   <342~350の処理>  NEXT NEXT と書いたほうがいいですね。
0そうだね
プレイ済み
返信[2]
親投稿
つばさ☆ nsm2116
通ってます。がなぜかIが25から増えていくというなぞ
0そうだね
プレイ済み
返信[3]
親投稿
つばさ☆ nsm2116
SPSETの処理はできました。 行けますが、次は消える という。
0そうだね
プレイ済み
返信[4]
親投稿
つばさ☆ nsm2116
やりたいことは画面のクリボーのBGをテストプレイするときにSPに変換させて、そこから本家と同じく動かそうとしています。移動プログラム(?)的なところのプログラム見せます
1そうだね
プレイ済み
返信[5]
親投稿
つばさ☆ nsm2116
IF KJ==1 THENからそのIFのENDIFまでです。 ATH関数は DEF ATH(BGLAYER,X1,X2,Y1,Y2) _A=BGGET(BGLAYER,X1,Y1,1) _B=BGGET(BGLAYER,X1,Y2,1) _C=BGGET(BGLAYER.X2,Y1,1) _D=BGGET(BGLAYER,X2,Y2,1) RETURN (_A+_B+_C+_D) END で定義してます。ここから分かる事とかありますか?
0そうだね
プレイ済み
返信[6]
親投稿
みむ*mim hidemimtp
BGのクリボーをSPに変換してBGを消す、なるほど、やろうとしている事が理解できました。 Iは、FOR文の前にI=0がないから、どこかで使った値が出てるんでしょうね。 でもそもそもスプライト番号は、 I=SPSET(39) のように書けば、空いているSP番号が取れますので、わざわざカウントする必要はないかも? で、IF内を7回通っているなら7匹はSPSETされているはずなので、 「?I」を「?I,X,Y」とかにしてみたら? (あとは、ここでSPCHECKERを使っても、画面外にあるのか、重なって表示されているのかなどが分かると思います)
0そうだね
プレイ済み
返信[7]
親投稿
みむ*mim hidemimtp
あと動きですが、 これはクリボーの動きだと思いますが、スプライト番号で判定するよりも、座標のように配列を持って、1がマリオ、2がクリボー・・・というように区分を持たせた方がいいかも。 上のプログラムでIを1から振ろうとされていますが、結局23から振られてしまって動かないと思いますが、こういう不具合が起きるにくくなると思います。
0そうだね
プレイ済み
返信[8]
親投稿
つばさ☆ nsm2116
お、X座標だけ、ちゃんと表示されたが、Y座標だけずれる実際はクリボーもっとマリオと同じ高さにあります。
0そうだね
プレイ済み
返信[9]
親投稿
みむ*mim hidemimtp
しかも37って、16の倍数ですらないですね(笑) KY[I]=Y*16の時点でおかしいのか、どこかで変なものを代入してるのか・・・1つ1つ探してみましょう~
1そうだね
プレイ済み
返信[10]
親投稿
つばさ☆ nsm2116
Y*16するとY座標が542になりますよw
0そうだね
プレイ済み
返信[11]
親投稿
みむ*mim hidemimtp
いやいや、Yが2なら32、3なら48になるわけで、初期表示位置で37には絶対ならないよね、という意味です。
1そうだね
プレイ済み
返信[12]
親投稿
つばさ☆ nsm2116
ワロタw
0そうだね
プレイ済み
返信[13]
親投稿
つばさ☆ nsm2116
37はKY[I]=Y*16じゃなくてKY[I]=Yの時の写真です。
0そうだね
プレイ済み
返信[14]
親投稿
つばさ☆ nsm2116
おぉ!Y座標全く違うけど動いた!w あ、ちなみにクリボーをブロックの2マス上に設置するとクリボーは落下せずにあらぶります。w
0そうだね
プレイ済み
返信[15]
親投稿
みむ*mim hidemimtp
??? とにかく、クリボーのY座標がちゃんとなればとりあえずOKですね。 がんばってくださ~い!
1そうだね
プレイ済み
返信[16]
親投稿
つばさ☆ nsm2116
ここで疑問が生まれる。Y*16してもクリボーのY座標がなぜか1ずれるという。1匹目のクリボーYが542だとしたら2匹目のクリボーのYが543という なんだろう。
0そうだね
プレイ済み
返信[17]
親投稿
みむ*mim hidemimtp
Yの値が変化する所を全部PRINTするしかない!
0そうだね
プレイ済み
返信[18]
親投稿
みむ*mim hidemimtp
あ、DIALOGも便利ですよ。 DIALOG STR$(Y) とか。いちいちプログラム止めなくていいから。
1そうだね
プレイ済み
返信[19]
親投稿
つばさ☆ nsm2116
とりあえず、やること分かりました。Y座標はちゃんとなりませんが、頑張ります。ありがとうございました!!
1そうだね
プレイ済み