رفتن به محتوا

بلوک‌ها و اسکریپت‌ها

بلوک‌ها و اسکریپت‌ها در Scratch: راهنمای کامل

Section titled “بلوک‌ها و اسکریپت‌ها در Scratch: راهنمای کامل”

بلوک‌ها و اسکریپت‌ها قلب برنامه‌نویسی در Scratch هستند. این راهنما شما را با تمام جنبه‌های این ابزارهای قدرتمند آشنا می‌کند.

بلوک‌ها واحدهای اساسی برنامه‌نویسی در Scratch هستند که مانند قطعات پازل به هم متصل می‌شوند تا دستورات و منطق برنامه را تشکیل دهند.

انواع بلوک‌ها بر اساس شکل

Section titled “انواع بلوک‌ها بر اساس شکل”

۱. بلوک‌های کلاهی (Hat Blocks) 🎩

Section titled “۱. بلوک‌های کلاهی (Hat Blocks) 🎩”

ویژگی‌ها:

  • شروع‌کننده اسکریپت‌ها
  • شکل گرد در بالا
  • فقط در ابتدای اسکریپت قرار می‌گیرند
  • واکنش به رویدادها

مثال‌های مهم:

وقتی پرچم سبز کلیک شد
→ شروع اصلی برنامه
وقتی کلید [space] فشرده شد
→ واکنش به ورودی کاربر
وقتی این اسپرایت کلیک شد
→ تعامل مستقیم
وقتی پیام [start] دریافت شد
→ ارتباط بین اسپرایت‌ها

۲. بلوک‌های انباشتی (Stack Blocks) 📚

Section titled “۲. بلوک‌های انباشتی (Stack Blocks) 📚”

ویژگی‌ها:

  • دستورات اصلی برنامه
  • شکل مستطیل با فرورفتگی
  • به ترتیب از بالا به پایین اجرا می‌شوند
  • قابل اتصال به یکدیگر

دسته‌بندی عملکردی:

حرکت (Motion):

10 قدم حرکت کن
→ حرکت به جلو
15 درجه راست بچرخ
→ تغییر جهت
به x: 100 y: 50 برو
→ حرکت مستقیم
به سمت mouse-pointer برو
→ حرکت هدفمند

ظاهر (Looks):

"سلام!" بگو
→ نمایش متن
به costume cat-b تغییر بده
→ تغییر ظاهر
اندازه را 10 تغییر بده
→ تغییر سایز
جلوه color را 25 تغییر بده
→ تغییر رنگ

صدا (Sound):

صدای meow پخش کن
→ پخش فوری
صدای meow پخش کن و منتظر بمان
→ پخش کامل
صدا را متوقف کن
→ قطع همه صداها

۳. بلوک‌های C شکل (C Blocks) 🔄

Section titled “۳. بلوک‌های C شکل (C Blocks) 🔄”

ویژگی‌ها:

  • حاوی بلوک‌های دیگر
  • شکل مانند حرف C
  • کنترل جریان برنامه
  • امکان تودرتو بودن

انواع مهم:

حلقه‌ها:

همیشه
[بلوک‌های داخلی]
→ تکرار بی‌نهایت
10 بار تکرار کن
[بلوک‌های داخلی]
→ تکرار معین
تا <touching edge?>
[بلوک‌های داخلی]
→ تکرار شرطی

شرط‌ها:

اگر <key space pressed?>
[بلوک‌های داخلی]
→ شرط ساده
اگر <touching Sprite1?>
[بلوک‌های اول]
وگرنه
[بلوک‌های دوم]
→ شرط کامل

۴. بلوک‌های گزارش‌گر (Reporter Blocks) 📊

Section titled “۴. بلوک‌های گزارش‌گر (Reporter Blocks) 📊”

ویژگی‌ها:

  • بازگشت مقدار
  • شکل بیضی یا مستطیل گرد
  • در داخل بلوک‌های دیگر قرار می‌گیرند
  • ارائه اطلاعات

انواع اطلاعات:

موقعیت و حرکت:

x position → مختصات افقی
y position → مختصات عمودی
direction → جهت حرکت
size → اندازه اسپرایت

متغیرها و لیست‌ها:

(امتیاز) → مقدار متغیر
item 1 of [لیست] → عنصر لیست
length of [لیست] → طول لیست

