Skip to main content

singletonのサンプル?

シングルトンパターン比較

シングルトンパターンじゃなく作ったPlayerクラスをマウスクリックするたびにnewする動画
staticなメンバ変数playerCountがクリックするたびに増えて、自分の番号=playercountになるよ。

適当なソースコード

//Main.cpp

//省略
//ここにやりたい処理を書く
if ((oldMouseInput & MOUSE_INPUT_LEFT) == 0 && (mouseInput & MOUSE_INPUT_LEFT) != 0)
{
	int x, y;
	GetMousePoint(&x, &y);
	Hero *p=new Hero();
	p->SetPosition(x, y);
	p->SetPosition(x, y);
	heroes.push_back(p);
}


for (auto& hero : heroes)
{
	hero->Update();
	hero->Draw();
}
ScreenFlip();
//省略
#pragma once
class Hero
{
private:
	int posx_, posy_; // プレイヤーの座標
	int myNumber_;// プレイヤーの番号
	int hImage_; // プレイヤーの画像
	static int playerCount_; // プレイヤーの数
public:
	Hero();
	~Hero();
	void SetPosition(int x, int y);
	void Update();
	void Draw();
};

Hero::Hero()
	: posx_(0), posy_(0), myNumber_(0), hImage_(-1)
{// プレイヤーの画像を読み込む
	hImage_ = LoadGraph("Assets/tiny_ship5.png");
	if (hImage_ == -1)
	{
		// 画像の読み込みに失敗した場合の処理
	}
	playerCount_++;
	// プレイヤーの番号を設定
	myNumber_ = playerCount_;
}

Hero::~Hero()
{
}

void Hero::SetPosition(int x, int y)
{
	posx_ = x;
	posy_ = y;
}

void Hero::Update()
{
}

void Hero::Draw()
{
	DrawGraph(posx_, posy_, hImage_, TRUE);
	DrawFormatString(posx_+32+2, posy_-2, GetColor(255, 255, 255), "Player %d", myNumber_);
}