Heart Click ++

You can do this project either starting from either of:

You are going to make 1 small code change to your game. If you’d like to work with a friend, feel free.

Quick Review

Heart Click had a core pattern that looked like this:

  • setup an initial set of resources (images and sounds) and state (a random direction)
  • played a sound on load/startup
  • then we started a loop where we:
    • updated our state (and/or exited) based on the user’s actions
    • updated our state based on our simulation (motion, collisions)
    • drew the game on-screen

Which in code, looked like this:

def main():
    """Main is the traditional name for the overall script function"""
    clock = pygame.time.Clock()

    screen = pygame.display.set_mode((640, 480))
    pygame.mixer.init()
    pygame.display.init()

    state = setup_state(screen)
    state['instructions'].play()

    while True:
        
        event = pygame.event.poll()
        while not (event.type == pygame.NOEVENT):
            state = check_user_input( state, event )
            event = pygame.event.poll()
        
        state = update_simulation( state, screen )
        draw_game(state,screen)
        clock.tick(60)

Note

The function above is from the Heart Click in Functions tutorial, if you’re curious how it works you can follow through that tutorial before starting this one.

Your Idea

What do you want to change about the game? Make it something small and simple, something you can describe in a couple of words:

  • “the heart runs away from their mouse”
  • “show the number of times they’ve clicked”
  • “they lose if they click more than 10 times”
  • “the heart gets faster the longer they play”
  • “20 hearts”
  • “2 hearts, one loses, the other wins”

When you’ve got your idea, add it to the Idea Board with your name.

Breaking Down the Idea

What do you need to change?

  • Do you need to set up a resource (images, audio, fonts (for text))?
  • Do you need to process user input (mouse clicks, keyboard hits)?
  • Do you need to track some state (number of clicks)?
  • Do you need to change how the simulation works (motion, etc)?
  • Do you need to change how the game is drawn?

What Don’t You Know Yet?

We’ve only covered a tiny fraction of programming (and Python) so far, there are going to be lots of things you don’t know about yet. Yay!

  • Can you find out how to do it from the Pygame Documentation?
  • Can you find out how to do it from a web search?
  • Can you play around at the command-line to find the solution?
>>> import pygame.font
>>> help(pygame.font)