Player now contains behavior and data you defined. For example, you specified an isImmortal property:
val isImmortal = false
You used a
val because once the player is created, their immortality should never be reassigned.
But this property declaration means that, at the moment, no player can be immortal:
There is currently no way to initialize isImmortal to any value other than false.
This is where a primary constructor comes into play. A constructor allows its caller to specify the initial values that an instance of a class will require in order to be constructed. Those values are then available for assignment to the properties defined within the class.
Like a function, a constructor ...