Python – SoloLearn Intermediate Python Shooting Game OOP

Big piece of code looked scary at first glance, but was pretty simple to figure after review of a few minutes. Two simple inherit edits, then a couple elif’s in the while loop to call the proper object’s hit method depending on weapon type. Note commented lines, Monster sub class weapon type is gun, Alien sub class is laser, so we are matching object instances to weapon types from an input. Sounded more confusing that it actually is, but you have to practice the previous lessons (or go beyond like I do) to get it.

This project is at the end of the SoloLearn Intermediate Python OOP lessons.

class Enemy:
  name = ""
  lives = 0
  def __init__(self, name, lives):
    self.name = name
    self.lives = lives

  def hit(self):
    self.lives -= 1
    if self.lives <= 0:
       print(self.name + ' killed')
    else:
        print(self.name + ' has '+ str(self.lives) + ' lives')

# Inherit Enemy
class Monster(Enemy):
  def __init__(self):
    super().__init__('Monster', 3)

# Inherit Enemy
class Alien(Enemy):
  def __init__(self):
    super().__init__('Alien', 5)


m = Monster() # gun
a = Alien()   # laser

while True:
    x = input()
    if x == 'exit':
        break

# elif for weapon type and then call correct object hit method 
    elif x == 'gun':
      m.hit()
    elif x == 'laser':
      a.hit()
Sample Input

laser
laser
gun
exit

Sample Output

Alien has 4 lives
Alien has 3 lives
Monster has 2 lives 

Leave a Comment