龍神録プログラミングの館 第13章で

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
elvena
記事: 2
登録日時: 10年前

龍神録プログラミングの館 第13章で

#1

投稿記事 by elvena » 10年前

なんかうまく動かない。
弾幕関数も弾幕登録処理もコピペなんだけど、
なぜか挙動がおかしい。

001:本来10フレームに1度発射されるはずの自機狙い弾が、
毎フレーム発射される
002:本来角度が固定されるはずが、
常に自機狙い
004:本来円形弾が発射されるはずが、
半円形に発射される上に、2射目以降は自機狙いだけになる

などなど……

どういうことでしょうか

アバター
へにっくす
記事: 634
登録日時: 11年前
住所: 東京都

Re: 龍神録プログラミングの館 第13章で

#2

投稿記事 by へにっくす » 10年前

そのコピペしたソースを載せないで、原因が分かると思ってるんでしょうか。
エスパーな回答を期待してるのか?
そうでないなら怪しいと思うところでもいいから、載せましょうね
(プロジェクト一式固めてアップロードでもいい。その方が全体を見渡せて、見つけやすいかもしれない)
オフトピック
プログラムは、期待した通りには動かない。
書いた通りに動くんだ。
だからソースも載せないでおかしいと言ってるだけじゃ何も進展しないよ?
written by へにっくす

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: 龍神録プログラミングの館 第13章で

#3

投稿記事 by softya(ソフト屋) » 10年前

龍神録とSTGの仕組みを理解するために勉強されていると思いますので、何がわからないという質問でしょうか?
コピペしてうまく動いたらOK!ってものでもないですよね。
1.弾の処理の仕組みがわからない。
2.デバッグの方法がわからない。
3.龍神録全体の仕組みがよく分かっていない。
そもそも、1章1章を順番に理解されていれば、問題から何が悪いか想像できるはずなのです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
Tatu
記事: 445
登録日時: 13年前
住所: 北海道

Re: 龍神録プログラミングの館 第13章で

#4

投稿記事 by Tatu » 10年前

コピペしたというソースコードがないと正確な原因はわかりませんが考えられる可能性として

001:if文で10フレームに一度を意味する条件t%10==0が書かれていない可能性(もしくは条件の行が全くない)
002:角度を記憶するのは最初だけ。if(t==0)が抜けている可能性
004:一周する角度はPIではなくPI2。「2射目以降は自機狙いだけ」については全くわかりません。

本当に正確に写したのか疑問です。

あと、理解しないと自分の思う通りには書けません。

elvena
記事: 2
登録日時: 10年前

Re: 龍神録プログラミングの館 第13章で

#5

投稿記事 by elvena » 10年前

自己解決しました。

コード:

void shot_calc(int n){
		/*中略*/
			shot[n].bullet[i].x+=cos(shot[n].bullet[i].ang)*shot[n].bullet[i].spd;
			shot[n].bullet[i].y+=sin(shot[n].bullet[i].ang)*shot[n].bullet[i].spd;
			shot[n].bullet[i].cnt++;//←この部分の++を忘れていた
			if(shot[n].bullet[i].x<-50||shot[n].bullet[i].x>FIELD_MAX_X+50||
				shot[n].bullet[i].y<-50||shot[n].bullet[i].y>FIELD_MAX_Y+50){
		/*後略*/
ただの単純ミスで、見落としいていただけでした・・・
つまらぬことで質問してすみません。

いろいろいたらないところがありすみませんでした。
ご指摘ありがとうございます。
次回の質問からは気をつけます。

閉鎖

“C言語何でも質問掲示板” へ戻る