Похоже, единственными автомобилями, которые вы контролируете, являются автомобили [0], первая машина в списке. когда вы вбиваете sh в здание и _step (), вы устанавливаете для destroy_flag для cars [0] значение True, которое затем уничтожает их, а затем в _reset вы возвращаете значение false. Также, когда вы создаете машину, вы добавляете машины. Вам нужно сбросить автомобили до пустого списка: вы также не обновляете положение автомобиля [0] при создании нового автомобиля, только новый автомобиль в списке. Наряду с тем, что список небоскребов не очищается, небоскребы по-прежнему находятся в том же месте, а также автомобиль [0] в том же месте. Это вызывает вечный сценарий уничтожения / сброса, который, в свою очередь, бесконечно создает машины и небоскребы, а затем заставляет его взламывать ваш мир.
def _reset():
if len(box2world.bodies) == 0:
for building in skyscrapers:
building.destroy_flag = False
for wheel in cars[0].tires:
wheel.destroy_flag = False
cars[0].destroy_flag = False
skyscrapers=[]
cars = []
#or you could keep your old car and just increase the index
# to do this, instead of calling car[0], your may want to call car[carnum]
#before creating your first car you could set the carnum to 0
#just before creating the new car during reset you would do carnum += 1
#another way would be instead of appending your car to a list you could do cars=[Car()]
create_buildings()
create_car()
cars[0].control()