Today's Objective
As I mentioned yesterday today we learned about class inheritance and how we're going to use it to build out the other classes to keep score of the game and to detect collisions with the food, the wall, and the snake's tail.
Class Inheritance
To sum it up: Class Inheritance is the ability to inherit the properties of another class in a newly created one. Imagine you have a class called Parent
that has special features and methods. Now, you can make another class, let's call it the Child
class, that can utilize everything from the Parent
class and can add its own unique methods. So, instead of starting from scratch every time, we can reuse and extend the features of existing classes to make our code more efficient and organized.
To get this initialized you would have to call super().__init__()
within the 1 __init__
function. I've added a code snippet to give a simple visual:
class Parent:
def __init__(self, parent_attribute):
self.parent_attribute = parent_attribute
class Child(Parent):
def __init__(self, parent_attribute, child_attribute):
super().__init__(parent_attribute)
self.child_attribute = child_attribute
confession = Child("I'm the Pappy!", "That's the truth!")
print(confession.parent_attribute)
print(confession.child_attribute)
The above code will print:
This is very useful for minimizing the need to rinse and repeat for class and method creation.
The Project
So today we need to finalize the game by completing 4 objectives:
Detect food collision.
Create a scoreboard.
Detect collision with the wall.
Detect collision with the snake's tail.
This called for the creation of some new files and classes that can be found in the day-20
's folder (since I'm not starting today in a new folder). Detecting the food and re-assigning it to a random spot inherited methods from the Turtle()
class. We used that to create a new turtle and customized it to represent food. We created refresh
method as well that moves the food to a random X & Y coordinate once the head of the snake was {number-value}
away from it depending on what you set. The same thing goes for the scoreboard in which we created a new Turtle,
but, had to dive into the docs again to alter it to work as a scoreboard. Finally, added the work to detect wall and tail collision to wrap up!
You can find the final project here -> https://github.com/kdleonard93/100-Days-Of-Code_Python/pull/12. If you want, clone the code from Day 20 and give the game a try yourself to see what high score your can get!
EOD
There's the game in all its glory! Gonna go ahead and find a way to throw this up on the App Store and start raking in secondary income ๐. But all jokes aside, creating this game was pretty fun, and was actually able to apply a bit of what I learned at work earlier today ๐.