Exemplo n.º 1
0
class MerryGoRound:
    def __init__(self, capacity):
        self.ticketCost = 8
        self.capacity = capacity
        self.totalRuntime = 240
        self.numberOfOperators = 1
        self.line = Line()
        self.currentRuntime = 0
        self.setupTime = 0
        self.running = False
        self.numberOfPeopleGettingOnRide = 0
        self.mgr = []
        self.totalTicketsReceived = 0
        self.postRide = False
        self.postRideTime = 30

    def StartSetup(self):
        if self.line.GetNumberOfPeople() >= self.capacity:
            self.numberOfPeopleGettingOnRide = self.capacity
            self.setupTime = 120
        else:
            self.numberOfPeopleGettingOnRide = self.line.GetNumberOfPeople()
            self.setupTime = 120
        self.running = True

    def CheckIfReady(self):
        self.setupTime -= 1
        if self.setupTime == 0:
            self.mgr = []
            for i in range(0, self.numberOfPeopleGettingOnRide):
                person = self.line.GetPerson()
                self.line.DecrementLineCount()
                person.UseTickets(8)
                self.totalTicketsReceived += 8
                self.mgr.append(person)
            return True
        else:
            return False

    def CheckIfDone(self):
        self.currentRuntime += 1
        if self.currentRuntime == self.totalRuntime:
            self.running = False
            self.currentRuntime = 0
            self.postRide = True
            return True
        else:
            return False

    def UpdatePostRiders(self):  #riders gather their stuff. 30 seconds
        self.postRideTime -= 1
        if self.postRideTime == 0:
            self.postRideTime = 30
            self.postRide = False
            return True
        else:
            return False

    def GetCurrentWaitTime(self):
        numberOfRides = 0
        if int(self.line.GetNumberOfPeople() /
               self.capacity) == self.line.GetNumberOfPeople() / self.capacity:
            numberOfRides = int(self.line.GetNumberOfPeople() / self.capacity)
        else:
            numberOfRides = int(
                self.line.GetNumberOfPeople() / self.capacity) + 1
        merryGoRoundWaitTime = (numberOfRides * 360)
        if self.running:
            merryGoRoundWaitTime += (240 - self.currentRuntime)
        else:
            merryGoRoundWaitTime += 240 + self.setupTime
        return merryGoRoundWaitTime
class RollerCoaster:
    def __init__(self):
        self.ticketCost = 16
        self.trainCarLimit = 60
        self.totalRuntime = 180
        self.numberOfOperators = 1
        self.line = Line()
        self.currentRuntime = 0
        self.setupTime = 0
        self.running = False
        self.numberOfPeopleGettingOnRide = 0
        self.car = []
        self.totalTicketsReceived = 0
        self.postRide = False
        self.postRideTime = 30

    def StartSetup(self):
        if self.line.GetNumberOfPeople() >= 60:
            self.numberOfPeopleGettingOnRide = 60
            self.setupTime = 60
        else:
            self.numberOfPeopleGettingOnRide = self.line.GetNumberOfPeople()
            self.setupTime = 60
        self.running = True

    def CheckIfReady(self):
        self.setupTime -= 1
        if self.setupTime == 0:
            self.car = []
            for i in range(0, self.numberOfPeopleGettingOnRide):
                person = self.line.GetPerson()
                self.line.DecrementLineCount()
                person.UseTickets(16)
                self.totalTicketsReceived += 16
                self.car.append(person)
            return True
        else:
            return False

    def CheckIfDone(self):
        self.currentRuntime += 1
        if self.currentRuntime == self.totalRuntime:
            self.running = False
            self.currentRuntime = 0
            self.postRide = True
            return True
        else:
            return False

    def UpdatePostRiders(self):  #riders gather their stuff. 30 seconds
        self.postRideTime -= 1
        if self.postRideTime == 0:
            self.postRideTime = 30
            self.postRide = False
            return True
        else:
            return False

    def GetCurrentWaitTime(self):
        numberOfCars = 0
        if int(self.line.GetNumberOfPeople() / self.trainCarLimit
               ) == self.line.GetNumberOfPeople() / self.trainCarLimit:
            numberOfCars = int(self.line.GetNumberOfPeople() /
                               self.trainCarLimit)
        else:
            numberOfCars = int(
                self.line.GetNumberOfPeople() / self.trainCarLimit) + 1
        rollerCoasterWaitTime = (numberOfCars * 240)
        if self.running:
            rollerCoasterWaitTime += (180 - self.currentRuntime)
        else:
            rollerCoasterWaitTime += 180 + self.setupTime
        return rollerCoasterWaitTime