Make checkpoints for health regeneration
Create checkpoints, where the player can approach to regain health, replacing the current health regeneration system.
In progress
- Heal player only once (healing item)
Done
- Delete player healing every 5 seconds in main.py
- Add checkpoint as a block (map.py)
- Delete collision detection from move() function in helpers.py
- In the player.move() function, heal player if checkpoint collision is detected
Enemy animations
In progress
- Add running pngs into sprites.py (hint: create an array of all the running pngs)
- Give enemy the spriteIndex property
- In main.py, where the enemy object is created, change the references to the enemy sprite to yeti_standing
- In the game loop, blit the enemy running sprite onto the screen, using the spriteIndex to access the right sprite
- Change animation every 500 milliseconds
Done
- Add enemy sprite pngs into img folder
Make spawn blocks for enemy, player and checkpoints.
When a goal is reached, clear all enemies, checkpoints, and players. An enemy spawns on these blocks at the loading of each map.
Have enemy damage through ball projectile collision
In progress
- Give the projectile a hitbox (rect), (hint: pygame.draw.circle returns a rect)
- Give enemy health properties (copy from player)
- Copy heal and do damage functions from player
- Give projectile a function that checks for collision on enemy (rect.colliderect)
- Damage enemy health on collision
Player death and menu system
Add ball projectile
Create a ball-shaped projectile fired from the player. If the player is going right, fire right, and the same with player moving left.
Done
- Make new projectile object (class)
- Add properties to object. Have each variable be passed in from the constructor (init() function)
- x position
- y position
- radius
- color
- direction (-1 = left, 1 = right)
- velocity (speed. Have this be 8 times the direction, so don't add this in init)
- draw function
- pass in the display as a parameter
- pygame.draw.circle function
- move function
- add velocity to x position
- add properties to player
- add projectiles property (initialize to empty array)
- add move_projectiles function to player
- projectile.move() on each of the projectiles
- projectile.draw() each of projectiles (make sure to pass in display as a parameter)
- if projectile x position is greater than 400 or less than 0, erase it from array (out of screen)
- add to main game loop
- check when keyboard is pressed using KEYDOWN and K_SPACE
- add a projectile to player.projectiles on spacebar press
- run player.move_projectiles in game loop to move projectiles every loop
Fix player movement bug
Done
- separated direction variable to moving left and right
Add health to player
Done
- damage function that decreases player health
- heal function that increases player health
- function that draws the health bar (hint: try using pygame.draw.rect :))
- enemy doing damage to player on collision (hint: check moveRoutine() in enemy.py)
- function that heals the player a little bit every 2 seconds (hint: pygame.time.get_ticks() for ms passed)
- current health (property)
- health bar length (property)
Enemy movement
Have enemy move in a Mario Goomba-style movement. The Goomba travels in one direction, only changing directions when hitting a wall or object.
Done
- In moveRoutine in enemy.py, have the enemy move either left or right based on the direction variable.
- Switch directions on left/right collision
- Collision detection is given by the move() function. Find it in the self.move() function at the bottom of file.
- Check for right collision with collisions['right'], etc