Heap (health) and Stack (special ability) added. High jump is the first special ability.
Added a health variable in the player class, which keeps represents how much life the player has until dying. I also added a max health variable, which will be useful for energy pickups, since the player should not be able to infinitely increase their health. The max health will also be used for resetting the player after death or starting a new level. The max health is an instance variable and not a constant, just in case I want to increase the player’s maximum health through an upgrade or level system. For now, to go along with the computer theme I am calling health “Heap”.
In the Player class, I added a method to detect collision between the player and all of the enemies on the screen. If the player collides with an enemy, then the health is reduced by 20. Since the player may collide with the enemy for multiple frames, I added another variable which is a counter for invincibility. The player stays invincible for 60 frames. At that time, I draw the character with a 50% transparency which signifies that the player is invincible. If the player’s health is equal to or below zero, then the player’s alive variable gets set to false, which removes the character from the screen and displays the message “You Died”.
Additionally, I added variables for special ability and the maximum amount of special ability. This works in a similar way to MP (magic points) in an RPG. Using an ability will decrease the amount of special ability left. For now, I just have one special ability which is a high jump. The player starts out with 50 points of special ability. The special ability can be activated/deactivated by pressing the B button. When active, the player will jump six blocks high instead of the regular three. Each time the player jumps with the ability active, the special meter will reduce by 10. This will allow the player to jump over obstacles which can’t be jumped over using the regular jump. To go along with the computer theme, I am calling the special ability points “Stack”.
The bounds for the scroll seemed to be too close to the edges of the screen, so I increased the bounds values to 400. This way, the player has a better chance of seeing enemies coming from off screen. I did notice that sometimes the player will not be correctly moved to the next map now. This could be due to me changing the bounds, which is something I will have to double check.