トップページ > 過去ログ > 記事閲覧
弾の角度算出
名前:bin 日時: 2011/08/10 19:04

現在360度同時に玉を放つプログラムを作っており、玉の角度は20度で一度に18発の弾を発射させようと考えてます。 また、玉は一度に10回までしか表示させられないようにしています。(伝え方が下手で申し訳ありません) 例えば1回目にボタンを押した玉が全て画面外に消えなければ11回目のボタン入力による玉発射は行われないという仕組みです。 現在制作中のソースですが、ゲームプログラミングの館様のHPを参考に角度算出をさせていただきました。 /*------------------- 玉の角度を求める式 -------------------/* void Shot3(){ for(i = 0; i < 9; i++){ if(ShotFlag3[i] == 0){ ShotFlag3[i] == 1; Shotx3[i] = x ; Shoty3[i] = y - 15; } if(ShotFlag[i] == 1){ Shotx3[i] = Shotx3[i] + SpeedX3; Shoty3[i] = Shoty3[i] + SpeedY3; if(Shotx3[i] < -20 || Shotx3[i] > 610 || Shoty3[i] < -10 || Shoty3[i] > 500){ /*---------------------------- 弾が画面から消えたら ------------------------------*/ ShotFlag3[i] = 0; } Draw::DrawBallet(Shotx3[i],Shoty3[i]); } } } また、角度を求める式はこちらになります int Move(double theta, double movex, double movey) { int move[2]; int movex[0] = cos(theta) * move; int movey[1] = sin(theta) * move; return move[]; } 複数の値を返す場合はreturn文に配列を扱うというのを知ったのですが、扱いが分からず困っている状況です。 また、一度に18発の弾を発射できるようにしており、その18発すべての弾の管理が上手く出来ぬ状況です。 なにぶん一度に18発のセットが10セットまでしか表示されぬようプログラムを作りたいと思い、1セットすべてが画面から消えた判定を行うプログラムも書けない状況です。 こういったふうに作ればいいなどアドバイスを頂けたら幸いです。 また大変雑な文章な為、理解に苦しんでしまうかもしれませんが、よろしくお願いいたします。

Page: 1 |

Re: 弾の角度算出 ( No.1 )
名前:いっち 日時:2011/08/10 23:00

方法は色々とあると思いますが、1例としてやってみました。 > h t t p : / / w w w1.axfc.net/uploader/Sc/so/264119.zip&key=dxlib > 複数の値を返す場合はreturn文に配列を扱うというのを知ったのですが、扱いが分からず困っている状況です。 通常、関数から複数の情報を返却する必要がある場合、 戻り値として構造体を値で返したり、引数としてポインタを受け取ったりします。 例の中では GetMoveRate が前者、UpdateWaveArray や CreateWave が後者です。 関数のローカル変数のポインタや配列を戻り値に使用することは問題があります。 ※リンクを修正しました。
Re: 弾の角度算出 ( No.2 )
名前:bin 日時:2011/08/12 14:58

いっち様どうもありがとうございます。 VECTORに関する知識がなかったのでまだ完全には理解しておりませんので調べながら学ばせて頂きます。 御丁寧にソース丸ごと作っていただきありがとうございます。 此方のソースを参考にさせていただき自身で作ってみようと思います。

Page: 1 |