محاسبات:

(10) + (5) → جمع
(20) - (8) → تفریق
(3) * (4) → ضرب
(15) / (3) → تقسیم
pick random 1 to 10 → عدد تصادفی

۵. بلوک‌های بولی (Boolean Blocks) ✅

Section titled “۵. بلوک‌های بولی (Boolean Blocks) ✅”

ویژگی‌ها:

  • بازگشت true یا false
  • شکل شش‌ضلعی
  • در شرط‌ها استفاده می‌شوند
  • ترکیب‌پذیر با عملگرهای منطقی

انواع شرایط:

تشخیص برخورد:

<touching Sprite1?> → برخورد با اسپرایت
<touching edge?> → برخورد با لبه
<touching color [#ff0000]?> → برخورد با رنگ

ورودی کاربر:

<key space pressed?> → فشردن کلید
<mouse down?> → کلیک ماوس

مقایسه:

<(امتیاز) > (100)> → بزرگتر از
<(x position) = (0)> → برابر با
<(سرعت) < (50)> → کوچکتر از

آبی تیره - Motion (حرکت)

  • کنترل موقعیت و جهت
  • حرکت و چرخش
  • تنظیمات فیزیکی

بنفش - Looks (ظاهر)

  • تغییر costume و backdrop
  • جلوه‌های بصری
  • نمایش متن و فکر

صورتی - Sound (صدا)

  • پخش و کنترل صدا
  • تنظیمات صوتی
  • ضبط صدا

نارنجی - Events (رویدادها)

  • شروع‌کننده‌های اسکریپت
  • واکنش به ورودی
  • ارسال و دریافت پیام

زرد - Control (کنترل)

  • حلقه‌ها و شرط‌ها
  • توقف و شروع
  • کلون‌سازی

آبی روشن - Sensing (حسگری)

  • تشخیص برخورد
  • ورودی کاربر
  • اطلاعات محیطی

سبز - Operators (عملگرها)

  • محاسبات ریاضی
  • عملیات منطقی
  • کار با متن

نارنجی تیره - Variables (متغیرها)

  • ایجاد و مدیریت متغیرها
  • کار با لیست‌ها
  • ذخیره‌سازی داده

قرمز تیره - My Blocks (بلوک‌های من)

  • تعریف توابع سفارشی
  • پارامترها و بازگشت
  • کد قابل استفاده مجدد

اسکریپت مجموعه‌ای از بلوک‌های متصل است که یک برنامه یا بخشی از برنامه را تشکیل می‌دهد.

[بلوک کلاهی] ← نقطه شروع
[بلوک انباشتی ۱] ← دستور اول
[بلوک انباشتی ۲] ← دستور دوم
[بلوک C شکل] ← کنترل جریان
[بلوک‌های داخلی] ← دستورات تکراری/شرطی
[بلوک انباشتی ۳] ← ادامه برنامه
وقتی پرچم سبز کلیک شد
به x: 0 y: 0 برو
همیشه
اگر <key right arrow pressed?>
x را 10 تغییر بده
پایان
اگر <key left arrow pressed?>
x را -10 تغییر بده
پایان
اگر <key up arrow pressed?>
y را 10 تغییر بده
پایان
اگر <key down arrow pressed?>
y را -10 تغییر بده
پایان
پایان

۱. الگوی راه‌اندازی (Setup Pattern)

Section titled “۱. الگوی راه‌اندازی (Setup Pattern)”
وقتی پرچم سبز کلیک شد
// تنظیمات اولیه
به x: 0 y: 0 برو
به costume cat-a تغییر بده
اندازه را 100% قرار بده
امتیاز را 0 قرار بده
نمایش

۲. الگوی حلقه اصلی (Main Loop Pattern)

Section titled “۲. الگوی حلقه اصلی (Main Loop Pattern)”
وقتی پرچم سبز کلیک شد
همیشه
// منطق اصلی بازی
[بررسی ورودی]
[به‌روزرسانی موقعیت]
[بررسی برخوردها]
[به‌روزرسانی نمایش]
پایان

۳. الگوی واکنش به رویداد (Event Response Pattern)

Section titled “۳. الگوی واکنش به رویداد (Event Response Pattern)”
وقتی کلید space فشرده شد
// واکنش فوری
صدای jump پخش کن
y را 50 تغییر بده
1 ثانیه صبر کن
y را -50 تغییر بده

۴. الگوی انیمیشن (Animation Pattern)

Section titled “۴. الگوی انیمیشن (Animation Pattern)”
وقتی پرچم سبز کلیک شد
همیشه
به costume cat-a تغییر بده
0.5 ثانیه صبر کن
به costume cat-b تغییر بده
0.5 ثانیه صبر کن
پایان

۵. الگوی حرکت خودکار (Auto Movement Pattern)

Section titled “۵. الگوی حرکت خودکار (Auto Movement Pattern)”
وقتی پرچم سبز کلیک شد
همیشه
10 قدم حرکت کن
اگر <touching edge?>
180 درجه بچرخ
پایان
پایان

تفکیک وظایف:

// اسکریپت ۱: راه‌اندازی
وقتی پرچم سبز کلیک شد
[تنظیمات اولیه]
// اسکریپت ۲: حرکت
وقتی پرچم سبز کلیک شد
همیشه
[منطق حرکت]
پایان
// اسکریپت ۳: انیمیشن
وقتی پرچم سبز کلیک شد
همیشه
[تغییر costume]
پایان

بهتر:

سرعت را 10 قرار بده
همیشه
(سرعت) قدم حرکت کن
پایان

بدتر:

همیشه
10 قدم حرکت کن
پایان

استفاده از My Blocks:

// تعریف بلوک سفارشی
تعریف حرکت به سمت (x) (y)
تا <(distance to x: (x) y: (y)) < (5)>
به سمت x: (x) y: (y) برو
2 قدم حرکت کن
پایان
// استفاده
حرکت به سمت (100) (50)
حرکت به سمت (-50) (100)

۱. ارتباط بین اسپرایت‌ها

Section titled “۱. ارتباط بین اسپرایت‌ها”

استفاده از پیام‌ها (Broadcasting)

Section titled “استفاده از پیام‌ها (Broadcasting)”
// اسپرایت بازیکن
وقتی پرچم سبز کلیک شد
همیشه
اگر <touching Enemy?>
پیام [game over] ارسال کن
پایان
پایان
// اسپرایت دشمن
وقتی پیام [game over] دریافت شد
همه را متوقف کن

استفاده از متغیرهای سراسری

Section titled “استفاده از متغیرهای سراسری”
// اسپرایت ۱
وقتی پرچم سبز کلیک شد
امتیاز را 10 تغییر بده
// اسپرایت ۲
وقتی پرچم سبز کلیک شد
همیشه
اگر <(امتیاز) > (100)>
"برنده شدی!" بگو
پایان
پایان

پیاده‌سازی با متغیر حالت

Section titled “پیاده‌سازی با متغیر حالت”
وقتی پرچم سبز کلیک شد
حالت را "منتظر" قرار بده
همیشه
اگر <(حالت) = ("منتظر")>
// منطق حالت منتظر
اگر <key space pressed?>
حالت را "در حال بازی" قرار بده
پایان
پایان
اگر <(حالت) = ("در حال بازی")>
// منطق بازی
اگر <touching Enemy?>
حالت را "تمام شده" قرار بده
پایان
پایان
اگر <(حالت) = ("تمام شده")>
// منطق پایان بازی
"بازی تمام شد!" بگو
همه را متوقف کن
پایان
پایان

بهتر:

وقتی پرچم سبز کلیک شد
فاصله_مرز را 50 قرار بده
همیشه
10 قدم حرکت کن
اگر <(x position) > (فاصله_مرز)>
180 درجه بچرخ
پایان
پایان

بدتر:

همیشه
10 قدم حرکت کن
اگر <(x position) > ((480) / (2))>
180 درجه بچرخ
پایان
پایان
همیشه
// کد پیچیده
0.1 ثانیه صبر کن // کاهش بار CPU
پایان
// اسپرایت اصلی
وقتی پرچم سبز کلیک شد
10 بار تکرار کن
کلون خود را ایجاد کن
1 ثانیه صبر کن
پایان
// منطق کلون
وقتی به عنوان کلون شروع شدم
به موقعیت تصادفی برو
همیشه
y را -5 تغییر بده
اگر <(y position) < (-180)>
این کلون را حذف کن
پایان
پایان

محدود کردن تعداد کلون‌ها

Section titled “محدود کردن تعداد کلون‌ها”
وقتی پرچم سبز کلیک شد
تعداد_کلون را 0 قرار بده
همیشه
اگر <(تعداد_کلون) < (10)>
کلون خود را ایجاد کن
تعداد_کلون را 1 تغییر بده
پایان
پایان
وقتی به عنوان کلون شروع شدم
// منطق کلون
تعداد_کلون را -1 تغییر بده
این کلون را حذف کن

۱. استفاده از بلوک “say”

Section titled “۱. استفاده از بلوک “say””
همیشه
x را 10 تغییر بده
(x position) بگو // نمایش مقدار برای بررسی
پایان
// تست حرکت
وقتی کلید t فشرده شد
10 قدم حرکت کن
"حرکت انجام شد" بگو
// تست برخورد
وقتی کلید c فشرده شد
اگر <touching Sprite1?>
"برخورد تشخیص داده شد" بگو
وگرنه
"برخورد نیست" بگو
پایان

۳. استفاده از متغیرهای debug

Section titled “۳. استفاده از متغیرهای debug”
وقتی پرچم سبز کلیک شد
debug_mode را true قرار بده
همیشه
اگر <(debug_mode) = (true)>
(x position) بگو
امتیاز را نمایش بده
پایان
پایان

مشکلات رایج و راه‌حل‌ها

Section titled “مشکلات رایج و راه‌حل‌ها”

۱. اسکریپت اجرا نمی‌شود

Section titled “۱. اسکریپت اجرا نمی‌شود”

بررسی‌های لازم:

  • آیا بلوک کلاهی وجود دارد؟
  • آیا اسپرایت مخفی نیست؟
  • آیا اسکریپت متوقف نشده؟

علائم:

  • برنامه متوقف می‌شود
  • واکنش نمی‌دهد

راه‌حل:

// اضافه کردن تأخیر
همیشه
// کد شما
0.1 ثانیه صبر کن
پایان

بررسی‌ها:

  • آیا متغیر تعریف شده؟
  • آیا دامنه متغیر درست است؟
  • آیا منطق شرط صحیح است؟

۱. تقسیم‌بندی اسکریپت‌ها

Section titled “۱. تقسیم‌بندی اسکریپت‌ها”
// گروه ۱: راه‌اندازی
وقتی پرچم سبز کلیک شد
[تنظیمات اولیه]
// گروه ۲: ورودی کاربر
وقتی کلید [هر کلید] فشرده شد
[واکنش به ورودی]
// گروه ۳: منطق بازی
وقتی پرچم سبز کلیک شد
همیشه
[منطق اصلی]
پایان
// گروه ۴: انیمیشن
وقتی پرچم سبز کلیک شد
همیشه
[تغییرات بصری]
پایان
// این اسکریپت کنترل حرکت بازیکن را انجام می‌دهد
وقتی پرچم سبز کلیک شد
// تنظیم موقعیت اولیه
به x: 0 y: -150 برو
// حلقه اصلی کنترل
همیشه
// بررسی کلیدهای جهت‌دار
اگر <key right arrow pressed?>
x را 10 تغییر بده // حرکت به راست
پایان
پایان

متغیرها:

  • player_speed به جای s
  • enemy_count به جای ec
  • game_state به جای state

پیام‌ها:

  • start_game به جای start
  • player_hit به جای hit
  • level_complete به جای done

درک عمیق بلوک‌ها و اسکریپت‌ها کلید موفقیت در برنامه‌نویسی Scratch است. با تسلط بر:

  • انواع بلوک‌ها و کاربرد هر یک
  • الگوهای رایج اسکریپت‌نویسی
  • تکنیک‌های پیشرفته برای پروژه‌های پیچیده
  • روش‌های اشکال‌زدایی برای حل مشکلات
  • اصول سازماندهی برای کد تمیز

شما می‌توانید پروژه‌های قدرتمند و حرفه‌ای بسازید. تمرین مداوم و آزمایش ترکیب‌های مختلف بلوک‌ها، مهارت شما را به سطح جدیدی خواهد رساند.

آماده‌اید تا با این دانش، پروژه‌های شگفت‌انگیز بسازید؟ 🚀✨