Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from time import sleep
- from config import *
- import os
- class Road():
- def __init__(self, length, width):
- self.length = length
- self.width = width
- class Lighter():
- def __init__(self, road, x, r, y, g, time):
- self.road = road
- self.x = x
- self.redTime = r
- self.yelTime = y
- self.greTime = g
- self.time = 0
- self.update_time = time
- self.color = 'green'
- def print_lighter(self): # Отрисовка светофора
- self.update_lighter()
- if self.color == 'red':
- temp = '0'
- elif self.color == 'yellow':
- temp = '1'
- else:
- temp = '2'
- print(' '*self.x, temp, ' TIME:', self.time, sep='')
- def update_lighter(self): # Обновление светофора
- self.time += self.update_time
- if self.color == 'red' and self.time == self.redTime:
- self.last_color = 'red'
- self.color = 'yellow'
- self.time = 0
- elif self.color == 'yellow' and self.time == self.yelTime:
- if self.last_color == 'red':
- self.color = 'green'
- else:
- self.color = 'red'
- self.time = 0
- elif self.color == 'green' and self.time == self.greTime:
- self.last_color = 'green'
- self.color = 'yellow'
- self.time = 0
- class Car():
- def __init__(self, road, pos, velocity, carType):
- self.road = road
- self.p = pos
- self.vel = velocity
- self.x = 0
- self.type = carType
- def move(self): # Движение машины
- self.check_road_lighter()
- if self.x >= self.road.length:
- self.x = self.x - self.road.length
- def print_car(self): # Отрисовка машины и полосы
- for i in range(self.road.length):
- if self.x == i:
- print(self.type, end='')
- else:
- print('_', end='')
- self.print_stat()
- def print_stat(self): # Вывод ID, скорости, координат машины
- print(' ', end='')
- print('ID:', self.p, end=' ')
- print('VEL:', self.vel, end=' ')
- print('CORD:', self.x)
- print()
- def check_road_lighter(self): # Проверка на светофор
- if self.road.lighter.x - self.vel <= self.x < self.road.lighter.x: # Провека
- if self.road.lighter.color == 'green':
- self.x += self.vel
- else:
- self.x += self.road.lighter.x - self.x - 1
- else:
- self.x += self.vel
- def main():
- road = Road(ROAD_LENGTH, ROAD_WIDTH)
- lighter = Lighter(road, (road.length // 2) + 1, RED_TIME, YELLOW_TIME, GREEN_TIME, TIME)
- road.lighter = lighter
- cars = []
- for i in range(road.width):
- cars.append(Car(road, i, 2*(i+1), CAR_TYPES[i%3]))
- data = 'LEN: ' + str(road.length) + ' ' + 'UPDATE_TIME: ' + str(TIME) + ' ' + 'LIGHTER_POS: ' + str(lighter.x)
- data = data.center(road.length)
- while True:
- print(data)
- print()
- lighter.print_lighter()
- for car in cars:
- print()
- car.move()
- car.print_car()
- sleep(TIME)
- os.system('cls||clear')
- main()
Add Comment
Please, Sign In to add comment