jimkilled

school

Oct 13th, 2020 (edited)
2,036
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.51 KB | None | 0 0
  1. from time import sleep
  2. from config import *
  3. import os
  4.  
  5.  
  6. class Road():
  7.     def __init__(self, length, width):
  8.         self.length = length
  9.         self.width = width
  10.  
  11.  
  12. class Lighter():
  13.     def __init__(self, road, x, r, y, g, time):
  14.         self.road = road
  15.         self.x = x
  16.         self.redTime = r
  17.         self.yelTime = y
  18.         self.greTime = g
  19.         self.time = 0
  20.         self.update_time = time
  21.         self.color = 'green'
  22.  
  23.     def print_lighter(self):                    # Отрисовка светофора
  24.         self.update_lighter()
  25.         if self.color == 'red':
  26.             temp = '0'
  27.         elif self.color == 'yellow':
  28.             temp = '1'
  29.         else:
  30.             temp = '2'
  31.         print(' '*self.x, temp, '      TIME:', self.time, sep='')
  32.  
  33.     def update_lighter(self):                   # Обновление светофора
  34.         self.time += self.update_time
  35.         if self.color == 'red' and self.time == self.redTime:
  36.             self.last_color = 'red'
  37.             self.color = 'yellow'
  38.             self.time = 0
  39.  
  40.         elif self.color == 'yellow' and self.time == self.yelTime:
  41.             if self.last_color == 'red':
  42.                 self.color = 'green'
  43.             else:
  44.                 self.color = 'red'
  45.             self.time = 0
  46.  
  47.         elif self.color == 'green' and self.time == self.greTime:
  48.             self.last_color = 'green'
  49.             self.color = 'yellow'
  50.             self.time = 0
  51.  
  52.  
  53. class Car():
  54.     def __init__(self, road, pos, velocity, carType):
  55.         self.road = road
  56.         self.p = pos
  57.         self.vel = velocity
  58.         self.x = 0
  59.         self.type = carType
  60.  
  61.     def move(self):                             # Движение машины
  62.         self.check_road_lighter()
  63.         if self.x >= self.road.length:
  64.             self.x = self.x - self.road.length
  65.  
  66.     def print_car(self):                        # Отрисовка машины и полосы
  67.         for i in range(self.road.length):
  68.             if self.x == i:
  69.                 print(self.type, end='')
  70.             else:
  71.                 print('_', end='')
  72.         self.print_stat()
  73.  
  74.     def print_stat(self):                        # Вывод ID, скорости, координат машины
  75.         print('    ', end='')
  76.         print('ID:', self.p, end='  ')
  77.         print('VEL:', self.vel, end='  ')
  78.         print('CORD:', self.x)
  79.         print()
  80.  
  81.     def check_road_lighter(self):                # Проверка на светофор
  82.         if self.road.lighter.x - self.vel <= self.x < self.road.lighter.x:      # Провека
  83.             if self.road.lighter.color == 'green':
  84.                 self.x += self.vel
  85.             else:
  86.                 self.x += self.road.lighter.x - self.x - 1
  87.         else:
  88.             self.x += self.vel
  89.  
  90.  
  91. def main():
  92.     road = Road(ROAD_LENGTH, ROAD_WIDTH)
  93.     lighter = Lighter(road, (road.length // 2) + 1, RED_TIME, YELLOW_TIME, GREEN_TIME, TIME)
  94.     road.lighter = lighter
  95.     cars = []
  96.     for i in range(road.width):
  97.         cars.append(Car(road, i, 2*(i+1), CAR_TYPES[i%3]))
  98.  
  99.     data = 'LEN: ' + str(road.length) +  '    ' + 'UPDATE_TIME: ' + str(TIME) + '    ' + 'LIGHTER_POS: ' + str(lighter.x)
  100.     data = data.center(road.length)
  101.  
  102.     while True:
  103.         print(data)
  104.         print()
  105.         lighter.print_lighter()
  106.         for car in cars:
  107.             print()
  108.             car.move()
  109.             car.print_car()
  110.  
  111.         sleep(TIME)
  112.         os.system('cls||clear')
  113.  
  114.  
  115. main()
Add Comment
Please, Sign In to add comment