MEA Platformer

MEA Platformer - To Do

Make checkpoints for health regeneration
Create checkpoints, where the player can approach to regain health, replacing the current health regeneration system.
In progress
  1. Heal player only once (healing item)
    Done
    1. 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
            1. 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
                      1. 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.
                        In progress
                          Have enemy damage through ball projectile collision
                          In progress
                          1. 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
                                    In progress
                                      Camera Follow
                                      In progress
                                      1. Basic camera follow
                                        • Parallax scrolling
                                          Powerups
                                          In progress
                                            Make more levels
                                            In progress
                                              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
                                              1. 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
                                                1. separated direction variable to moving left and right
                                                  Add health to player
                                                  Done
                                                  1. 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)
                                                              • max 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
                                                                  1. 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