Play Speed
  • 0.5x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 2x
55 Lessons (4h 34m)
    • 1. Introduction

    • 2. How to install homebrew and pygame

    • 3. Basic game code structure

    • 4. How to change pygame background color

    • 5. Creating a settings class for our game

    • 6. Creating the ship class

    • 7. Drawing the ship to screen

    • 8. Refactoring part 1

    • 9. Refactoring part 2

    • 10. Moving our ship to the right

    • 11. Constant movement

    • 12. Moving to the left

    • 13. Making our ship go faster

    • 14. Stopping our ship at screens edge

    • 15. Bullet settings

    • 16. Bullet class

    • 17. Bullets group

    • 18. Refactoring check events

    • 19. Firing bullets

    • 20. Deleting bullets

    • 21. Update bullets function

    • 22. Creating the alien class

    • 23. Creating an instance of the alien

    • 24. Making our alien appear on screen

    • 25. Creating row of aliens

    • 26. Creating the fleet

    • 27. Refactoring create alien

    • 28. Adding rows of aliens

    • 29. Moving aliens right

    • 30. Has an alien hit screens edge

    • 31. Changing fleet direction

    • 32. Shooting down aliens

    • 33. Repopulatng the alien fleet

    • 34. Changing alien and bullet speed

    • 35. Detecting alien ship collisions

    • 36. Responding to alien ship collisions

    • 37. Reacting when an alien reaches the bottom of the screen

    • 38. Game over

    • 39. When different parts of the game should run

    • 40. Create the button class

    • 41. Creating a play button

    • 42. Making the play button work

    • 43. Resetting our game

    • 44. Deactivating the play button

    • 45. Hiding the mouse

    • 46. Refactoring bullets

    • 47. Leveling up

    • 48. Resetting the speed

    • 49. Creating a scoreboard

    • 50. Adding points to aliens

    • 51. Increasing the points score

    • 52. Rounding the score

    • 53. Adding a high score

    • 54. Displaying our level

    • 55. Adding lives


Project Description

============================= June Student Challenge =============================

Hi All,

I have been busy creating my next course which will teach students about Python and data science.

In the meantime, to keep your Python muscles flexing here is June's Student Challenge.

This month, your challenge is to create a file manager program. The program should display a list of options that allow you to:

  1. read a file
  2. write to a file
  3. append to a file
  4. delete a file
  5. list the contents of a directory

Extra bonus points if your program can:

  1. check if a file/directory exists
  2. can move a file
  3. can copy a file
  4. create a new directory
  5. check what operating system a user is running
  6. display date and time

This challenge requires four modules:

  • Shutil
  • OS
  • Time
  • subprocess

This month's challenge is a stretch and builds on the January challenge. With this in mind there will be two winners from submitted challenges.

  • The first winner must complete points 1 - 5. Chosen at random this winner will receive a $50 Amazon gift card.
  • The second winner must complete points 1 - 5 and at least points 1 - 3 of the bonus section. This winner will also be chosen at random and will receive a $100 Amazon gift card.

It's a big one! Here is a screen shot of my file output for some inspiration


Also if you would like some help and pointers I will at random post code snippets to my Instagram page.

Each time I post a code snippet I will update the source file on my GitHub account to help you along.

This challenge has been posted in the projects section of all my Python courses so please submit your code there.

I hope that I have explained this months challenge clearly but if you have any questions please feel free to ask.

Good luck!



January Student Challenge

Hi All,

Welcome to this months student challenge and the first of 2019. Last month was our first challenge and as promised I will be running student challenges every month in 2019.

For new students these challenges are designed to help reinforce what you learn in my Python classes. There will be two winners of this months challenge, each receiving a $50 Amazon Gift Card. The challenge will close on January 30th and two winners will be chosen at random on January 31st.

So, what is this months challenge?

By now you know that I am a massive book worm, so your challenge is to create a book storage application. The application should allow users to manage their book collection.

To complete the challenge your application will need to have three main features:

1. It must allow users to add new books to the collection

2. The application must allow users to view all the books in their collection

3. The application must allow users to find a book within their collection by any of its attributes

Here are some pointers to get you started

Books should be dictionaries, and you can define the structure of the dictionary to be anything you like. For example you could choose to have books as dictionaries with the following keys:


    'name': 'Elon Musk',

    'author': 'Ashlee vance',

    'genre': 'biography'


Or you may choose to have more keys, such as:


    'name': 'Elon Musk',

    'author': 'Ashlee vance',

    'genre': 'biography',

    'publisher': 'virgin',

    'published date': '2015'


How should books be stored?

This is up to you, to complete the challenge a user should be able to print them to the screen, find and retrieve them. I would suggest that you use a list. If you are comfortable using files then you could go with that option.

How to find moves.

With your structure defined, users should be able to "find all books published in 2015" or "find all movies that are biographies". To do this users should be able to tell your application what property they are looking for, is it name, genre, published date or something else. A user should also be able to tell your application Elon Musk, or biography for the examples above.

With both property and the value, a user should be able to find all books that match both. The challenge does not close until January 30th so you have plenty of time to think about your solution. 

If you need any help, just ask in the community section of the class and I'll be happy to help. 

Best of luck,



December Student Challenge

As you begin to write more code you're going to want to back it up. This backup might be on your system locally, on a USB drive or another external storage device such as cloud storage. All of these options are great expect for one thing, they make sharing and collaborating on your code difficult. This is where GitHub comes in. 

GitHub is the worlds leading software development platform. You can host, review, share, collaborate on your code along with 31 million other developers and it's free to set up an account.

I've recently started using GitHub to host code for new classes that I'm working on, Check it out to keep up to date with my latest classes and code.

For your project what I'd like you to do is to create your own GitHub Repository and push your code online using the Atom code editor. All the details that you need are available in the linked documents below which contain how-to's on installing Atom and getting set up with a GitHub Account and creating a repository.

When you're ready to push your code share your new repository with the class and if you ever run in to trouble with coding you can simply send out the link to the repository and a helpful someone might review it for you.

Best of luck and I look forward to seeing your online code repository.

Student Projects