2017-01-17 5 views
1

Привет, я новичок в управлении состояниями игр, и я пытаюсь изменить различные состояния, используя список перечислений.Как упростить управление игрой? C++

enum class GENERAL_STATE : int { 
menu = 1, 
gamestart = 2, 
}; 

и класс заголовка, который имеет метод, чтобы получить и установить штаты

class GameControl { 
private: 

GENERAL_STATE generalState; 

public: 

GameControl(); 
~GameControl(); 

GENERAL_STATE getGeneralState() { return generalState; } 
void setGeneralState(GENERAL_STATE gens) { generalState = gens; } 
}; 

я поставил указатель для управления состояниями с помощью

GameControl* gameControl; 

в моем игровом цикле, я добавил

switch (gameControl->getGeneralState()) 
{ 
case GENERAL_STATE::menu : 
{ 
          menu1.draw(); 
}break; 
} 

, чтобы нарисовать экран меню, но каким-то образом он падает и приводит меня к этой линии

GENERAL_STATE getGeneralState() { return generalState; } 

любые идеи?

+0

Вы можете написать сообщение об ошибке? – pSoLT

+1

Как вы создавали экземпляр 'gameControl'? – YSC

+0

@pSoLT Необработанное исключение в 0x00382D36 в Throw Ball Game.exe: 0xC0000005: Место для обнаружения нарушения доступа 0xCDCDCDCD. – user7194060

ответ

1

Если вы этого еще не сделали, вам нужно инициализировать указатель gameControl.

Например, как это:

GameControl* gameControl = new GameControl(); 

Но не забудьте delete это в конце.

Или еще лучше, не используйте указатель на все:

GameControl gameControl; 
switch (gameControl.getGeneralState()) 

Но и внутри GameControl вы должны инициализировать generalState.

+1

Или вместо удаления используйте интеллектуальные указатели. – DonTintoretto