New Courses. New Skills.

Discover real skills for the world right now. Over 14 NEW courses are here at Juni.

PyGame: Python Game Development

Does your kid want to be a game developer? They can start now. After completing Python Level 1, students can take this course to build more sophisticated graphics-based games. They’ll also learn object-oriented programming, a key component of computer science. Game on!

First class free!
$62.50/ class
Billed Monthly
Total Billing $250
PyGame: Python Game Development
Private 1:1
Ages 11-18
Duration 6-8 months
Class size
Personalized 1:1 Instruction

50-minute sessions available Monday-Sunday 7am-7pm PT

Juni Instructor Kara sitting on a couch

Get hand-matched with an instructor that meets your child’s schedule and learning style. To begin, click the button below and select 3 potential timeslots during the week that work for your family and share some details about your learner. We’ll match you and set up your first class!

What and how will you learn?

Instructors will assign students roughly 60 minutes of project related homework at the end of each session. Homework is designed to complement the class experience and ensure the student continues to gain practical experience outside of the session.

  1. Actors-1: I know how to use width and height to specify the dimensions of the screen in PyGame.

  2. Actors-2: I know what an actor is in PyGame.

  3. Actors-3: I know how to create a new actor in PyGame.

  4. Actors-4: I know how to use position keywords to control the position of the alien in PyGame.

  5. Actors-5: I can use the draw() function correctly in PyGame.

  6. Actors-6: I can use screen.clear() correctly in PyGame

  7. Actors-7: I know what global variables are and when to use them in my code.

  8. Actors-8: I can use global variables to move the alien on the screen in PyGame.

  9. Actors-9: I can use the update() function correctly in PyGame

  1. Event Listeners-1: I understand what event listeners are and how we use them in PyGame projects.

  2. Event Listeners-2: I can use the on_key_down() function correctly in PyGame.

  3. Event Listeners-3: I can use the key parameter correctly in PyGame.

  4. Event Listeners-4: I can use the on_mouse_down() function correctly in PyGame.

  5. Event Listeners-5: I can use the button parameter correctly in PyGame.

  6. Event Listeners-6: I can use the position keyword correctly in PyGame.

  1. ZRect-1: I know what a ZRect is in PyGame.

  2. ZRect-2: I can use the ZRect((x,y),(w, h)) function correctly in PyGame.

  3. ZRect-3: I can use the screen.draw.filled_rect() function correctly in PyGame.

  4. ZRect-4: I know how to change the color of a ZRect in PyGame.

  5. ZRect-5: I know what dynamic attributes are in PyGame.

  6. ZRect-6: I can use dynamic attributes to move an Actor in PyGame.

  7. ZRect-7: I can use the .colliderect() function correctly in PyGame.

  8. ZRect-8: I know the difference between the functions .colliderect() and .contains()in PyGame.

  1. Collectibles-1: I know how to incorporate lists into my PyGame code.

  2. Collectibles-2: I know how to incorporate loops into my PyGame code.

  3. Collectibles-3: I know how to draw collectibles on the screen by using a loop in PyGame.

  4. Collectibles-4: I know how to change dynamic attributes of list objects in PyGame.

  5. Collectibles-5: I can use nested loops to check for collisions of collectibles with each other in PyGame.

  1. Gravity-1: I know what global variables are necessary to add gravity in PyGame.

  2. Gravity-2: I can set up the necessary dynamic attributes for gravity in PyGame.

  3. Gravity-3: I can correctly apply gravity in the update function in PyGame.

  4. Gravity-4: I can prevent an actor from falling through the floor in PyGame.

  5. Gravity-5: I can make an actor jump in a game with gravity in PyGame.

  1. Friction-1: I know what global variables are necessary to add friction in PyGame.

  2. Friction-2: I can correctly apply friction in the update function in PyGame.

  3. Friction-3: I know how the value of the friction variable will affect an actor in PyGame.

  1. Platforms-1: I know what is necessary to create a platform in PyGame.

  2. Platforms-2: I can create a ZRect in a given spot on the screen in PyGame.

  3. Platforms-3: I know how to incorporate conditionals into my PyGame code.

  4. Platforms-4: I can write the correct code to keep an actor on top of a platform in PyGame.

  5. Platforms-5: I can create a moving platform in PyGame.

  1. Many-1: I know how to store many platforms in a list in PyGame.

  2. Many-2: I can create and fill a list with platforms in PyGame.

  3. Many-3: I can draw all platforms in a list to the screen in PyGame.

  4. Many-4: I can apply platform collision to all platforms in the list in PyGame.

  1. System Control-1: I can use a gameState variable correctly in PyGame.

  2. System Control-2: I can use conditionals in the draw() function to display the correct screen based on the gameState in PyGame.

  3. System Control-3: I know that PyGame Zero’s built in Clock can be used for scheduling game events.

  4. System Control-4: I can use the moveTargets() function correctly in PyGame.

  5. System Control-5: I can use the clock.schedule_interval() function correctly in PyGame.

  6. System Control-6: I can use the clock.unschedule() function correctly in PyGame.

  1. Projectiles-1: I can use a variable to check if the laser has been fired in PyGame.

  2. Projectiles-2: I know how to manage lists of projectiles correctly in PyGame.

  3. Projectiles-3: I can loop through the list in the draw() function correctly in PyGame.

  4. Projectiles-4: I can loop through the list in the update() function correctly in PyGame.

  5. Projectiles-5: I know how to make an actor move in the direction of another actor in PyGame.

  1. I use spacing and logical variable names to improve my code's readability

  2. I regularly comment my code to improve my code's readability

  3. I appropriately and frequently test my code

  4. I can independently debug my code

  1. Joyful Collaboration

    1. I practice listening to my instructor and sharing my ideas to co-create understanding.
    2. I attempt tasks independently and ask my instructor questions when I need help.
  2. Unlimited Curiosity

    1. I take ownership of my learning by asking meaningful questions both when I need clarification and when I want to know more about a topic.
  3. Nimble Determination

    1. I practice resilience when I am frustrated that I have not yet achieved mastery of a new concept or skill; instead of complaining about challenges, I try new approaches and creative solutions.
  4. Invest in Excellence

    1. I arrive to class on time and prepared to learn, with my computer set up with a strong internet connection.
    2. I complete my homework on time, and if I cannot complete my homework due to other obligations, I honestly communicate the reasons for late homework to my instructor.
    3. I do my best to stay present and on task for the whole session. I support my focus by putting away any distracting technology and setting notifications on my device to “do not disturb” mode.

