Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- RIGHT = 1
- LEFT = -1
- REVERSE_DIRECTION = -6
- FORWARD = 1
- REVERSE = 0
- #gears and allowable speeds are as follows:
- #zero (reverse) (speed -1 to -10). Max reverse speed of car is -10
- #one (speed 0 to 10)
- #two (speed 5 to 25)
- #three (speed 20 to 40)
- #four (speed 40 to 60)
- #five (speed 45 to 80). Max speed of car is 80
- #gears change automatically, one gear at a time
- #direction values are similar to numbers on clock face
- #0 = 12 = straight on. All other directions = 1-11
- class Car:
- def __init__(self):
- self.speed = 0
- self.gear = 1
- self.direction = 0
- self.broken = False #indicates whether car is broken
- self.simulation = []
- self.simulation_loaded = True
- self.commands = []
- self.vector = "FORWARD"
- def accelerate(self):
- if self.broken == True:
- print("the car is broken.")
- return
- else:
- print("Accelerating..")
- if self.vector == "REVERSE":
- self.speed -= 5
- elif self.vector == "FORWARD":
- self.speed += 5
- if self.speed > 80:
- self.speed = 80
- if self.speed < -10:
- self.speed = -10
- self.change_gear(self.gear)
- self.display_stats()
- #change gear if necessary (automatic)
- #display status
- def brake(self):
- if self.broken == True:
- print("the car is broken.")
- return
- else:
- print("Breaking...")
- if self.speed < 0:
- self.speed += 5
- #print ("the care is in reverse")
- elif self.speed > 0 < 80:
- #print ("the car is in a forward gear")
- self.speed -5
- #print ("breaking..." )
- #print (self.speed)
- self.change_gear(self.gear)
- ## input gear change
- #change gear if necessary (automatic)
- #display status
- def turn_steering_wheel(self, direction_change):
- if self.broken == True:
- print("the car is broken.")
- return
- else:
- if direction_change == "LEFT":
- self.direction -=1
- if self.direction < -1:
- self.direction = -1
- if direction_change == "RIGHT":
- self.direction +=1
- if self.direction > 1:
- self.direction = 1
- #check to see if car is in reverse
- #modify direction based on direction change and direction #-1 = left, 0 = straight on, 1 = right
- #display status
- def change_gear(self, selected_gear = FORWARD): #selected_gear is either FORWARD or REVERSE
- if self.broken == True:
- print("the car is broken.")
- return
- else:
- if self.speed <= -1:
- self.vector = "REVERSE"
- print ("the care is in reverse")
- elif 0 > self.speed < 80:
- self.vector = "FORWARD"
- print ("the car is in a forward gear")
- if self.simulation_loaded == True:
- if -11 > self.speed < 0:
- self.gear = 0 # gear reverse/0
- elif 0 > self.speed <= 10:
- self.gear = 1 #gear one
- print("changing up")
- elif 5 > self.speed <= 25:
- self.gear = 2 #gear two
- print("changing up")
- elif 20 > self.speed <= 40:
- self.gear = 3 #gear three
- print("changing up")
- elif 40 > self.speed <= 60:
- print("changing up")
- self.gear = 4 #gear four
- elif 45 > self.speed <= 80:
- self.gear = 5 #gear five
- print("changing up")
- #check to see if car is going forward when reverse is selected and vice versa
- #work out what gear you need to be in based on carβs speed
- #Loop one gear at a time, either changing up or down, to get to required gear
- def display_stats(self):
- #display car stats
- if self.simulation_loaded == True:
- print("Speed ="+","+str((self.speed)) + ", Gear ="+str((self.gear))+", Direction ="+ str((self.direction)))
- def load_simulation(self, filename):
- ##load data from file
- self.commands = list()
- with open('simulation.txt','r') as command_file:
- for line in command_file:
- line = line.rstrip()
- self.commands.append(line)
- #print(self.commands)
- self.simulation_loaded = True
- def run_simulation(self):
- #apple loaded data to car simulator line by line
- self.load_simulation("simulation.txt")
- print("loading Simulation...")
- for item in self.commands:
- self.display_stats()
- #print("change gear")
- self.change_gear()
- if item =="ACCELERATE":
- #print("accelerate")
- self.accelerate()
- if item =="FORWARD":
- #print("forward")
- self.vector = "FORWARD"
- if item =="REVERSE":
- #print("reverse")
- self.vector = "REVERSE"
- if item =="BRAKE":
- #print("brake")
- self.brake()
- if item =="LEFT":
- self.turn_steering_wheel("LEFT")
- if item =="RIGHT":
- self.turn_steering_wheel("RIGHT")
- if __name__ == '__main__':
- my_car = Car()
- my_car.load_simulation("simulation.txt")
- my_car.run_simulation()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement