【龍神録】オプションバグ

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
アバター
amehirune
記事: 181
登録日時: 11年前
住所: どっか
連絡を取る:

【龍神録】オプションバグ

#1

投稿記事 by amehirune » 10年前

今回は、「第49章 自機ショットにオプションを付けてみよう」に関して、バグと思ったことがあったので質問します。

端的に申しますと、初回起動時(?)にはバグは発生しません。
ただ、私のプログラムには「リトライ」「中断」機能がすでに実装されていて、
それを実行した後に再度ゲームスタートをすると、なぜか変な位置に最初からオプションが描写されています。
(ただしそこからショットは出てきません。)
そして、パワーが1以上になったら(オプションが追加されたら)「変な位置」にあったものは消え、きちんとオプションは配置されました。
しかし、ふわふわ浮くタイミングがかなりずれていて、とても気になっております。

ソースコードはあまり変えておりません。威力や位置をいじっただけです。
どうすれば治るのでしょうか?

参考までに、あとでスクリーンショットを載せておきます。
リトライや中断してから再スタートするときに、option_bb_tは初期化してあります。
ほら、来いよ!! 誤字や矛盾を指摘したい奴から、前に出てこいよぉおおおおおおおッ!!!
※都合により、不定期でしか現れません。即返などはできませんのでご了承ください※

アバター
amehirune
記事: 181
登録日時: 11年前
住所: どっか
連絡を取る:

Re: 【龍神録】オプションバグ

#2

投稿記事 by amehirune » 10年前

これがスクリーンショットです
添付ファイル
Save0.jpg
スクリーンショット1
Save0.jpg (6.46 KiB) 閲覧数: 3875 回
ほら、来いよ!! 誤字や矛盾を指摘したい奴から、前に出てこいよぉおおおおおおおッ!!!
※都合により、不定期でしか現れません。即返などはできませんのでご了承ください※

アバター
amehirune
記事: 181
登録日時: 11年前
住所: どっか
連絡を取る:

Re: 【龍神録】オプションバグ

#3

投稿記事 by amehirune » 10年前

2枚目です
添付ファイル
Save1.jpg
スクリーンショット2
Save1.jpg (7.34 KiB) 閲覧数: 3872 回
ほら、来いよ!! 誤字や矛盾を指摘したい奴から、前に出てこいよぉおおおおおおおッ!!!
※都合により、不定期でしか現れません。即返などはできませんのでご了承ください※

Rittai_3D
記事: 525
登録日時: 12年前

Re: 【龍神録】オプションバグ

#4

投稿記事 by Rittai_3D » 10年前

printfDxやDrawFormatStringで数値を確認してみましたか?
コードが無いのでなんとも言えません。
初心者です

アバター
amehirune
記事: 181
登録日時: 11年前
住所: どっか
連絡を取る:

Re: 【龍神録】オプションバグ

#5

投稿記事 by amehirune » 10年前

3D_3D さんが書きました:printfDxやDrawFormatStringで数値を確認してみましたか?
コードが無いのでなんとも言えません。
ご回答ありがとうございます。
数値の方を確認したところ、option_bb[1].flagが初期化されていませんでした。
(尚、ソースコードの方はほぼ龍神録と同じなので、そちらをご参照ください。ここに張ると長くなってしまうので)

コード:

//struct.h オプションに関する構造体
typedef struct{
	int flag,img,cnt;
	double x,y;
}option_bb_t;

//GV.h
GLOBAL option_bb_t option_bb[2];

//ini.cpp
memset(&option_bb,0,sizeof(option_bb_t));
上記の構造体をmemsetで初期化したつもりが、できていなかったようです。
ですが、どのように初期化するのが正解なのか、わかりません。
ほら、来いよ!! 誤字や矛盾を指摘したい奴から、前に出てこいよぉおおおおおおおッ!!!
※都合により、不定期でしか現れません。即返などはできませんのでご了承ください※

Rittai_3D
記事: 525
登録日時: 12年前

Re: 【龍神録】オプションバグ

#6

投稿記事 by Rittai_3D » 10年前

間違えた事を言っているかもしれませんが、

コード:

memset( option_bb, p, sizeof( option_bb ) );
で初期化出来ると思います。

提示されたコードだと、option_bb[0]だけを初期化しているのでは無いのでしょうか?
sizeof( option_bb_t ) はoption_bb_t "だけの" サイズです。
配列全部のサイズではなく、一つ分のサイズです。

もとのコードのままでしたいなら

コード:

// いろいろ省略
for( int i=0 ; i<2 ; i++ ) {
    memset( &option_bb[i], 0, sizeof( option_bb_t ) );
}
でしょうか。
初心者です

アバター
amehirune
記事: 181
登録日時: 11年前
住所: どっか
連絡を取る:

Re: 【龍神録】オプションバグ

#7

投稿記事 by amehirune » 10年前

ありがとうございます。おっしゃる通り、[0]だけしか初期化できていなかったようで、
提示されたコードを使ってみたところ、バグが消えました。ありがとうございます。
ほら、来いよ!! 誤字や矛盾を指摘したい奴から、前に出てこいよぉおおおおおおおッ!!!
※都合により、不定期でしか現れません。即返などはできませんのでご了承ください※

閉鎖

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