C++でのゲームプログラミング設計について

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

C++でのゲームプログラミング設計について

#1

投稿記事 by jinten » 13年前

初めまして、自分はC++を勉強しようと思い、クラスについてチマチマと手を出しています。

ゲームプログラミング設計において、モジュール単位での処理は分かるのですが、C++でそれを実現しようとすれば、
オブジェクトのインスタンス化は何処で行えばよいのでしょうか?

一応、ゲーム作成を目指していますので、ゲームループの外・・・WinMain関数の直後で宣言して、ポインタ引数でクラスのアドレスを渡し、
その先の関数でクラスのメソッド扱うのか、それともヘッダーでグローバルとしてインスタンス化し、mainでは実体として・・・他ファイルからはexternで呼び込むような方法なのでしょうか?

グローバルのインスタンス制御に関しては、「龍神録プログラミングの館」様で説明されていた「プリプロセッサ」を使用した制御を参考にさせてもらっています。
#ifndef GV_INSTANCE
#define GV
#else
#define GV extern
#endif

プレイヤーの情報(座標やHP等)を保持したまま、インスタンス化したオブジェクトを、どう扱えばいいのか分からなくて・・・

分かりにくい説明でスミマセン・・・。お暇であればご教授の方、是非お願いいたします。m(_ _;)m

とっち
記事: 56
登録日時: 13年前
住所: 岡山

Re: C++でのゲームプログラミング設計について

#2

投稿記事 by とっち » 13年前

「龍神録プログラミングの館」のような書き方はオブジェクト指向ではなく、あまりよい書き方ではありません。
c++でclassを使うのであれば全く別の方法をとるべきです。

僕も独学ですので、あまり自信はありませんが、

コード:

// testというクラスで考えてみる

// test.h
class CTest{
   int num;
public:
   CTest();
   void show();
};

// test.cpp
#include "test.h"
CTest::CTest(){
   num=0;
}

void CTest::show(){
   printf("%d",num);
}

// main.cpp
#include "test.h"

int WinMain(略){
   CTest *t;
   // 初期化とかするとこ
  t=new CTest();

   while(略){
      test->show();
   }
}
みたいな感じで書けばよろしいかと思います。

jinten

Re: C++でのゲームプログラミング設計について

#3

投稿記事 by jinten » 13年前

ご返信ありがとうございます。

やはり、グローバルではなくポインタでの渡し合いになるのですね。
引数が長くなるのを避けために、構造体もしくはもう一つのclassでclassをまとめるといった手法はOKなんでしょうか?

もちろん、保持しなくてもいいメンバ変数を持つクラスは、ローカル関数のスコープ内でインスタンス化して使用します。
敵や味方等の永続的に使用するようなパラメーターを持ったclassは、やはりWinMain直下で宣言し、あとはポインタでの引き渡しで管理するのでしょうか?

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

Re: C++でのゲームプログラミング設計について

#4

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

龍神録の下の方に、四聖龍神録plus次回作のソースコード(C++)をDixq(管理人)さんが公開されていますので参考にされてはどうでしょうか?
http://dixq.net/rp/
龍神録と違い完全にオブジェクト指向で書かれていますので答えの一つにはなると思います。

[追記]
やはり、グローバルではなくポインタでの渡し合いになるのですね。
引数が長くなるのを避けために、構造体もしくはもう一つのclassでclassをまとめるといった手法はOKなんでしょうか?
なんでも引数の構造体にまとめるのはグローバル変数と変わらないので避けたほうが良いでしょう。
グローバル参照の害は誰(どの関数)が更新しているのか分かりづらいことです。
何でもかんでも引き渡してやるとグローバル変数と変わらなくなってします。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

jinten

Re: C++でのゲームプログラミング設計について

#5

投稿記事 by jinten » 13年前

C++でのオープンソースがありましたか・・・何とか理解できるくらいの知識を身に付けて拝見させていただきます。

また一つ知識が深まりました。ありがとうございます。m(_ _)m

閉鎖

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