14.1 Bad Example

Enumerations (also often called ‘enums’) allow us to display numbers as text. Take an enemy class for example. The enemy could be a warrior, a rogue or a priest. Depending on that choice, another image would be displayed on the screen. You could use booleans to remember what type of enemy you’re dealing with:

 
class enemy { 
  bool warrior = false
  bool rogue   = false
  bool priest  = false
5  Rect r; 
 
  void setWarrior() { 
    warrior = true ; 
    rogue   = false
10    priest  = false
  } 
 
  // the methods setRogue and setPriest are similar 
  // ... 
15 
  void draw() { 
    if     (warrior) Images(=== warriorImage ===).draw(r); 
    else if(rogue  ) Images(=== rogueImage   ===).draw(r); 
    else if(priest ) Images(=== priestImage  ===).draw(r); 
20  } 
}  

Even though this works, it isn’t very efficient. Right now, we only got 3 types of enemies, but the more possibilities you have, the more variables you need to change when selecting a type. It would be much better to use a single variable.