- ベストアンサー
ゲーム作りにおいてのクラス指向について
多人数プレイ(とりあえず4人用で)用格闘ゲームを作る過程で、2週間ほど前からクラス指向を学びはじめたんですが、その構築方法のコツというか考え方がよく分かりません。 僕は今やっていることは、まずステージの状態を管理をするStageクラスとプレイヤーの状態を管理するPlayerクラスを作り、メイン関数内でPlayer1~Player4のインスタンスを宣言し、それらに各キャラクターのパラメータ(グラフィックデータなど)を設定するメンバ関数Player1.Set()~Player4.set()を呼び出しました。 同様にStageのインスタンスStage1を宣言し、位置や拡大率などのパラメータを設定するメンバ関数Stage.Set()を呼び出しました。 次に各プレイヤーとステージを表示させるメンバ関数をメッセージループ内で実行し、凸凹なステージとプレイヤー1~4の衝突判定を行うために、Playerクラス内に、Stageクラスのインスタンスや位置情報などを引数とした関数Player1.Collision()~Player4.Collision()をメッセージループ内で呼び出しました。 そして攻撃と当たり判定を実装しようと思ったのですが、この調子だと、キャラクターが攻撃したときの攻撃判定枠と、攻撃したキャラクター以外の当たり判定枠の衝突をプレイヤー分だけ条件処理させて、 Player1.Kougeki1Hantei(Player2); Player1.Kougeki2Hantei(Player2); Player1.Kougeki3Hantei(Player3); … … Player4.Kougeki100Hantei(Player3); こんなふうにクラス指向として何の価値もないプログラムに向かっているのではないかと焦りまくっています。 ともかく上記ような僕の考え方についてみなさまの辛口な意見・アドバイスをお聞きしたいのですが、一番知りたいことは、 「Player1~Player4のうち、攻撃したプレイヤーの攻撃判定枠と、その攻撃をしたプレイヤー以外のすべてのプレイヤーの当たり判定枠との衝突判定」という処理を、 Player1.Kougeki1Hantei(Player2); Player1.Kougeki2Hantei(Player2); このような書き方以外でどうやって行えばよいのかという点です。 また勝手ながら、僕の思考回路のショートを避けるために、各々のプレイヤーやステージのインスタンスに設定する情報はほぼ一定で(ユーザがキャラクターやステージを選択できない)、動きや攻撃の種類も全員同じとします。 ではよろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (1)
- D-Matsu
- ベストアンサー率45% (1080/2394)
お礼
詳しい説明ありがとうございます。 ご回答を参考にしつつ、今も四苦八苦しながら頑張ってます。 また何かあればよろしくお願いします。