引数の渡し方

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
賄賂

引数の渡し方

#1

投稿記事 by 賄賂 » 14年前

ドがつく初心者ですが質問させてください

関数の分け方についてのことなのですがリュウジンロクプログラミングの館では
難しすぎて分からなかったので教えてください

描画に関しては描画関数をつくっているのですが 引数に関しての知識がどうも弱くて分からないのです
主人公を動かすにはキーボード関数から描画関数に引数として描画座標を渡そうとしていますが
それだと今後、敵キャラなどっを増やした時に描画関数に渡す引数などが多くなって
コードが見にくくなりそうな気がします

なので描画関数から主人公関数を呼び出して戻り値として描画座標を渡したほうがいいのかと思っています
このような場合、普通はどのような処理になっているのでしょうか?

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 引数の渡し方

#2

投稿記事 by softya(ソフト屋) » 14年前

ゲームプログラミングの館に、そのものズバリがありますよ。
http://dixq.net/g/

「ゲームプログラミング設計」 をお読みください。
わかんないことがあれば聞いてくださいね。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

box
記事: 2002
登録日時: 15年前

Re: 引数の渡し方

#3

投稿記事 by box » 14年前

「引数の渡し方」というタイトルが付いている質問の冒頭が
賄賂 さんが書きました:関数の分け方についてのことなのですが
ですか…。
何だか腑に落ちないです。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

賄賂

Re: 引数の渡し方

#4

投稿記事 by 賄賂 » 14年前

〉〉boxさん 申し訳ないです タイトル書いてる時点では気づきませんでした

〉〉ソフト屋さん
ありがとうございます ポインタとして渡して主人公関数で書き換えれば描画関数の方にも
影響されるということですね ポインタの存在を忘れていました・・・

・もう三つほど質問があるのですが
自分は描画に関しては描画関数にすべてやらせようとしています
当たり判定関数を呼ぶときに変数を一度に渡せるからです
もし描画関数ではなく主人公関数や敵関数などにそれぞれの描画をまかしたら
当たり判定はどうすればいいのでしょう?

・斜め移動の時、キーボードを同時押ししますがこの処理は考えなくてもいいでしょうか?
if(上キーが押されたら&&右キーが押されたら)などとわざわざ8方向の処理を考える必要はありますか?
前にここの掲示板で斜め方向の移動の処理も書けと言われたのですが

・DXライブラリの実行画面の縦と横の大きさ(座標)ってどんなもんでしたっけ?


多いですがお願いします すみません

アバター
Dixq (管理人)
管理人
記事: 1662
登録日時: 15年前
住所: 北海道札幌市
連絡を取る:

Re: 引数の渡し方

#5

投稿記事 by Dixq (管理人) » 14年前

> 自分は描画に関しては描画関数にすべてやらせようとしています当たり判定関数を呼ぶときに変数を一度に渡せるからです

仰っている意味が良く分からないですが、どういう単位でモジュールを分割されてますか?

> もし描画関数ではなく主人公関数や敵関数などにそれぞれの描画をまかしたら当たり判定はどうすればいいのでしょう?

「関数」で分割するのではなく、「主人公」「敵」といったオブジェクト単位で分割すると良いと思います。
softyaさんが書かれたリンク先にある設計です。

> ・斜め移動の時、キーボードを同時押ししますがこの処理は考えなくてもいいでしょうか?

4方向だけ計算すれば斜めにも移動しますが、斜めに移動している時は、移動量を√2で割ってやらないと、1:1の速さにならないので注意が必要です。

>・DXライブラリの実行画面の縦と横の大きさ(座標)ってどんなもんでしたっけ?

座標?解像度のことでしょうか?
設定次第で変わりますが、デフォルトは640x480です。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 引数の渡し方

#6

投稿記事 by softya(ソフト屋) » 14年前

賄賂 さんが書きました:・もう三つほど質問があるのですが
自分は描画に関しては描画関数にすべてやらせようとしています
当たり判定関数を呼ぶときに変数を一度に渡せるからです
もし描画関数ではなく主人公関数や敵関数などにそれぞれの描画をまかしたら
当たり判定はどうすればいいのでしょう?
当たり判定専用の関数を用意すべきです。
理由は、
(1)描画関数で当たり判定をすると当たり判定順番とと描画順番が違うと複雑になる。
(2)途中で消滅した場合は1フレームとは言え描画と食い違うことになる。
(3)関数の名前と機能が食い違うと自分で間違えてバグを作る可能性が高くなる。
(4)シンプルになる(これ重要)

そうしないと描画順番や、当たり判定で死んだ場合、矛盾を生じる可能性が高いです。
まず、
賄賂 さんが書きました:・斜め移動の時、キーボードを同時押ししますがこの処理は考えなくてもいいでしょうか?
if(上キーが押されたら&&右キーが押されたら)などとわざわざ8方向の処理を考える必要はありますか?
前にここの掲示板で斜め方向の移動の処理も書けと言われたのですが
上下左右移動→当たり判定の流れなら必要ないです。
上移動→当たり判定→下移動→当たり判定→右移動→当たり判定→左移動→当たり判定なんて成っていたら必要です。
賄賂 さんが書きました: ・DXライブラリの実行画面の縦と横の大きさ(座標)ってどんなもんでしたっけ?
DEFAULT_SCREEN_SIZE_XとDEFAULT_SCREEN_SIZE_Yですね。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

閉鎖

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