ゲーム全体で使用する変数を一つのファイルにまとめておきたい。

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

ゲーム全体で使用する変数を一つのファイルにまとめておきたい。

#1

投稿記事 by ネオニート » 13年前

プレイヤーの名前など、各箇所で使用するデータを一つのファイルに保存しておきたいのですがやり方がわかりません。

調べてみるとパブリック変数がそれに近いのですがいまいちよくわかりません。

やりたいこととしては

・変数を int ATK = 100; のようにファイル(例えばinfo)にまとめておいて、別のファイルからint nowATK = info.ATK;

のような感じです。

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

Re: ゲーム全体で使用する変数を一つのファイルにまとめておきたい。

#2

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

ネオニート さんが書きました:プレイヤーの名前など、各箇所で使用するデータを一つのファイルに保存しておきたいのですがやり方がわかりません。

調べてみるとパブリック変数がそれに近いのですがいまいちよくわかりません。

やりたいこととしては

・変数を int ATK = 100; のようにファイル(例えばinfo)にまとめておいて、別のファイルからint nowATK = info.ATK;

のような感じです。
使用言語は何でしょうか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。


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

Re: ゲーム全体で使用する変数を一つのファイルにまとめておきたい。

#4

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

情報を1つのクラスに集中して、クラスのインスタンスをグローバル変数として参照可能にすれば良いんじゃないでしょうか?
ただし、メンバ変数をpublicにするのは避けるべきだと思いますが。

変更が全くないならenumやconst値でpublicで良いと思いますが。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

UN
記事: 18
登録日時: 14年前
住所: 神奈川県

Re: ゲーム全体で使用する変数を一つのファイルにまとめておきたい。

#5

投稿記事 by UN » 13年前

externやシングルトンでの実装等方法は色々あるでしょうが、
そのへんは好き嫌い別れるところなのでどれでもいいきがします。
一応ざっくりとした例だけ書きます。

コード:

 
#include <stdio.h>

class Player
{
public:
	Player(){}
	~Player(){}

	void	SetAttack( int nAttack )		{ m_Attak = nAttack;	}
	int		GetAttack()						{ return m_Attak;		}

protected:
	int		m_Attak;
};

class CGlobal
{
public:
	Player* GetPlayer( int nID )
	{
		return &m_PlayerList[ nID ];
	}

	inline static CGlobal* GetInstance()
	{
		static CGlobal s_Instance;
		return &s_Instance;
	}

protected:
	CGlobal(){}
	~CGlobal(){}

	static const int	MAX_PLAYER = 32;

protected:
	Player		m_PlayerList[ MAX_PLAYER ];
};

// 上のクラスのヘッダーさえ読み込めばどこでもアクセス可能。

void main()
{
	Player* pPlayer = CGlobal::GetInstance()->GetPlayer( 0 );
	pPlayer->SetAttack( 100 );
}


大分適当に書きましたが、こんなかんじでもやりたいことはできると思います。
externについては省きました。本などのほうが詳しいと思いますので。

大きなお世話かもしれませんが、これらの方法はどこでもアクセスできて便利な反面、
いざソースを個別に切り離すときに、どこのソースにもこのグローバルなアクセサがでてきて
切り離せず、全部芋づるのようにソースがついてきて、別なプログラムで
ソースが流用できないなんて弊害も生むので、極力は避けたほうがいいきはします。

ただこのへんは使ってみて、自分なりに判断することをお勧めします。

閉鎖

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