Для вашего лучшего понимания: я пытаюсь создать контроль перекрестка для автомобилей со списком (intersectionList), в котором каждый автомобиль записывает свой адрес, если автомобиль хочет пересечь перекресток.
Если автомобили, находящиеся над дорогой 20 или 23, записывают свой адрес в список, и если их запись имеет индекс 0, им разрешается проезжать. Как только они пересекают перекресток (шт. 10), они удаляют свою запись из списка. Моя проблема сейчас с while l oop. Автомобили делают все, что я хочу, но не меняют свою скорость после того, как их индекс списка был изменен с> = 1 на == 0. Что означает в реальной жизни, что они признают, что их индекс был не 0, остановка, но чем они остановимся навсегда ... так что я думаю, что есть проблема с тем, как l oop.
class Logic:
intersectionList = []
def logic(self, addr, piece):
if piece == 20:
self.intersectionList.append(addr)
while self.intersectionList.index(addr) >= 1: #as long index of list is not 0
self.car.changeSpeed(0, 1000) #stop car
else:
self.car.changeSpeed(300, 1000) #start car
elif piece == 23:
self.intersectionList.append(addr)
while self.intersectionList.index(addr) >= 1:
self.car.changeSpeed(0, 1000) #stop car
else:
self.car.changeSpeed(300, 1000) #start car
elif piece == 10:
if addr in self.intersectionList:
self.intersectionList.remove(addr)
Здесь мы go. Класс Overdrive - это оболочка python для официального пакета ANKI Overdrive SDK, и его слишком долго загружать здесь. ссылка на github: https://github.com/xerodotc/overdrive-python.git
from overdrive import Overdrive
class Logic:
intersectionList = []
def __init__(self, macAddress):
car = Overdrive(macAddress)
def locationChangeCallback(self, addr, location, piece, speed, clockwise):
self.logic(addr, piece)
def logic(self, addr, piece):
if piece == 20:
self.intersectionList.append(addr)
while self.intersectionList.index(addr) >= 1: # as long index of list is not 0
self.car.changeSpeed(0, 1000) # stop car
else:
self.car.changeSpeed(300, 1000) # start car
elif piece == 23:
self.intersectionList.append(addr)
while self.intersectionList.index(addr) >= 1:
self.car.changeSpeed(0, 1000) # stop car
else:
self.car.changeSpeed(300, 1000) # start car
elif piece == 10:
if addr in self.intersectionList:
self.intersectionList.remove(addr)
def startEngine(self):
self.car.setLocationChangeCallback(self.locationChangeCallback)
self.car.changeSpeed(300,1000)
# instances
bmw = Logic("CD:DF:4R:53:34:D3")
bmw.startEngine()
lambo = Logic("CD:DF:4R:53:34:D3")
lambo.startEngine()