龍神録プログラミングの館17章~18章

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

龍神録プログラミングの館17章~18章

#1

投稿記事 by elle » 11年前

こんばんは。
今、龍神録プログラミングの館17章の部分を試しています。
一通り打ち込んだのですが当たり判定の部分だけが期待した動作にならず(弾が素通りしてしまいます)、
最終的にはweb17章のページから丸々コピー&ペーストしたのですが、これでもうまくいきませんでした。
(が、18章から起動すると上手くいくようです。)
具体的には、

コード:

void out_main()
{
	int i, s;
	for (i = 0; i<CSHOT_MAX; i++){//自機ショット総数
		if (cshot[i].flag>0){
			for (s = 0; s<ENEMY_MAX; s++){//敵総数
				if (enemy[s].flag>0){
					if (out_judge_cshot(i, s)){//自機ショットと敵が当たっていれば
						cshot[i].flag = 0;//その自機ショットを消す
						enemy[s].hp -= cshot[i].power;//弾の持つパワー分HPを減らす
						enemy_death_judge(s);//敵が死ぬかどうかを決める
					}
				}
			}
		}
	}
}

コード:

					if (out_judge_cshot(i, s)){//自機ショットと敵が当たっていれば
が決して真にならないようです(18章のプロジェクトでは真になります)。
なぜでしょうか。
全ての章のプロジェクトを一括ダウンロードのものを使用しています。
(ファイル添付がうまくいかないので…プロジェクト pass : mixc
環境:
Windows7 Professional
MSVC2013EE

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

Re: 龍神録プログラミングの館17章~18章

#2

投稿記事 by Tatu » 11年前

17章のタイトルは「自機にショットを撃たせてみよう」で
18章のタイトルは「自機ショットに当たり判定を付けてみよう」となっています。

17章を試している段階なのであれば
自機ショットの当たり判定のコードはないのではないでしょうか?

elle
記事: 39
登録日時: 12年前

Re: 龍神録プログラミングの館17章~18章

#3

投稿記事 by elle » 11年前

Tatuさん

あ…すいません、18章の間違いでした。
17章のプロジェクトをベースに、18章の内容を作成している形です。失礼しました。
龍神録プログラミングの館18章の一番下の実行結果のように、敵に当たって敵の体力を全て削ったら敵が消える、というのが期待する結果です。

コード以外に変更したことと言えば、「error LNK2026: モジュールは SAFESEH イメージには安全ではありません。」に対処するために
プロジェクト>プロパティ>構成プロパティ>リンカー>詳細設定>安全な例外ハンドラーを含むイメージ を いいえ (/SAFESEH:NO)にしたくらいです。
原因は別の箇所にあるのでしょうか…

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

Re: 龍神録プログラミングの館17章~18章

#4

投稿記事 by Tatu » 11年前

17章の説明では
cshot.cnt++;
があり、弾の画面外用のdranx,dranyも書かれているのに

配布プロジェクトのcalc_cshot()では
cshot.cnt++;
もdranx,dranyも書かれていません。

自機ショットの当たり判定は
cshot.cntが0より大きい時に判定するようになっているため、
cshot.cnt++;
がないと判定されません。

elle
記事: 39
登録日時: 12年前

Re: 龍神録プログラミングの館17章~18章

#5

投稿記事 by elle » 11年前

Tatuさん

ありがとうございます!その通りでした。
cshot.cppのcalc_cshot()関数にcshot.cnt++;を追加したら期待した動作になりました。
cshot.cppの方に原因があったんですね。
紹介されていた差分ソフトを使って何やら違う部分があるなとは思っていたのですが、
cshot.cnt > 0の部分が影響していることを見落としていました…。
ありがとうございました。

閉鎖

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