Advertisement
Guest User

Untitled

a guest
Apr 1st, 2020
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.00 KB | None | 0 0
  1. RIGHT = 1
  2. LEFT = -1
  3. REVERSE_DIRECTION = -6
  4. FORWARD = 1
  5. REVERSE = 0
  6.  
  7. #gears and allowable speeds are as follows:
  8. #zero (reverse) (speed -1 to -10). Max reverse speed of car is -10
  9. #one (speed 0 to 10)
  10. #two (speed 5 to 25)
  11. #three (speed 20 to 40)
  12. #four (speed 40 to 60)
  13. #five (speed 45 to 80). Max speed of car is 80
  14. #gears change automatically, one gear at a time
  15.  
  16. #direction values are similar to numbers on clock face
  17. #0 = 12 = straight on. All other directions = 1-11
  18.  
  19. class Car:
  20. def __init__(self):
  21. self.speed = 0
  22. self.gear = 1
  23. self.direction = 0
  24. self.broken = False #indicates whether car is broken
  25. self.simulation = []
  26. self.simulation_loaded = True
  27. self.commands = []
  28. self.vector = "FORWARD"
  29.  
  30.  
  31.  
  32. def accelerate(self):
  33. if self.broken == True:
  34. print("the car is broken.")
  35. return
  36. else:
  37. print("Accelerating..")
  38. if self.vector == "REVERSE":
  39. self.speed -= 5
  40. elif self.vector == "FORWARD":
  41. self.speed += 5
  42.  
  43. if self.speed > 80:
  44. self.speed = 80
  45. if self.speed < -10:
  46. self.speed = -10
  47.  
  48. self.change_gear(self.gear)
  49. self.display_stats()
  50.  
  51.  
  52. #change gear if necessary (automatic)
  53. #display status
  54.  
  55. def brake(self):
  56. if self.broken == True:
  57. print("the car is broken.")
  58. return
  59. else:
  60. print("Breaking...")
  61. if self.speed < 0:
  62. self.speed += 5
  63. #print ("the care is in reverse")
  64.  
  65. elif self.speed > 0 < 80:
  66. #print ("the car is in a forward gear")
  67. self.speed -5
  68. #print ("breaking..." )
  69. #print (self.speed)
  70.  
  71. self.change_gear(self.gear)
  72.  
  73. ## input gear change
  74. #change gear if necessary (automatic)
  75. #display status
  76.  
  77. def turn_steering_wheel(self, direction_change):
  78. if self.broken == True:
  79. print("the car is broken.")
  80. return
  81. else:
  82.  
  83. if direction_change == "LEFT":
  84. self.direction -=1
  85. if self.direction < -1:
  86. self.direction = -1
  87.  
  88. if direction_change == "RIGHT":
  89. self.direction +=1
  90. if self.direction > 1:
  91. self.direction = 1
  92.  
  93.  
  94.  
  95.  
  96. #check to see if car is in reverse
  97. #modify direction based on direction change and direction #-1 = left, 0 = straight on, 1 = right
  98. #display status
  99.  
  100. def change_gear(self, selected_gear = FORWARD): #selected_gear is either FORWARD or REVERSE
  101. if self.broken == True:
  102. print("the car is broken.")
  103. return
  104.  
  105. else:
  106. if self.speed <= -1:
  107. self.vector = "REVERSE"
  108. print ("the care is in reverse")
  109.  
  110. elif 0 > self.speed < 80:
  111. self.vector = "FORWARD"
  112. print ("the car is in a forward gear")
  113.  
  114. if self.simulation_loaded == True:
  115. if -11 > self.speed < 0:
  116. self.gear = 0 # gear reverse/0
  117.  
  118.  
  119. elif 0 > self.speed <= 10:
  120. self.gear = 1 #gear one
  121. print("changing up")
  122.  
  123. elif 5 > self.speed <= 25:
  124. self.gear = 2 #gear two
  125. print("changing up")
  126.  
  127. elif 20 > self.speed <= 40:
  128. self.gear = 3 #gear three
  129. print("changing up")
  130.  
  131. elif 40 > self.speed <= 60:
  132. print("changing up")
  133. self.gear = 4 #gear four
  134.  
  135. elif 45 > self.speed <= 80:
  136. self.gear = 5 #gear five
  137. print("changing up")
  138.  
  139. #check to see if car is going forward when reverse is selected and vice versa
  140.  
  141. #work out what gear you need to be in based on car’s speed
  142.  
  143. #Loop one gear at a time, either changing up or down, to get to required gear
  144.  
  145. def display_stats(self):
  146. #display car stats
  147. if self.simulation_loaded == True:
  148. print("Speed ="+","+str((self.speed)) + ", Gear ="+str((self.gear))+", Direction ="+ str((self.direction)))
  149.  
  150.  
  151.  
  152. def load_simulation(self, filename):
  153. ##load data from file
  154. self.commands = list()
  155. with open('simulation.txt','r') as command_file:
  156. for line in command_file:
  157. line = line.rstrip()
  158. self.commands.append(line)
  159. #print(self.commands)
  160. self.simulation_loaded = True
  161.  
  162. def run_simulation(self):
  163. #apple loaded data to car simulator line by line
  164. self.load_simulation("simulation.txt")
  165. print("loading Simulation...")
  166. for item in self.commands:
  167. self.display_stats()
  168. #print("change gear")
  169. self.change_gear()
  170.  
  171.  
  172. if item =="ACCELERATE":
  173. #print("accelerate")
  174. self.accelerate()
  175.  
  176.  
  177. if item =="FORWARD":
  178. #print("forward")
  179. self.vector = "FORWARD"
  180.  
  181.  
  182. if item =="REVERSE":
  183. #print("reverse")
  184. self.vector = "REVERSE"
  185.  
  186. if item =="BRAKE":
  187. #print("brake")
  188. self.brake()
  189.  
  190. if item =="LEFT":
  191.  
  192. self.turn_steering_wheel("LEFT")
  193.  
  194. if item =="RIGHT":
  195. self.turn_steering_wheel("RIGHT")
  196.  
  197.  
  198.  
  199.  
  200.  
  201. if __name__ == '__main__':
  202. my_car = Car()
  203. my_car.load_simulation("simulation.txt")
  204. my_car.run_simulation()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement