ドがつく初心者ですが質問させてください
関数の分け方についてのことなのですがリュウジンロクプログラミングの館では
難しすぎて分からなかったので教えてください
描画に関しては描画関数をつくっているのですが 引数に関しての知識がどうも弱くて分からないのです
主人公を動かすにはキーボード関数から描画関数に引数として描画座標を渡そうとしていますが
それだと今後、敵キャラなどっを増やした時に描画関数に渡す引数などが多くなって
コードが見にくくなりそうな気がします
なので描画関数から主人公関数を呼び出して戻り値として描画座標を渡したほうがいいのかと思っています
このような場合、普通はどのような処理になっているのでしょうか?
引数の渡し方
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 引数の渡し方
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: 引数の渡し方
「引数の渡し方」というタイトルが付いている質問の冒頭が
何だか腑に落ちないです。
ですか…。賄賂 さんが書きました:関数の分け方についてのことなのですが
何だか腑に落ちないです。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。
-
賄賂
Re: 引数の渡し方
〉〉boxさん 申し訳ないです タイトル書いてる時点では気づきませんでした
〉〉ソフト屋さん
ありがとうございます ポインタとして渡して主人公関数で書き換えれば描画関数の方にも
影響されるということですね ポインタの存在を忘れていました・・・
・もう三つほど質問があるのですが
自分は描画に関しては描画関数にすべてやらせようとしています
当たり判定関数を呼ぶときに変数を一度に渡せるからです
もし描画関数ではなく主人公関数や敵関数などにそれぞれの描画をまかしたら
当たり判定はどうすればいいのでしょう?
・斜め移動の時、キーボードを同時押ししますがこの処理は考えなくてもいいでしょうか?
if(上キーが押されたら&&右キーが押されたら)などとわざわざ8方向の処理を考える必要はありますか?
前にここの掲示板で斜め方向の移動の処理も書けと言われたのですが
・DXライブラリの実行画面の縦と横の大きさ(座標)ってどんなもんでしたっけ?
多いですがお願いします すみません
〉〉ソフト屋さん
ありがとうございます ポインタとして渡して主人公関数で書き換えれば描画関数の方にも
影響されるということですね ポインタの存在を忘れていました・・・
・もう三つほど質問があるのですが
自分は描画に関しては描画関数にすべてやらせようとしています
当たり判定関数を呼ぶときに変数を一度に渡せるからです
もし描画関数ではなく主人公関数や敵関数などにそれぞれの描画をまかしたら
当たり判定はどうすればいいのでしょう?
・斜め移動の時、キーボードを同時押ししますがこの処理は考えなくてもいいでしょうか?
if(上キーが押されたら&&右キーが押されたら)などとわざわざ8方向の処理を考える必要はありますか?
前にここの掲示板で斜め方向の移動の処理も書けと言われたのですが
・DXライブラリの実行画面の縦と横の大きさ(座標)ってどんなもんでしたっけ?
多いですがお願いします すみません
- Dixq (管理人)
- 管理人
- 記事: 1662
- 登録日時: 15年前
- 住所: 北海道札幌市
- 連絡を取る:
Re: 引数の渡し方
> 自分は描画に関しては描画関数にすべてやらせようとしています当たり判定関数を呼ぶときに変数を一度に渡せるからです
仰っている意味が良く分からないですが、どういう単位でモジュールを分割されてますか?
> もし描画関数ではなく主人公関数や敵関数などにそれぞれの描画をまかしたら当たり判定はどうすればいいのでしょう?
「関数」で分割するのではなく、「主人公」「敵」といったオブジェクト単位で分割すると良いと思います。
softyaさんが書かれたリンク先にある設計です。
> ・斜め移動の時、キーボードを同時押ししますがこの処理は考えなくてもいいでしょうか?
4方向だけ計算すれば斜めにも移動しますが、斜めに移動している時は、移動量を√2で割ってやらないと、1:1の速さにならないので注意が必要です。
>・DXライブラリの実行画面の縦と横の大きさ(座標)ってどんなもんでしたっけ?
座標?解像度のことでしょうか?
設定次第で変わりますが、デフォルトは640x480です。
仰っている意味が良く分からないですが、どういう単位でモジュールを分割されてますか?
> もし描画関数ではなく主人公関数や敵関数などにそれぞれの描画をまかしたら当たり判定はどうすればいいのでしょう?
「関数」で分割するのではなく、「主人公」「敵」といったオブジェクト単位で分割すると良いと思います。
softyaさんが書かれたリンク先にある設計です。
> ・斜め移動の時、キーボードを同時押ししますがこの処理は考えなくてもいいでしょうか?
4方向だけ計算すれば斜めにも移動しますが、斜めに移動している時は、移動量を√2で割ってやらないと、1:1の速さにならないので注意が必要です。
>・DXライブラリの実行画面の縦と横の大きさ(座標)ってどんなもんでしたっけ?
座標?解像度のことでしょうか?
設定次第で変わりますが、デフォルトは640x480です。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 引数の渡し方
当たり判定専用の関数を用意すべきです。賄賂 さんが書きました:・もう三つほど質問があるのですが
自分は描画に関しては描画関数にすべてやらせようとしています
当たり判定関数を呼ぶときに変数を一度に渡せるからです
もし描画関数ではなく主人公関数や敵関数などにそれぞれの描画をまかしたら
当たり判定はどうすればいいのでしょう?
理由は、
(1)描画関数で当たり判定をすると当たり判定順番とと描画順番が違うと複雑になる。
(2)途中で消滅した場合は1フレームとは言え描画と食い違うことになる。
(3)関数の名前と機能が食い違うと自分で間違えてバグを作る可能性が高くなる。
(4)シンプルになる(これ重要)
そうしないと描画順番や、当たり判定で死んだ場合、矛盾を生じる可能性が高いです。
まず、
上下左右移動→当たり判定の流れなら必要ないです。賄賂 さんが書きました:・斜め移動の時、キーボードを同時押ししますがこの処理は考えなくてもいいでしょうか?
if(上キーが押されたら&&右キーが押されたら)などとわざわざ8方向の処理を考える必要はありますか?
前にここの掲示板で斜め方向の移動の処理も書けと言われたのですが
上移動→当たり判定→下移動→当たり判定→右移動→当たり判定→左移動→当たり判定なんて成っていたら必要です。
DEFAULT_SCREEN_SIZE_XとDEFAULT_SCREEN_SIZE_Yですね。賄賂 さんが書きました: ・DXライブラリの実行画面の縦と横の大きさ(座標)ってどんなもんでしたっけ?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。