Python Jumpstart by Building 10 Apps Transcripts
Chapter: App 7: Wizard Battle App
Lecture: Introduction to the Wizard Battle App
0:00 It's time for app number 7, and this time we are going to build a really fun wizard game
0:06 it's kind of a role playing dungeons and dragons sort of thing. So what is that going to look like? Well, it's going to be a text based game
0:15 and here you can see a standard ground of game play. Of course, like all of our apps we start with a little header that says what the app is,
0:20 and then right off bat we have our hero in the game, the wizard Gandolf. And he sees an Evil Wizard. It turn out that one is super strong
0:28 and so he is like... I am not going to battle this, he could attack it, he could look around, but he is just going to run away as quick as he can.
0:34 So he does, and then next he finds a Bat, and decides hey, I can probably attack and kill this Bat, so he does,
0:41 but just barely he roles a 22, the bat roles at 22 and I guess because the element of surprise the wizard was triumphant over the Bat.
0:49 After that, the wizard Gandolf decides to have a look around and he sees that there is a wimpy toad, a tiger, a dragon
0:56 and that very strong evil wizard hanging around. The game goes around and around like this,
1:01 until either all the creatures are defeated or the wizard is gone. While building this game we are going to learn
1:07 one of the most important concepts in all of computer programming and that is the concept of object oriented programming.
1:15 This starts with defining classes and classes defined how data and behavior are bundled into one concept in programming
1:22 maybe this is a wizard or a dragon or the general concept of a creature or even the concept of a game itself.
1:30 When we create these classes, these are called objects, we want to initialize them, have them come into existence immediately with the data they need,
1:36 we'll do that through initializers and when we are talking about inheritance we have to chain those initializers through the inheritance tree,
1:42 so we are going to talk about initializer chaining. Speaking of inheritance, that lets us model our concepts
1:48 in our program with different levels of specialization. So we can model all of the actors, the dragon, the toad, the wizard
1:56 as something maybe we'll call the creature in the game and then we have a specialized version of the creature
2:01 that has other data and other features called the wizard and it knows how to battle creatures and then we can also have different types of creatures
2:08 that may themselves have special features like a dragon that has a special attack or something like that.
2:13 So this is called inheritance and it's a very powerful feature, when use judiciously. When we talk about inheritance,
2:19 we are also going to talk about polymorphism and duck typing. Some languages have very strict rules
2:24 about how you can use the more general what you call a base class or the specialized derived class,
2:30 like how you can use a creature versus how to use a wizard, the compiler checks all these things and so on,
2:35 Python doesn't have compiling or this concept of strong typing instead we are going to use something called duck typing
2:41 we'll talk about that near the end of our app. Let's get onto build a super fun dungeons and dragon style wizard game.