トピック

このようなシューティングのプログラムを作っているのですが、自機と弾をスプライトに変えるにはどうすれば良いのでしょうか?

0そうだね
プレイ済み
返信[1]
親投稿
MIKI ifconfig
準備 spset 0,0 spset 1,1 とします。 ループ内では locate x,y:? "自機" → spofs 0,x*8,y*8 locate sx,xy: ?"." → spofs 1,sx*8,sy*8 とします。
0そうだね
プレイ済み
返信[2]
親投稿
そのように変えると初期状態がこうなってしまったり
0そうだね
プレイ済み
返信[3]
親投稿
撃ったあと、端で止まってしまうのですがどのようにすればよいのでしょうか?
0そうだね
プレイ済み
返信[4]
親投稿
ちなみにこんな感じです。
0そうだね
プレイ済み
返信[5]
親投稿
Hanzo rzsense
30行目で、弾が右端まで行ったかどうかの判定を行っているようですが、そのときに、弾フラグ?をリセットするだけではなく、弾を消す処理を入れる必要があります。 例えば、 IF SX>49 THEN F=0:SPHIDE 1 のような感じでしょうか。
0そうだね
プレイ済み
返信[6]
親投稿
»Hanzo s それにしても、画像のやつは解消できません(あたりまえ)し、弾を一回撃った後に、端で消えるのはいいんですが、それ以降は音だけ流れて弾が全く表示されなくなってしまったのですが、どうすればよいのでしょうか?両方お願いします。
1そうだね
プレイ済み
返信[7]
親投稿
MIKI ifconfig
spset するといきなり座標0,0にスプライトが表示されてしまいます(仕様) なので、弾はspset 1,12 直後に sphide 1 してください。 撃ったら spshow 1 してください。 あと @main の次には vsync 必要
1そうだね
プレイ済み
返信[8]
親投稿
MIKI ifconfig
あ、vsync は入ってましたね。失礼!
0そうだね
プレイ済み
返信[9]
親投稿
MIKI ifconfig
ちなみに、sphide 1 はスプライトを画面から消す命令です。 消しっぱなしだと二度と表示されなくなるので、 撃つ時に shpshow 1 しましょうってこと。 spshow は消えていたスプライトを再び表示する命令です。 [?]ボタンをタッチするとヘルプが見られるので参考にしてください。 あと、暇なときに命令一覧を眺めてください。細かいとこは覚えなくていいから、「あーこんな命令あるんだー」ってことだけ覚えとくと、後々役に立ちます。
1そうだね
プレイ済み
返信[10]
親投稿
Hanzo rzsense
当方の対処法ではいろいろと不足がございまして恐縮です。現存する諸症状の対処法は、みき★さんご指摘のとおりです。みき★さん、ご指摘いただきましてありがとうございます。 ところで、スプライトの消去法としてSPHIDEを推奨しておいて、誠に申し訳ないのですが、実は私は、スプライトを消すときに、SPHIDEを使ったことがありません。理由は、再びスプライトを表示させるときにSPSHOWを呼び出すのが億劫だからです。代わりに、SPOFS 1,1024,1024 のように、スプライトを画面外に追い出す手法を多用しています。 しかしながら、筋道としてはあくまで、スプライト消去はSPHIDE、再表示はSPSHOWであって、私のやり方はマイノリティだと思いますので、みき★さんご指摘のとおり、命令の存在を常に意識していただくことをお勧めします。
0そうだね
プレイ済み
返信[11]
親投稿
MIKI ifconfig
ああ、それいいですね!! > spofs 1,1024,1024 clever な感じ!! 今度からそうしよう
0そうだね
プレイ済み
返信[12]
親投稿
ありがとうございます! おかげさまで出来ました! お二人とも詳しい説明をありがとうございました!
0そうだね
プレイ済み