2017-01-17 2 views
1

Salut, je suis nouveau à la gestion des états de jeu et j'essaie de changer les différents états en utilisant une liste enum.Comment gérer mon état de jeu de manière simpliste? C++

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

et la classe d'en-tête qui a la méthode pour obtenir et définir les états

class GameControl { 
private: 

GENERAL_STATE generalState; 

public: 

GameControl(); 
~GameControl(); 

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

j'ai mis le pointeur pour contrôler les états en utilisant

GameControl* gameControl; 

dans ma boucle de jeu, j'ai ajouté

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

pour dessiner l'écran du menu, mais en quelque sorte il se bloque et me ramène à cette ligne

GENERAL_STATE getGeneralState() { return generalState; } 

des idées?

+0

Pouvez-vous poster le message d'erreur? – pSoLT

+1

Comment avez-vous instancié l'instance de 'gameControl'? – YSC

+0

@pSoLT Exception non gérée à 0x00382D36 dans Throw Ball Game.exe: 0xC0000005: violation d'accès de lecture emplacement 0xCDCDCDCD. – user7194060

Répondre

1

Si vous ne l'avez pas encore fait, vous devez initialiser le pointeur gameControl.

Par exemple comme ceci:

GameControl* gameControl = new GameControl(); 

Mais ne pas oublier de delete à la fin.

Ou mieux encore, ne pas utiliser un pointeur du tout:

GameControl gameControl; 
switch (gameControl.getGeneralState()) 

Mais aussi à l'intérieur GameControl vous devez initialiser generalState.

+1

Ou au lieu de supprimer, utilisez des pointeurs intelligents. – DonTintoretto