From 2297d7c7a919753ae278a62446fff85dbaef4325 Mon Sep 17 00:00:00 2001 From: VladislavOstapov Date: Mon, 6 Feb 2023 19:22:55 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BF=D1=80=D0=B8=D0=BE=D1=80=D0=B8?= =?UTF-8?q?=D1=82=D0=B5=D1=82=D0=B0=20=D0=BD=D0=BE=D1=87=D0=BD=D1=8B=D1=85?= =?UTF-8?q?=20=D0=B1=D0=B0=D1=80=D0=B0=D0=B1=D0=B0=D0=BD=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scheduler.c | 4 ---- utils.c | 16 +++++----------- 2 files changed, 5 insertions(+), 15 deletions(-) diff --git a/scheduler.c b/scheduler.c index 883c3af..76d306b 100644 --- a/scheduler.c +++ b/scheduler.c @@ -292,10 +292,6 @@ void scheduler_main() scheduler_stage = 0; } } else { - // а вот для режима двух роботов все интересно - // для каждого робота нужно получить свой список задач - // и надо еще сделать так, чтобы роботы не столкнулись - switch (scheduler_stage) { case 0: // посылаем робота 1 в жопу линии, если он не в жопе diff --git a/utils.c b/utils.c index 1bea2bd..df4e8ee 100644 --- a/utils.c +++ b/utils.c @@ -282,29 +282,23 @@ short get_operation_priority(short barrel_id) { // если барабан в ночном режиме, то приоритет 1 самому левому, остальным 0 if (barrels[barrel_id].flags.is_night) { - char is_not_one = 0; - char is_with_max_time = 1; + short min_zone = barrels[barrel_id].zone; for (short i = 0; i < BARRELS_COUNT; i++) { if (i == barrel_id) { continue; } - if (barrels[i].flags.is_exist && barrels[i].flags.is_night) { + if (barrels[i].flags.is_exist && barrels[i].flags.is_night && barrels[i].flags.robot == 0 && !barrels[i].flags.is_up) { if (can_move(barrels + i, ROBOT_NONE) >= 0) { - is_not_one = 1; // чем больше у барабана время ожидания тем меньше у него число - if (barrels[i].software_timer < barrels[barrel_id].software_timer) { - is_with_max_time = 0; - break; + if (barrels[i].zone < min_zone) { + min_zone = barrels[i].zone; } } } } - if (is_not_one == 0) { - return 1; - } - return is_with_max_time; + return (min_zone == barrels[barrel_id].zone) ? 1 : 0; } // сделать приоритет на барабан, который больше всего ждет