Now that we’ve implemented Mouse
and Tiger
, we are going to move on to some more complex critters.
Some of these critters rely on the behavior of their opponent to determine how to fight. Every time a critter’s fight()
method is called, it is passed a parameter opp_info
of type CritterInfo
which provides useful information about the current opponent.
CritterInfo
CritterInfo
is a class, which provides getters and other helper methods. Some getters that you might want to use are:
get_char()
- which returns the critter’s display characterget_color()
- which returns the critter’s display colorYou might be asking why fight()
provides a CritterInfo
object rather than an object of type Tiger
, Mouse
, etc. There are two reasons: (1) this makes it simpler for a critter to handle any type of opponent and (2) objects are mutable, so giving direct access to a Critter
object could allow someone to accidentally, or maliciously, change instance variables that could break the simulation.
CritterInfo
Now that we know about CritterInfo
, let’s imagine using it. For instance, inside a critter’s fight()
method, you can call opp_info.get_char()
to get the opponent critter’s display character and opp_info.get_color()
to get its color.
Note that a every time a critter’s get_move()
method is called, it is also passed a parameter self_info
also of type CritterInfo
—this time, the information being passed in is about the current (self) critter, not of an opponent. Once again, some of the information (for example, knowing what neighbors you have in your immediate vicinity) may help your critter make better movement choices (i.e., avoidance or attack).