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)
Пример #3
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