プレイ日記
かずまっクス yahoozxjjjx
タッチしてもBGが消せなくなりました。改善方法を教えてください。
2そうだね
プレイ済み
返信[1]
親投稿
ΖΕΧ ZEX256
前のプログラムに戻せばいい
2そうだね
プレイ済み
返信[2]
親投稿
かずまっクス yahoozxjjjx
前のプログラムに戻すと、BG以外をタッチするとエラーが出ます。
0そうだね
プレイ済み
返信[3]
親投稿
ΖΕΧ ZEX256
じゃあ、もっと前に戻せばいい
3そうだね
プレイ済み
返信[4]
親投稿
あきと SideBurnsM
ざっと画面のソースコードを見ましたが、配列X[1~4],y[1~4]にどんどん足していく理由はあるのですか?結局最後はBGOFSでBG0面にだけ反映させているのでX[4]とy[4]の数値しか反映されていないようです。 TXとTYにかんしても同様にX[1]から計算していますが全部上書きしていますね。 50行目51行目の計算は自分自身を2倍して2足しているのであっという間にBGが画面から見えなくなってしまうようですがそれは想定した動きなのかどうか…
1そうだね
プレイ済み
返信[5]
親投稿
otta777 otta777a
まずX[1],Y[1]~X[4],Y[4]の変数ですがこれは何の為の変数でしょうか? これが分からないと52行目以降のプログラムをどうしていいか判断が出来ません。 52~55行目でBGのレイヤー0にX[1],Y[1]からX[4],Y[4]をオフセットとして 設定しているので最終的にBGのレイヤー0にX[4],Y[4]が設定されます。
1そうだね
プレイ済み
返信[6]
親投稿
かずまっクス yahoozxjjjx
ありがとうございました。
0そうだね
プレイ済み
返信[7]
親投稿
あきと SideBurnsM
かずまっクスさん、 お礼の言葉は嬉しいですが、できればどこまで直すことができたか、もしくは答えてくれた人が書いた内容に分からないところがあったりしたら再度質問を返してもらって理解を深めていくようなやり取りになると良いなと思います。
1そうだね
プレイ済み
返信[8]
親投稿
かずまっクス yahoozxjjjx
消せるところまで直せました! だけどBG以外をタッチするとエラーが出ます。
0そうだね
プレイ済み
返信[9]
親投稿
かずまっクス yahoozxjjjx
こんな感じです。
0そうだね
プレイ済み
返信[10]
親投稿
あきと SideBurnsM
エラーが出るのは64行目で、out of rangeでしょうか。 BGPUTは横0~24、縦0~14の範囲内で指定しないとエラーが出てしまいます。 BGSCREEN命令でBGの大きさを変更して、範囲外にBGPUTしないようしてやればエラーが出なくなると思いますよ。
1そうだね
プレイ済み
返信[11]
親投稿
かずまっクス yahoozxjjjx
こんな感じでいいですか?
0そうだね
プレイ済み
返信[12]
親投稿
otta777 otta777a
WHILE 1~WENDの中でX[1]=X[1]+2を際限なく加算しているため いずれTXの値がBGSCREENで指定した範囲を超えてしまいます。 その状態で画面をタッチするとエラーになりますよ。 BG画面は無限に存在するわけでは無いのでスクロールする範囲を 制限するなどの工夫が必要だと思います。
1そうだね
プレイ済み
返信[13]
親投稿
あきと SideBurnsM
とりあえずTOUCH OUT T,TX,TYで取得している情報はまだ使うかもしれないのでTX,TYに上書きするのは止めた方がいいかもしれませんね。 BGX=FLOOR((X[1]+TX)/16) BGY=FLOOR((Y[1]+TY)/16) IF BGX>=0 && BGX<25 THEN IF BGY>=0 && BGY<15 THEN BGPUT 0,BGX,BGY,0 ENDIF ENDIF BGX,BGYという別の変数を作って範囲内の場合だけBGPUTするようにしました
1そうだね
プレイ済み
返信[14]
親投稿
かずまっクス yahoozxjjjx
うまくできました!! 本当にありがとうございました!!!!
0そうだね
プレイ済み
返信[15]
親投稿
あきと SideBurnsM
動いて良かったです。 そういえばBGPUTの行、「IF T THEN」を省いてしまっていたのでそこは必要なので付けてくださいね。 (多分いつでもBGが黒くなるので気づくと思いますが)
1そうだね
プレイ済み
返信[16]
親投稿
かずまっクス yahoozxjjjx
全て直しました! ありがとうございました!!
0そうだね
プレイ済み