class CashBooth: def __init__(self): self.total = 0 self.ticketsCurrentlyBeingSold = 0 self.costOfTicketsBeingSold = 0 self.timeLeftWithCustomer = 0 self.timeNeededToBuyTickets = 0 self.costPerTicket = 0.25 self.line = Line() self.avgTransactionTime = 120 self.inProgress = False self.person = Person() def InitializeTransaction(self): if self.line.HasNext(): self.ticketsCurrentlyBeingSold = 150 self.costOfTicketsBeingSold = float(150 * 0.25) self.person = self.line.GetPerson() self.timeNeededToBuyTickets = (150 / 10) + self.avgTransactionTime self.timeLeftWithCustomer = self.timeNeededToBuyTickets self.inProgress = True return True else: return False def GetProgress(self): self.timeLeftWithCustomer -= 1 if self.timeLeftWithCustomer == 0: return True else: return False def FinishTransaction(self): self.total += self.costOfTicketsBeingSold self.inProgress = False self.person.AddTickets(self.ticketsCurrentlyBeingSold) self.line.DecrementLineCount() return self.person def GetTotal(self): return self.total def AddToLine(self, person): self.line.AddPerson(person)
class ExpressBooth: def __init__(self): self.inProgress=False self.total=0 self.ticketsCurrentlyBeingSold=200 self.costOfTicketsBeingSold=50.00 self.timeToBuyTickets=15 self.timeLeftWithCustomer=0 self.line = Line() self.person = Person() def InitializeTransaction(self): if self.line.HasNext(): self.person = self.line.GetPerson() self.timeLeftWithCustomer=self.timeToBuyTickets self.inProgress=True return True else: return False def GetProgress(self): self.timeLeftWithCustomer-=1 if self.timeLeftWithCustomer==0: return True else: return False def FinishTransaction(self): self.total+=50.00 self.inProgress=False self.person.AddTickets(200) self.line.DecrementLineCount() return self.person def GetTotal(self): return self.total def AddToLine(self,person): self.line.AddPerson(person)
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