ページ 11

21章で質問です

Posted: 2012年9月18日(火) 23:22
by mi_l
21章で少し気になったことがあるので質問です

コード:

---- ini.cpp に以下を追加 ----

//渡された情報を構造体に入れる関数
void input_bullet_info(bullet_info_t *binfo,int size_x,int size_y,int col_num,double range){
        binfo->size_x =size_x;  binfo->size_y =size_y;
        binfo->col_num=col_num; binfo->range  =range;
}


---- ini.cpp first_ini()関数内以下追加 ----

        //例:弾0は76x76ピクセルで、5色あり、当たり範囲17ピクセル
        input_bullet_info(&bullet_info[0],76, 76, 5,17.0);
        input_bullet_info(&bullet_info[1],22, 22, 6, 4.0);
        input_bullet_info(&bullet_info[2], 5,120,10, 2.5);
        input_bullet_info(&bullet_info[3],19, 34, 5, 2.0);
        input_bullet_info(&bullet_info[4],38, 38,10, 2.0);
        input_bullet_info(&bullet_info[5],14, 16, 3, 3.5);
        input_bullet_info(&bullet_info[6],14, 18, 3, 2.0);
        input_bullet_info(&bullet_info[7],16, 16, 9, 2.5);
        input_bullet_info(&bullet_info[8],12, 18,10, 1.5);
        input_bullet_info(&bullet_info[9],13, 19, 3, 2.0);
とありますがfirst_iniは10個の弾情報を記していますよね。
そしてそれはvoid input_bullet_info(引数);と同じ形にしますよね。
これだけで構造体に10個の弾情報って入りますよね??
*binfoとポインタを宣言したのは&bullet_infoすなわちGV.hで(構造体型っていうのかわかりませんが・・)定義しているbullet_info[10]があるため格納するためだと思うのですが・・

binfo->size_x =size_x; binfo->size_y =size_y;
binfo->col_num=col_num; binfo->range =range;

というのはどうして定義するのですか?
後々使うからですか?
まだコードをすべて書き終わってない状況で質問しているのでもしかしたらいつの間にか解決になっているかもしれませんが、捉え方は合っていますか?
もし違うようでしたらご指摘お願いします。

Re: 21章で質問です

Posted: 2012年9月19日(水) 00:04
by box

コード:

    bullet_info[0].size_x = 76;
    bullet_info[0].size_y = 76;
    bullet_info[0].col_num = 5;
    bullet_info[0].range = 17.0;
......
以下同様
と書いてもいっこうに差し支えないとは思いますが、
「同じような処理は関数化した方が、コードの見通しがよくなる」ということではないかと思います。
眠くなってきているので的外れな回答かもしれません。

Re: 21章で質問です

Posted: 2012年9月19日(水) 00:24
by Ryo
mi_l さんが書きました: これだけで構造体に10個の弾情報って入りますよね??
これだけというのがどこを指しているのかわからないのですが、
”これだけで”大丈夫と思うのであれば、
必要ないと思う場所を一旦コメントアウトしてみてはどうでしょうか?

Re: 21章で質問です

Posted: 2012年9月19日(水) 01:26
by Tatu
質問は「binfo->size_x=size_xなどを書かないと
メンバ変数に代入できないのか?」ということでしょうか?
それならその通りです。それらを書くことで
関数の処理がboxさんが書いたのと同じようになります。
binfo->size_xの->はアロー演算子といいます。これがどのようなものなのかを
知らないのであれば調べてみてはどうでしょうか?

それとも、「bullet_info[0].size_xなどに値を代入しているのは
わかるが変数の意味がわからない」ということでしょうか?
rangeは対応した種類の弾の当たり判定の大きさを表し、
21章の自機と敵の弾の当たり判定で使用されていますが
他のsize_x,size_y,col_numはあとの章でも使用されていません。
おそらく、弾の画像の大きさと色の数をbullet_infoにいれておき、
それを利用して画像の読み込みをやりやすくするつもりだったのではないでしょうか。
実際のところはDixqさんに聞いてみないとわかりません。

>>Dixqさん
21章の自機と敵の弾の当たり判定のコメントが
//敵の当たり判定と自機ショットの当たり判定の合計範囲
となっています。

Re: 21章で質問です

Posted: 2012年9月20日(木) 00:29
by Dixq (管理人)
>>Tatuさん

ありがとうございます。修正しました。

Re: 21章で質問です

Posted: 2012年9月22日(土) 18:11
by mi_l
調べてたら解決できました。
ありがとうございました!!