void shot_bullet_H004(int n){
int t=shot[n].cnt;
int k;
if(t>=0 && t<120 && t%20==0){
double angle=shotatan2(n);
for(int i=0;i<20;i++){
if(shot[n].flag!=2 && (k=shot_search(n))!=-1){
shot[n].bullet[k].knd =enemy[shot[n].num].blknd2;
shot[n].bullet[k].angle =angle+PI2/20*i;
shot[n].bullet[k].flag =1;
shot[n].bullet[k].x =enemy[shot[n].num].x;
shot[n].bullet[k].y =enemy[shot[n].num].y;
shot[n].bullet[k].col =enemy[shot[n].num].col;
shot[n].bullet[k].cnt =0;
shot[n].bullet[k].spd =4;
}
se_flag[0]=1;
}
}
}
館14章において
館14章において
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: 館14章において
これまでの質問も同じですがわからない所が整理されていない印象です。
1.angle自体の意味がわからない。atan2が理解出来ていない。
2.ラジアン角が分かっていない。PI2/20の意味が不明。
3.式が単にわからない。angle+PI2/20*i;の計算結果が想像できない。
4.sin、cos、tanやatanなど三角関数が意味不明。
ですが、どれでしょうか?
本来はご本人が整理すべき事なんですよ。
【補足】 厳しい言い方っぽくなってしまったので補足します。
怒っているのではなく、こういう考え方をしないと理解するのが困難ですよって事を言いたいだけです。
ただ眺めていたり打ち込むだけでは整理されて頭のなかに再構築されませんので模倣したプログラムを書くことも出来ません。
つまり、勉強が勉強にならない状況が発生します。
yusha さんは熱心に勉強されていると思いますので、うまく整理するすべを身につけてくださいね。
1.angle自体の意味がわからない。atan2が理解出来ていない。
2.ラジアン角が分かっていない。PI2/20の意味が不明。
3.式が単にわからない。angle+PI2/20*i;の計算結果が想像できない。
4.sin、cos、tanやatanなど三角関数が意味不明。
ですが、どれでしょうか?
本来はご本人が整理すべき事なんですよ。
【補足】 厳しい言い方っぽくなってしまったので補足します。
怒っているのではなく、こういう考え方をしないと理解するのが困難ですよって事を言いたいだけです。
ただ眺めていたり打ち込むだけでは整理されて頭のなかに再構築されませんので模倣したプログラムを書くことも出来ません。
つまり、勉強が勉強にならない状況が発生します。
yusha さんは熱心に勉強されていると思いますので、うまく整理するすべを身につけてくださいね。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: 館14章において
今までも今回も迷惑ばかりかけて申し訳ありません。
3.angle+PI2/20*i;の計算結果が想像できない。
が該当します。
「angle」と「PI2/20」の意味はそれぞれわかるのですが、「PI2/20」に「i」をかける意味、結果と式の途中にある加算の演算子を使用するとどういう理由があるのかがわかりません。
3.angle+PI2/20*i;の計算結果が想像できない。
が該当します。
「angle」と「PI2/20」の意味はそれぞれわかるのですが、「PI2/20」に「i」をかける意味、結果と式の途中にある加算の演算子を使用するとどういう理由があるのかがわかりません。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: 館14章において
for(int i=0;i<20;i++){は分かりますよね。
であれば、angle+PI2/20*iがどういう値のバリエーションを取るか想像できると思います。
値のバリエーションがわかるのに、意味が分からないならPI2/20が持つ意味(=ラジアン角)がよく分かっていない可能性があります。
であれば、angle+PI2/20*iがどういう値のバリエーションを取るか想像できると思います。
値のバリエーションがわかるのに、意味が分からないならPI2/20が持つ意味(=ラジアン角)がよく分かっていない可能性があります。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: 館14章において
「angle」が相手から見た自分の角度で、「PI2/20」で18度と思ってます。であるならば「PI2/20」に変数「i」をかけた値のバリエーションは、
i=0の時、自機から18度ずれた場所
i=1の時、自機から36度ずれた場所
i=2の時、自機から54度ずれた場所
i=3の時、自機から72度ずれた場所
・
・
・
ということになります。
また、「angle+PI2/20*i」においては、「angle」では敵から見た自分の方向。つまり自機狙いであり、そこに先述した「for(int i=0;i<20;i++)」の値を代入された「PI2/20*i」を追加したという解釈で合っているでしょうか??
i=0の時、自機から18度ずれた場所
i=1の時、自機から36度ずれた場所
i=2の時、自機から54度ずれた場所
i=3の時、自機から72度ずれた場所
・
・
・
ということになります。
また、「angle+PI2/20*i」においては、「angle」では敵から見た自分の方向。つまり自機狙いであり、そこに先述した「for(int i=0;i<20;i++)」の値を代入された「PI2/20*i」を追加したという解釈で合っているでしょうか??
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: 館14章において
言葉の選び方に不安を覚えるのと計算が違っています。
i=0の時、自機から180度ずれた場所角度
0を掛けたら0ですよ。
>また、「angle+PI2/20*i」においては、「angle」では敵から見た自分の方向。つまり自機狙いであり、そこに先述した「for(int i=0;i<20;i++)」の値を代入された「PI2/20*i」を追加したという解釈で合っているでしょうか??
ここの解釈が不安ですね。その結果としてどんな事が起きるの?って視点が欠けています。
i=0の時、自機から180度ずれた場所角度
0を掛けたら0ですよ。
>また、「angle+PI2/20*i」においては、「angle」では敵から見た自分の方向。つまり自機狙いであり、そこに先述した「for(int i=0;i<20;i++)」の値を代入された「PI2/20*i」を追加したという解釈で合っているでしょうか??
ここの解釈が不安ですね。その結果としてどんな事が起きるの?って視点が欠けています。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: 館14章において
では、プログラムコードと実際の動きのイメージは一致しましたか?
>円周状に20発の弾が出るようになるのですか??
これを例えば15発で円周状とかに書き換えできれば理解したと思って良いと思います。
>円周状に20発の弾が出るようになるのですか??
これを例えば15発で円周状とかに書き換えできれば理解したと思って良いと思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: 館14章において
void shot_bullet_H004(int n){
int t = shot[n].cnt;
int k;
if (t >= 0 && t<120 && t % 20 == 0){
double angle = shotatan2(n);
for (int i = 0; i<15; i++){
if (shot[n].flag != 2 && (k = shot_search(n)) != -1){
shot[n].bullet[k].knd = enemy[shot[n].num].blknd2;
shot[n].bullet[k].angle = angle + PI2 / 15 * i;
shot[n].bullet[k].flag = 1;
shot[n].bullet[k].x = enemy[shot[n].num].x;
shot[n].bullet[k].y = enemy[shot[n].num].y;
shot[n].bullet[k].col = enemy[shot[n].num].col;
shot[n].bullet[k].cnt = 0;
shot[n].bullet[k].spd = 4;
se_flag[0] = 1;
}
}
}
}
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: 館14章において
正解です。これで小細工できるにようになればなお良いでしょう。
角度が前と後ろで違うとか。
角度が前と後ろで違うとか。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。