トピック
コーン Maise.Corn

スプライトの動かし方

シューティングを作っているのですが、  弾(スプライト)が動いてくれません。   どなたか助けてください…
5そうだね
プレイ済み
返信[1]
親投稿
コーン Maise.Corn
スプライトの動かし方ですが、 真上に打ち上げてその場に落とす感じに したいです。 マリオのジャンプのように自然な感じで 落下させたかったので、 物理の「等加速度運動」の公式を 当てはめてみたのですがムリでした…
0そうだね
プレイ済み
返信[2]
親投稿
ケイン KEIN.HORGAN
えーと、ぱっと見ただけですが…… 13行目:GOTO @LOOP としていますが、これで10行目にGOTO する、のを延々と続けると思われます。 後、GOSUB のラベル名とGOTO のラベル名は一緒にしない方がいいんじゃないかな、と思います。 混乱の元なので。 (5行目のGOSUB 先と、13行目のGOTO 先が同じラベルになっている)
0そうだね
プレイ済み
返信[3]
親投稿
コーン Maise.Corn
自分なりに修正してみたのですが、 動きません… 時間の計測方法が悪いのかな?
0そうだね
プレイ済み
返信[4]
親投稿
無限ループの外にRETURNじゃ永遠に戻らないと思います… @LOOP1 略 @LOOP2 略 GOTO @LOOP2 略 RETURN 流れを理解していない模様
0そうだね
プレイ済み
返信[5]
親投稿
(今書いたのは問題の部分そのままです修正版じゃないよ)
0そうだね
プレイ済み
返信[6]
親投稿
図や表とかで脳内を整理することをお勧めする
0そうだね
プレイ済み
返信[7]
親投稿
ケイン KEIN.HORGAN
えーと、プログラムを組む時は、「プログラムの流れ」を意識してください。 今回修正されたプログラムでは、 ラベル:@LOOP2 ↓ 15行目:GOTO @LOOP2 で@LOOP2 に戻る となっているので、一生涯かかっても16行目に到達しません(これを"無限ループ"と言います) 今は無条件でGOTO @LOOP2 するので無限ループになるので…… GOTO @LOOP2 するか否かを条件判断するようにしてください。
1そうだね
プレイ済み
返信[8]
親投稿
プログラムの順番の原則 1.基本:右に進む、右に命令がなければ下に進む 2.GOTOはそのラベルのところに行く 3.GOSUBもそのラベルに行くが、RETURNにたどり着くとGOSUBがあった場所に戻る IF文は(命令をやる/やらない)が条件によって変わるスイッチみたいなもの。 GOTO/GOSUBがない限りどこかに行くことはない。 ※DEFという命令は例外です。流れが理解できない現状はDEFもお勧めしない。
1そうだね
プレイ済み
返信[9]
親投稿
コーン Maise.Corn
実はGOSUBの意味、あまり知らずに 使っていたんです。ハズカシイ… こちらについては後で色々研究してみます。 ラベルの代わりにWHILEを使うことに しました。こっちの方が分かりやすいかな?
1そうだね
プレイ済み
返信[10]
親投稿
確かにこれなら無限ループにならないのでよさそう
0そうだね
プレイ済み
返信[11]
親投稿
すぎ field2050
それらしくは動きました。最初の動きは謎です。
1そうだね
プレイ済み
返信[12]
親投稿
コーン Maise.Corn
何度でも弾を撃てるように無限ループを 作ってみたつもりなんですが、 なぜかループしません。 この理由って分かりますか? 何度も質問してすみません…
1そうだね
プレイ済み
返信[13]
親投稿
ツララ LongIceSword
13行目の IF B==#A THEN GOTO @COUNT の、THENとGOTOの間にBEEP 1:と書いてみて、画面には表示されない処理の流れも音で把握する、という方法もありますね。 プログラムを実行してみて、カレントディレクトリ名が表示されず、コマンド受付状態にもなっていなければプログラムは終了していない、つまり無限ループになってはいると思いますよ。
1そうだね
プレイ済み
返信[14]
親投稿
すぎ field2050
あたった後Tの初期化がないのでは…
1そうだね
プレイ済み
返信[15]
親投稿
コーン Maise.Corn
ようやく出来ました! 皆さん、本当に助かりました! ありがとうございます!
2そうだね
プレイ済み