Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

مراجعة - إشارة المرور

جزء من قسم Logic & Flow في رحلة Dart على Coddy — الدرس 62 من 65.

challenge icon

التحدي

سهل

أنشئ نظامًا شاملاً لإدارة إشارات المرور يوضح إتقانك لـ enums و switch statements. مهمتك هي بناء نظام يمكنه التعامل مع إشارات مرور متعددة وتقديم الإجراءات المناسبة للسائقين.

  1. قم بتعريف enum يسمى TrafficLight بثلاث قيم: red، و yellow، و green
  2. أنشئ دالة تسمى getDriverAction تأخذ معاملًا من نوع TrafficLight وتعيد سلسلة نصية للإجراء المناسب باستخدام switch statement:
    • بالنسبة لـ TrafficLight.red: أعد "Stop"
    • بالنسبة لـ TrafficLight.yellow: أعد "Caution"
    • بالنسبة لـ TrafficLight.green: أعد "Go"
  3. أنشئ دالة تسمى getWaitTime تأخذ معاملًا من نوع TrafficLight وتعيد وقت الانتظار بالثواني باستخدام switch statement:
    • بالنسبة لـ TrafficLight.red: أعد 30
    • بالنسبة لـ TrafficLight.yellow: أعد 3
    • بالنسبة لـ TrafficLight.green: أعد 25
  4. أنشئ ثلاثة متغيرات لتمثيل تقاطعات مختلفة:
    • intersection1 من نوع TrafficLight مضبوط على TrafficLight.red
    • intersection2 من نوع TrafficLight مضبوط على TrafficLight.yellow
    • intersection3 من نوع TrafficLight مضبوط على TrafficLight.green
  5. لكل تقاطع، اطبع الحالة بهذا التنسيق تمامًا:
    • Intersection 1: Red light - Stop - Wait time: 30 seconds
    • Intersection 2: Yellow light - Caution - Wait time: 3 seconds
    • Intersection 3: Green light - Go - Wait time: 25 seconds
  6. قم بمحاكاة تغيير تسلسل إشارة المرور عن طريق تحديث intersection1 إلى TrafficLight.green
  7. اطبع الحالة المحدثة: Updated Intersection 1: Green light - Go - Wait time: 25 seconds
  8. أنشئ ملخصًا عن طريق طباعة: Traffic system managing 3 intersections successfully

يجب أن يوضح برنامجك قوة الجمع بين enums و switch statements لإنشاء نظام إدارة مرور آمن النوع (type-safe) وسهل القراءة. يجب أن تتعامل switch statements مع جميع قيم enum وتعيد السلاسل النصية والأرقام المحددة أعلاه بالضبط.

جرّب بنفسك

import 'dart:io';

// TODO: قم بتعريف enum الخاص بـ TrafficLight هنا

// TODO: قم بإنشاء دالة getDriverAction هنا

// TODO: قم بإنشاء دالة getWaitTime هنا

void main() {
  // TODO: اكتب الكود الخاص بك أدناه
  
  // إنشاء متغيرات التقاطع
  
  // طباعة الحالة لكل تقاطع
  
  // تحديث intersection1 وطباعة الحالة المحدثة
  
  // طباعة الملخص
}

جميع دروس Logic & Flow