from random import randint

# Written By: Dan Deblasio
# Translated By: Tyler Woodhull
# 6/1/13
# Car.py

# Example of a class with several instance variables designed by the
# students.

class Car:
    name = None
    speed = 0.0
    direction = 0.0
    on = False
    passengerNum = 0
    charge = 0.0
    ammoLevel = 0.0
    health = 0.0

    # Creates a car with a default name of None or null.
    # If a parameter is given, the car has that parameter as the name.
    def __init__(self, name1 = None):
        self.name = name1
        self.speed = 0.0
        self.direction = 0.0
        self.on = False
        self.passengerNum = 1
        self.charge = 0.0
        self.ammoLevel = 5000.0
        self.health = 5000.0

    # Returns true iff this car isn't dead.
    def notDead(self):
        return health > 0

    # Charge that care up to desiredLevel.
    def chargeCar(self, desiredLevel):
        self.charge = desiredLevel

    # Pick up a hitch hiker.
    def pickUpHitchHiker(self, addPassenger):
        self.passengerNum += addPassenger
        self.ammoLevel += randint(0, 30000)

    # Destroys the current car object.
    def blowUp(self):
        print(self.name + " Blew Up!!!!")
        self.health = 0
        self.passengerNum = 0

    # source shoots at target. This is an example of a static method
    # since it's not called on a Car object at all.
    def shoot(source, target):
        hitNumber = randint(0, 3000)

        if(source.ammoLevel < hitNumber):
            hitNumber = int(source.ammoLevel)

        source.ammoLevel -= hitNumber
        target.health -= hitNumber

        print(target.name+" <----> "+source.name+" damage: "+str(hitNumber)+"\n\n")

        if(target.health <= 0):
            target.blowUp()

    # Returns a string representation of this car.
    def __str__(self):
        return "Name: " + self.name + "\nHealth: " + str(health)

def main():
    
    car1 = Car("Arup")
    car2 = Car("Tyler")

    car1.pickUpHitchHiker(4)
    car2.pickUpHitchHiker(7)

    while(car1.health > 0 and car2.health > 0):
        Car.shoot(car1, car2)

        if(car2.health > 0):
            Car.shoot(car2, car1)

        if(car1.ammoLevel <= 0 and car2.ammoLevel <= 0):
            blowUp = randint(0, 1)

            if(blowUp == 1):
                car1.blowUp()
            else:
                car2.blowUp()

main()
