본문 바로가기

프로그래밍/C/C++

GOF 상태패턴 미로게임 Maze Game

 

챕터3 생성패턴에 미로게임을 만든다 가정하고 예를 보여준게 있음

미로 게임을 만드는데 구성 요소들에 필요한 모든 연산을 정의한 공통 추상 클레스를 하나 만들고 (MapSite)

방인지, 벽인지등을 판단해서 MapSite에 구현된 Enter이 실행되도록 함

 

 

// MazeGame.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"

// 방찾기 미로 게임
// 방은 정사각형으로 되어 있으며 동, 서, 남, 북 선택해서 이동 할 수 있다.
enum Direction { East, West, South, North };

class MapSite {
public:
	virtual void Enter() = 0;
};

// 첫번째 미로 타입 : Room
class Room : public MapSite {
public:
	Room(int RoomNo);
	MapSite* GetSide(Direction) const;
	void SetSide(Direction, MapSite*);

	virtual void Enter();

private:
	MapSite* _sides[4];
	int _roomNumber;
};

class Wall : public MapSite {
public:
	Wall();
	virtual void Enter();
};

class Door : public MapSite {
public:
	// 문을 초기화 하기 위해서는 문이 어느 방 사이에 있는지 알아야 함.
	Door(Room* = 0, Room* = 0);
	virtual void Enter();
	Room* OtherSideFrom(Room*);

private:
	Room* _room1;
	Room* _room2;
	bool _isOpen;
};

class Maze {
public:
	Maze();
	void AddRoom(Room*);
	Room* RoomNo(int) const;
};

class MazeGame {
};

int _tmain(int argc, _TCHAR* argv[])
{
	return 0;
}


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'프로그래밍 > C/C++' 카테고리의 다른 글

c++ 11, 14, constexpr  (0) 2016.08.06
람다, 클로져, Closure, 람다함수 사용법  (0) 2013.07.23
CString, BSTR, char 자료형 변환  (0) 2013.04.03
C++ 기초  (0) 2012.06.15
템플릿  (0) 2012.02.13