投稿
またまた質問失礼します。 攻撃のプログラムがさがしてもわかんなくて、そのへんのサイトみたんですけど、WENDを最後の行にすると武器が左端に固まったまんま攻撃できないし、かといってこのスクショみたいにすると攻撃ができないんです、どこが変ですか?
1そうだね
プレイ済み
返信[1]
親投稿
スー thanks_0u0
スクショだけでは分かりにくい部分もあるのですけれど、WHILE〜WENDの外側はメインループの外になっちゃうので、Aボタンを押していてBMが0なら〜の行はメインループの中に入れたほうが良いと思います( ´ ▽ ` )ノ そして「'こうげきようい」のIFより前の部分は多分?SPの準備だと思うので、メインループの前に出すと良いかもしれません。 そして、@BEAMFIREのサブルーチンには、ビームを移動させる処理が入っていないので、SPANIMのXYか何かで移動させてあげると良さそうです。 移動させ終わったらBMを0に戻してSPHIDEするのを忘れずに。 なんて言って全然違ってたらすみません!(・д・)
0そうだね
プレイ済み
返信[2]
親投稿
すいません、スーさんあの後半の説明のXYか何かでやればいいっていうのがいまいちよくわかんないですが、時間があれば詳しく教えてください。
0そうだね
プレイ済み
返信[3]
親投稿
あと、IF文の前の攻撃関係文移しました!
0そうだね
プレイ済み
返信[4]
親投稿
スー thanks_0u0
テキトーな説明ですみません(ノ´∀`*) SPANIMの2つ目の引数に0か"XY"って書くと、座標が動くアニメが出来るのです。相対座標での指定なら"XY+"。 なので例えば、 SPANIM 1,"XY+",-120,400,0,1 って書くと、管理番号1のSPが2秒で画面全体を横切るスピードで右に移動します。 -120はフレーム数で、400はX座標、0はY座標、1はループ回数です。 フレーム数をマイナスにすると滑らかに動くようになります。座標は"XY+"で相対指定にしているので、SPANIMをした時の座標から(+400,+0)の座標に動きます! こんな説明でわかりますでしょうか( ´・ω・` )
1そうだね
プレイ済み
返信[5]
親投稿
すいません、ここまでできたんですが、実装してた横移動、ジャンプが出来なくなりました(´・ー・`) あと、Aボタンで武器を出せるようにしたいんですが教えてください。質問ばかりすいません
0そうだね
プレイ済み
返信[6]
親投稿
スー thanks_0u0
ちょっと今時間取れなくてパッと見でわかるところだけなのですけれど、ジャンプが出来ないのは48行目が、JP=ゼロ、じゃなくて、JP=オー、になってるからかもしれません。 そして今度はサブルーチン@BEAMFIREがメインループの中に入り込んじゃってるので、@BEAMFIRE〜RETURNはWENDの下になるようにすると良いと思いますー( ´ u ` ) 横移動の処理はスクショにないので、出来なくなっちゃった原因はちょっとわからないです、ごめんなさいー(・д・) Aボタンで武器を出すっていうのは、@BEAMFIREの処理とは違うのでしょうか?
1そうだね
プレイ済み
返信[7]
親投稿
忙しいのにコメントありがとうございます。何とか横移動とジャンプが出来る様になりました!しかし@なんとかの処理がいまいちよくわかりません。 しつこくてすいません、至急じゃなくてもいいので教えて下さい。
0そうだね
プレイ済み
返信[8]
親投稿
何とか出来ましたありがとうございます!
1そうだね
プレイ済み
返信[9]
親投稿
すいません、1回しか攻撃が出来ません。何が原因なのでしょうか?
0そうだね
プレイ済み
返信[10]
親投稿
スー thanks_0u0
1回しか攻撃が出来ないのは、攻撃する条件が、「Aボタンを押していてBMが0のとき」なのにBMを0に戻していないからだと思います(・ω・) 1回目はBMは何も変更されていなくて0なので、その後のGOSUBが発動します。 GOSUBが発動すると指定したラベルに飛んでRETURNで元の位置に戻ってくるので、このプログラムの場合、58行目から61行目に飛んで、69行目まで進んだら58行目に戻ってくる、っていう感じです( ´ u ` ) そこまでは良いのですが飛んだ先の62行目でBMを1にしているので、2回目からは条件の「BMが0のとき」を満たさなくなってしまいます。なのでGOSUBが発動しなくて攻撃が出来ないのです(´=ω= ` )
0そうだね
プレイ済み
返信[11]
親投稿
スー thanks_0u0
でもBMを1にしないと、2回目のAボタンを押した時に変な感じになります。 62行目をコメントにしてみるとどう変なのかわかると思います( ´ ω ` ) それで結局どうしたら直るかっていうと、「攻撃が画面外に出た時か、一定時間が過ぎたときにBMを0に戻してあげる」感じです。 やり方は色々あるのですけれど、とりあえず楽そうなのは、62行目をBM=120に変えて、メインループの中に「もしBMが0より大きい時は、BMを1減らす」っていう処理を追加する方法だと思います!( ´ ▽ ` )ノ こうすると、120フレーム(2秒)経ったらBMが0に戻って、また打てるようになります。120なのは、BMのアニメを120フレームで設定したからです。 この方法は一度に1個しか攻撃が出せないので、一度に何個も攻撃が出せるようにするのはもうちょっと難しいです(・ω・)
0そうだね
プレイ済み
返信[12]
親投稿
できたー!ありがとうございます! 後、ゲームには必須のタイトル画面ってどうやってつくるんですか?
1そうだね
プレイ済み
返信[13]
親投稿
スー thanks_0u0
メニューなどのない一番簡単なタイトル画面は、プログラムの最初にACLSしてから、背景の色を変えたり、テキストや画像を表示して見た目を整えて、ボタンを押すまで待つと出来ますよ(*´∨`*)ノ 見た目を整えるには、 BACKCOLOR,PRINT,LOCATE ボタンを待つには、 REPEAT〜UNTIL,VSYNC,BUTTON(2) とかを使うと出来ると思います!「PRINT」は代わりに「?」って書くと短くておすすめです( ´ u ` ) タイトルの文字は、線や四角の記号を組み合わせて作ると、大きくてなかなかかっこいいかもですよ!
0そうだね
プレイ済み
返信[14]
親投稿
武器と敵の当たり判定がよくわからないんです。教えて下さい!
0そうだね
プレイ済み
返信[15]
親投稿
スー thanks_0u0
武器の管理番号にSPHITSPを使って、もし当たっているSPが敵の番号だったら、その番号を消すと敵が消えると思います!(・ω・)
0そうだね
プレイ済み
返信[16]
親投稿
番号を消すと敵が消えるってどういうことですか?
0そうだね
プレイ済み
返信[17]
親投稿
スー thanks_0u0
あっ、その番号のSPを消すと、ですね(ノ´∀`*) 武器の番号でSPHITSPを取る→何かに当たっていたら結果が敵のSPかどうかを判定する→敵のSPだったらその番号でSPCLR っていう感じです!
0そうだね
プレイ済み
返信[18]
親投稿
??これでもいちおうRANできるけど判定がいまいちわかんないし、BEEPがすごいなります。
0そうだね
プレイ済み
返信[19]
親投稿
スー thanks_0u0
BEEPがすごいなるのは、SPHITSPの結果を、ビームが出せるかどうか判断するための変数にいれちゃってるからです!とりあえず別の変数を作ってそこに入れると良いと思います( ´ ▽ ` )ノ SPHITSPはSP同士が当たっていると、当たっているSP番号が返ってきます。 例えば、 H=SPHITSP(1) で変数HにSP番号1番と当たっているSP番号が入ります。こぶたすりーさんのプログラムで言うと「武器に当たっているのは誰か」がわかる、っていう感じです。 そうしたら次は、さっきの結果を入れた変数とIFを使って、SP1番と当たっているSP番号が敵の番号と同じかどうかを調べます。 変数が敵と同じ番号だったら、その変数をSPCLRすると、敵の番号のSPを消すことと同じなので、敵が消えます!\(・u・)/
0そうだね
プレイ済み
返信[20]
親投稿
敵の指定番号が3で武器が1なんですが、 H=SPHITSP(1,3) ってやってるけどエラーになります。設置する場所がおかしいんですかね>ー<
0そうだね
プレイ済み
返信[21]
親投稿
スー thanks_0u0
とりあえずSPHITSPの使い方が間違っています。落ち着いて、上の説明を読んでください( ´ ω ` ) SPHITSPは「指定したSPと当たっているSPの番号を教えてくれる」ものなので、「指定したSPと、指定したもうひとつのSPが当たっているかどうかを教えてくれる」ものではありません。 設置する場所もおかしいです。プログラムは基本的に上から下に向かって動くので、その位置だと武器が出ていないときに当たり判定を取っていることになってしまいます。なので、武器と敵が当たりそうなところ、具体的にはメインループの中に移します。 また、それをそのまま正しい位置に移してもIFを使っていないので、SPHITSPの結果に関係なく敵が消えてしまいます(・ω・)
0そうだね
プレイ済み