Who are Juni’s Instructors?

Our instructors are subject matter experts from top US universities. Instructors are highly-vetted and background checked prior to joining and undergo extensive training before ever teaching on our platform.

Upon signing up, parents are asked a series of questions that allow us to match your child with an optimal instructor based on their unique needs and interests. Factors that are considered in our matching process include Learning Style, Personality, Personal Experience, and Academic & Career Aspiration.

Headshot for Puja D
Puja D
I really like bringing a strong energy to my classes, and sharing excitement with my students about learning new topics.

Real Reviews from Real Parents

4.9 out of 5



My 3 sons ages, 10 1/2, 9 and 7 started using Juni in early June 2020 and absolutely love it. The instructors are college age kids and they relate to my boys very well. My oldest is doing both the coding and math tracks and I feel like he will be way ahead of his 5th grade class come the fall. Once the other two are old enough I will certainly be enrolling them in math as well.

Tarun Mehta

Juni has been amazing for my daughter. She is a reluctant learner when it comes to Computer Languages, but the Juni instructors have been engaging to her at a level where she feels comfortable with them and they manner in which they present the curriculum. They understood my ask that I Wanted her to start liking computer languages, and they are presenting the information in a way that is fun and relatable. I am very happy with my Juni experience and my daughter's journey with Juni so far!


I have two boys taking classes and the Juni takes the time to match the right instructor for my children. They are patient and very consistent in their teaching. The boys are thoroughly enjoying their class and love accomplishing and learning new things!

Start Learning with Juni

Turn your child’s passion into a professional skill