ইভেন্টগুলি#

ভূমিকা#

ইভেন্ট আপনাকে ফাংশনগুলো সমান্তরালভাবে চালানোর সুযোগ দেয়। ফাংশনগুলোকে ক্রমানুসারে কল করার পরিবর্তে, আপনি একটি ইভেন্টে একাধিক ফাংশন রেজিস্টার করে সেগুলোকে একসাথে ট্রিগার করতে পারেন। প্রতিটি রেজিস্টার করা ফাংশন তার নিজস্ব থ্রেডে চলে, যা আপনার রোবটকে একই সাথে একাধিক কাজ করতে সক্ষম করে—যেমন গাড়ি চালানোর সময় স্ক্রিনে মান প্রদর্শন করা।

একটি ইভেন্ট তৈরি ও ব্যবহার করার জন্য, ক্রমানুসারে এই ধাপগুলো অনুসরণ করুন:

  1. Event দিয়ে ইভেন্টটি তৈরি করুন।

  2. ফাংশনটিকে আর্গুমেন্ট হিসেবে দিয়ে Event অবজেক্ট কল করে event সম্প্রচারিত হলে ট্রিগার করার জন্য একটি ফাংশন নিবন্ধন করুন।

  3. Broadcast an Event:

    • broadcast – একটি ইভেন্ট অবজেক্টে নিবন্ধিত সমস্ত ফাংশনকে একযোগে চালানোর জন্য ট্রিগার করে।

    • broadcast_and_wait – একটি ইভেন্ট অবজেক্টে নিবন্ধিত সমস্ত ফাংশন ট্রিগার করে এবং চালিয়ে যাওয়ার আগে সেগুলি শেষ হওয়ার জন্য অপেক্ষা করে।

একটি ইভেন্ট তৈরি করুন#

Event একটি ইভেন্ট অবজেক্ট তৈরি করে যা পৃথক থ্রেডে ফাংশন নির্বাহ পরিচালনা করে।

Usage:
Event()

প্যারামিটার

বর্ণনা

এই কনস্ট্রাক্টরের কোনো প্যারামিটার নেই।

# Blink LEDs while moving forward
# Create move_event as an Event object
move_event = Event()

def blink_leds():
    while True:
        robot.led.on(ALL_LEDS, RED)
        wait(0.5, SECONDS)
        robot.led.on(ALL_LEDS, BLACK)
        wait(0.5, SECONDS)

move_event(blink_leds)
move_event.broadcast()
robot.move_at(0)

একটি ইভেন্টে ফাংশন নিবন্ধন করুন#

যখন আপনি কোনো ইভেন্টে একটি ফাংশন রেজিস্টার করেন, তখন ইভেন্টটি ব্রডকাস্ট হলে সেটি একটি আলাদা থ্রেডে এক্সিকিউট হবে।

Usage:
event(callback, args)

প্যারামিটার

বর্ণনা

event

পূর্বে তৈরি করা ইভেন্ট অবজেক্টটির নাম।

callback

ইভেন্টটি সম্প্রচারিত হলে কার্যকর করার জন্য পূর্বে সংজ্ঞায়িত একটি ফাংশন।

args

ঐচ্ছিক। কলব্যাক ফাংশনে পাঠানোর জন্য আর্গুমেন্টের একটি tuple।

# Blink LEDs while moving forward and turning
move_event = Event()

def blink_leds():
    while True:
        robot.led.on(ALL_LEDS, RED)
        wait(0.5, SECONDS)
        robot.led.on(ALL_LEDS, BLACK)
        wait(0.5, SECONDS)

def turning():
    robot.turn(RIGHT)

# Register multiple functions to the Event object
move_event(blink_leds)
move_event(turning)

move_event.broadcast()

# Move in a specified direction
move_event = Event()

def move_distance(movement_angle):
    robot.move_for(50, movement_angle)

# Change the parameter to modify how the robot moves
move_event(move_distance, (180,))
move_event.broadcast()

একটি ইভেন্ট সম্প্রচার করুন#

broadcast#

broadcast একটি ইভেন্ট ট্রিগার করে, যা সমস্ত নিবন্ধিত ফাংশনকে পৃথক থ্রেডে চালু করে। এই পদ্ধতিটি পরবর্তী কোনো ফাংশনের নির্বাহ থামায় না।

Usage:
event.broadcast()

প্যারামিটার

বর্ণনা

event

পূর্বে তৈরি করা ইভেন্ট অবজেক্টটির নাম।

# Blink LEDs while moving forward and turning
move_event = Event()

def blink_leds():
    while True:
        robot.led.on(ALL_LEDS, RED)
        wait(0.5, SECONDS)
        robot.led.on(ALL_LEDS, BLACK)
        wait(0.5, SECONDS)


move_event(blink_leds)

# Trigger the move_event Event
move_event.broadcast()
robot.move_at(0)

broadcast_and_wait#

broadcast_and_wait একটি ইভেন্ট শুরু করে, কিন্তু পরবর্তী ফাংশনগুলিতে যাওয়ার আগে সমস্ত নিবন্ধিত ফাংশন শেষ হওয়ার জন্য অপেক্ষা করে।

Usage:
event.broadcast_and_wait()

প্যারামিটার

বর্ণনা

event

পূর্বে তৈরি করা ইভেন্ট অবজেক্টটির নাম।

# Move after the screen is pressed
move_event = Event()

def move_and_turn():
    robot.move_for(50, 0)
    robot.turn_for(RIGHT, 90)

move_event(move_and_turn)

while True:
    if robot.screen.pressing():
        move_event.broadcast_and_wait()
        break
robot.screen.print("Movement done.")