بلوکها و اسکریپتها
بلوکها و اسکریپتها در Scratch: راهنمای کامل
Section titled “بلوکها و اسکریپتها در Scratch: راهنمای کامل”بلوکها و اسکریپتها قلب برنامهنویسی در Scratch هستند. این راهنما شما را با تمام جنبههای این ابزارهای قدرتمند آشنا میکند.
درک بلوکها
Section titled “درک بلوکها”تعریف بلوک
Section titled “تعریف بلوک”بلوکها واحدهای اساسی برنامهنویسی در 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)> → کوچکتر از
رنگبندی بلوکها
Section titled “رنگبندی بلوکها”دستهبندی بر اساس رنگ
Section titled “دستهبندی بر اساس رنگ”آبی تیره - Motion (حرکت)
- کنترل موقعیت و جهت
- حرکت و چرخش
- تنظیمات فیزیکی
بنفش - Looks (ظاهر)
- تغییر costume و backdrop
- جلوههای بصری
- نمایش متن و فکر
صورتی - Sound (صدا)
- پخش و کنترل صدا
- تنظیمات صوتی
- ضبط صدا
نارنجی - Events (رویدادها)
- شروعکنندههای اسکریپت
- واکنش به ورودی
- ارسال و دریافت پیام
زرد - Control (کنترل)
- حلقهها و شرطها
- توقف و شروع
- کلونسازی
آبی روشن - Sensing (حسگری)
- تشخیص برخورد
- ورودی کاربر
- اطلاعات محیطی
سبز - Operators (عملگرها)
- محاسبات ریاضی
- عملیات منطقی
- کار با متن
نارنجی تیره - Variables (متغیرها)
- ایجاد و مدیریت متغیرها
- کار با لیستها
- ذخیرهسازی داده
قرمز تیره - My Blocks (بلوکهای من)
- تعریف توابع سفارشی
- پارامترها و بازگشت
- کد قابل استفاده مجدد
ساخت اسکریپتها
Section titled “ساخت اسکریپتها”تعریف اسکریپت
Section titled “تعریف اسکریپت”اسکریپت مجموعهای از بلوکهای متصل است که یک برنامه یا بخشی از برنامه را تشکیل میدهد.
ساختار اسکریپت
Section titled “ساختار اسکریپت”الگوی کلی
Section titled “الگوی کلی”[بلوک کلاهی] ← نقطه شروع[بلوک انباشتی ۱] ← دستور اول[بلوک انباشتی ۲] ← دستور دوم[بلوک C شکل] ← کنترل جریان [بلوکهای داخلی] ← دستورات تکراری/شرطی[بلوک انباشتی ۳] ← ادامه برنامه
مثال عملی: کنترل شخصیت
Section titled “مثال عملی: کنترل شخصیت”وقتی پرچم سبز کلیک شدبه 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 تغییر بده پایانپایان
الگوهای رایج اسکریپت
Section titled “الگوهای رایج اسکریپت”۱. الگوی راهاندازی (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 درجه بچرخ پایانپایان
بهترین شیوهها
Section titled “بهترین شیوهها”۱. سازماندهی کد
Section titled “۱. سازماندهی کد”تفکیک وظایف:
// اسکریپت ۱: راهاندازیوقتی پرچم سبز کلیک شد[تنظیمات اولیه]
// اسکریپت ۲: حرکتوقتی پرچم سبز کلیک شدهمیشه [منطق حرکت]پایان
// اسکریپت ۳: انیمیشنوقتی پرچم سبز کلیک شدهمیشه [تغییر costume]پایان
۲. استفاده از متغیرها
Section titled “۲. استفاده از متغیرها”بهتر:
سرعت را 10 قرار بدههمیشه (سرعت) قدم حرکت کنپایان
بدتر:
همیشه 10 قدم حرکت کنپایان
۳. جلوگیری از تکرار
Section titled “۳. جلوگیری از تکرار”استفاده از My Blocks:
// تعریف بلوک سفارشیتعریف حرکت به سمت (x) (y)تا <(distance to x: (x) y: (y)) < (5)> به سمت x: (x) y: (y) برو 2 قدم حرکت کنپایان
// استفادهحرکت به سمت (100) (50)حرکت به سمت (-50) (100)
تکنیکهای پیشرفته
Section titled “تکنیکهای پیشرفته”۱. ارتباط بین اسپرایتها
Section titled “۱. ارتباط بین اسپرایتها”استفاده از پیامها (Broadcasting)
Section titled “استفاده از پیامها (Broadcasting)”// اسپرایت بازیکنوقتی پرچم سبز کلیک شدهمیشه اگر <touching Enemy?> پیام [game over] ارسال کن پایانپایان
// اسپرایت دشمنوقتی پیام [game over] دریافت شدهمه را متوقف کن
استفاده از متغیرهای سراسری
Section titled “استفاده از متغیرهای سراسری”// اسپرایت ۱وقتی پرچم سبز کلیک شدامتیاز را 10 تغییر بده
// اسپرایت ۲وقتی پرچم سبز کلیک شدهمیشه اگر <(امتیاز) > (100)> "برنده شدی!" بگو پایانپایان
۲. ماشین حالت (State Machine)
Section titled “۲. ماشین حالت (State Machine)”پیادهسازی با متغیر حالت
Section titled “پیادهسازی با متغیر حالت”وقتی پرچم سبز کلیک شدحالت را "منتظر" قرار بده
همیشه اگر <(حالت) = ("منتظر")> // منطق حالت منتظر اگر <key space pressed?> حالت را "در حال بازی" قرار بده پایان پایان
اگر <(حالت) = ("در حال بازی")> // منطق بازی اگر <touching Enemy?> حالت را "تمام شده" قرار بده پایان پایان
اگر <(حالت) = ("تمام شده")> // منطق پایان بازی "بازی تمام شد!" بگو همه را متوقف کن پایانپایان
۳. بهینهسازی عملکرد
Section titled “۳. بهینهسازی عملکرد”کاهش محاسبات در حلقه
Section titled “کاهش محاسبات در حلقه”بهتر:
وقتی پرچم سبز کلیک شدفاصله_مرز را 50 قرار بدههمیشه 10 قدم حرکت کن اگر <(x position) > (فاصله_مرز)> 180 درجه بچرخ پایانپایان
بدتر:
همیشه 10 قدم حرکت کن اگر <(x position) > ((480) / (2))> 180 درجه بچرخ پایانپایان
استفاده از تأخیر مناسب
Section titled “استفاده از تأخیر مناسب”همیشه // کد پیچیده 0.1 ثانیه صبر کن // کاهش بار CPUپایان
۴. مدیریت کلونها
Section titled “۴. مدیریت کلونها”ایجاد و کنترل کلون
Section titled “ایجاد و کنترل کلون”// اسپرایت اصلیوقتی پرچم سبز کلیک شد10 بار تکرار کن کلون خود را ایجاد کن 1 ثانیه صبر کنپایان
// منطق کلونوقتی به عنوان کلون شروع شدمبه موقعیت تصادفی بروهمیشه y را -5 تغییر بده اگر <(y position) < (-180)> این کلون را حذف کن پایانپایان
محدود کردن تعداد کلونها
Section titled “محدود کردن تعداد کلونها”وقتی پرچم سبز کلیک شدتعداد_کلون را 0 قرار بده
همیشه اگر <(تعداد_کلون) < (10)> کلون خود را ایجاد کن تعداد_کلون را 1 تغییر بده پایانپایان
وقتی به عنوان کلون شروع شدم// منطق کلونتعداد_کلون را -1 تغییر بدهاین کلون را حذف کن
اشکالزدایی (Debugging)
Section titled “اشکالزدایی (Debugging)”تکنیکهای رایج
Section titled “تکنیکهای رایج”۱. استفاده از بلوک “say”
Section titled “۱. استفاده از بلوک “say””همیشه x را 10 تغییر بده (x position) بگو // نمایش مقدار برای بررسیپایان
۲. تست مرحلهای
Section titled “۲. تست مرحلهای”// تست حرکتوقتی کلید t فشرده شد10 قدم حرکت کن"حرکت انجام شد" بگو
// تست برخوردوقتی کلید c فشرده شداگر <touching Sprite1?> "برخورد تشخیص داده شد" بگووگرنه "برخورد نیست" بگوپایان
۳. استفاده از متغیرهای debug
Section titled “۳. استفاده از متغیرهای debug”وقتی پرچم سبز کلیک شدdebug_mode را true قرار بده
همیشه اگر <(debug_mode) = (true)> (x position) بگو امتیاز را نمایش بده پایانپایان
مشکلات رایج و راهحلها
Section titled “مشکلات رایج و راهحلها”۱. اسکریپت اجرا نمیشود
Section titled “۱. اسکریپت اجرا نمیشود”بررسیهای لازم:
- آیا بلوک کلاهی وجود دارد؟
- آیا اسپرایت مخفی نیست؟
- آیا اسکریپت متوقف نشده؟
۲. حلقه بینهایت
Section titled “۲. حلقه بینهایت”علائم:
- برنامه متوقف میشود
- واکنش نمیدهد
راهحل:
// اضافه کردن تأخیرهمیشه // کد شما 0.1 ثانیه صبر کنپایان
۳. متغیر تغییر نمیکند
Section titled “۳. متغیر تغییر نمیکند”بررسیها:
- آیا متغیر تعریف شده؟
- آیا دامنه متغیر درست است؟
- آیا منطق شرط صحیح است؟
سازماندهی کد
Section titled “سازماندهی کد”۱. تقسیمبندی اسکریپتها
Section titled “۱. تقسیمبندی اسکریپتها”بر اساس عملکرد
Section titled “بر اساس عملکرد”// گروه ۱: راهاندازیوقتی پرچم سبز کلیک شد[تنظیمات اولیه]
// گروه ۲: ورودی کاربروقتی کلید [هر کلید] فشرده شد[واکنش به ورودی]
// گروه ۳: منطق بازیوقتی پرچم سبز کلیک شدهمیشه [منطق اصلی]پایان
// گروه ۴: انیمیشنوقتی پرچم سبز کلیک شدهمیشه [تغییرات بصری]پایان
۲. استفاده از نظرات
Section titled “۲. استفاده از نظرات”// این اسکریپت کنترل حرکت بازیکن را انجام میدهدوقتی پرچم سبز کلیک شد// تنظیم موقعیت اولیهبه x: 0 y: -150 برو
// حلقه اصلی کنترلهمیشه // بررسی کلیدهای جهتدار اگر <key right arrow pressed?> x را 10 تغییر بده // حرکت به راست پایانپایان
۳. نامگذاری مناسب
Section titled “۳. نامگذاری مناسب”متغیرها:
player_speed
به جایs
enemy_count
به جایec
game_state
به جایstate
پیامها:
start_game
به جایstart
player_hit
به جایhit
level_complete
به جایdone
درک عمیق بلوکها و اسکریپتها کلید موفقیت در برنامهنویسی Scratch است. با تسلط بر:
- انواع بلوکها و کاربرد هر یک
- الگوهای رایج اسکریپتنویسی
- تکنیکهای پیشرفته برای پروژههای پیچیده
- روشهای اشکالزدایی برای حل مشکلات
- اصول سازماندهی برای کد تمیز
شما میتوانید پروژههای قدرتمند و حرفهای بسازید. تمرین مداوم و آزمایش ترکیبهای مختلف بلوکها، مهارت شما را به سطح جدیدی خواهد رساند.
آمادهاید تا با این دانش، پروژههای شگفتانگیز بسازید؟ 🚀✨