در محیط اسکرچ، تمام بلوکهای برنامهسازی بر اساس رنگ و شکل دستهبندی میشوند. هر دسته عملکرد مشخصی دارد. به عنوان مثال، بلوکهای حرکت (به رنگ آبی) برای جابجایی اشیاء (که به آنها گزاره میگویند) روی صحنه به کار میروند. بلوکهای کنترل (به رنگ طلایی) شامل ساختارهای تکرار و شرط هستند. شکل هر بلوک نیز مشخص میکند که در کجای زنجیره میتوان آن را قرار داد: بلوکهای کلاهدار (مانند وقتی کلید فاصله فشرده شد) شروعکنندهی یک ساختار هستند، بلوکهای حلقهای (مانند تکرار برای همیشه) بخشی از کد را در بر میگیرند و بلوکهای گزارهای (مانند ۱۰ قدم حرکت کن) عملیات اصلی را انجام میدهند.
| رنگ دسته | نام دسته | عملیات اصلی |
|---|---|---|
| آبی | حرکت | تغییر مکان، چرخش، پرش به مختصات (x,y) |
| بنفش | ظاهر | تغییر لباس (کاستیوم)، گفتگو، اعمال افکتهای گرافیکی |
| طلایی | کنترل | حلقهها (تکرار، برای همیشه)، شرطها (اگر-پس)، ایجاد همروندی (همه و منتظر بمان) |
| سبز | عملیات | عملگرهای ریاضی (+ , - , * , /)، مقایسه و توابع منطقی |
برای ساخت یک برنامه، کاربر این بلوکها را از پالت سمت چپ کشیده و در ناحیهی اسکریپت (سمت وسط) رها میکند. اگر شکل دو بلوک با یکدیگر هماهنگ نباشد (مثلاً بخواهید یک بلوک حرکت را به داخل یک بلوک شرط که جای خالی ندارد بچسبانید)، آنها به هم قفل نمیشوند. این ویژگی مانع از بروز خطاهای نوشتاری میشود و مفهومی به نام ساختار نحوی درست را به صورت بصری آموزش میدهد.
در برنامهنویسی معمولی، نقطهی شروع اجرا تابع main() است. اما در اسکرچ، همه چیز توسط بلوکهای رویداد (دستهی کلاهدار قهوهای) آغاز میشود. متداولترین رویدادها عبارتند از: وقتی پرچم سبز کلیک شد (شروع استاندارد بازی)، وقتی کلید ... فشرده شد (ورودی از صفحه کلید) و وقتی این گزاره کلیک شد. به عنوان مثال، برای ساختن یک ماشین حساب ساده، میتوان از رویداد کلید فاصله برای آغاز محاسبه استفاده کرد. در زیر یک مثال از هماهنگی رویداد و متغیرها ارائه شده است:
$ \text{حاصلضرب} = x \times y $
در اسکرچ با بلوک سبز رنگ عملیات، کافی است یک بلوک گفتگو ... را زیر رویداد کلید قرار دهیم و درون آن عبارت x*y را با استفاده از بلوکهای عملیاتی بسازیم.
فرض کنید میخواهیم یک بازی بسازیم که در آن یک گربه (کاراکتر اصلی) با فشردن کلیدهای جهتنما حرکت میکند و وقتی به یک سیب میرسد، امتیاز بگیرد. برای تشخیص برخورد در اسکرچ از بلوک اگر ... پس استفاده میشود. کد کلی به این شکل است: در یک حلقهی تکرار برای همیشه، موقعیت گربه را مطابق با کلیدهای فشرده شده بهروزرسانی میکنیم. سپس یک شرط میگذاریم که اگر گربه به سیب برخورد کرد، متغیر امتیاز یک واحد افزایش یابد و سیب به یک موقعیت تصادفی جدید منتقل شود. مسئلهی حرکت در دو بعد نیاز به استفاده از محورهای x و y دارد. تغییر مکان در هر گام زمانی با فرمول زیر محاسبه میشود (اگر سرعت ثابت v باشد):
$ \Delta x = v \times \cos(\theta) \times \Delta t $$ \Delta y = v \times \sin(\theta) \times \Delta t $
البته در اسکرچ برای حرکت ساده از بلوکهای آمادهی ۱۰ قدم حرکت کن استفاده میشود که به طور خودکار جهت فعلی کاراکتر را در نظر میگیرد. این مثال نشان میدهد که چگونه مفاهیم ریاضی انتزاعی در قالب یک بازی ملموس پیادهسازی میشوند.
به دلیل تطابق شکل و دستهبندی. بلوکهای کلاهدار فقط میتوانند در بالای زنجیره قرار گیرند. بلوکهای حلقهای دارای دهانهی (C-shaped) هستند که فقط بلوکهای گزارهای یا بلوکهای دیگر را درون خود میپذیرند. این طراحی از خطاهای مفهومی مانند قرار دادن یک عملگر ریاضی داخل یک حلقه بدون مقداردهی اولیه جلوگیری میکند.
تکرار ... بار یک حلقهی شمارشی (شبیه for در زبانهای متنی) است که دقیقاً تعداد مشخصی بار اجرا میشود. اما تکرار تا ... یک حلقهی شرطی (شبیه while) است که تا زمانی که شرطش درست باشد، به اجرا ادامه میدهد. مثلاً «تکرار تا (فاصله از دیوار
بله، با استفاده از بلوکهای بلوکهای خودم (My Blocks) که به رنگ صورتی هستند. در این بخش میتوان یک بلوک جدید با ورودیهای مختلف (عددی، متنی یا منطقی) تعریف کرد. سپس میتوان آن بلوک را مانند یک دستور جدید در هر جای برنامه فراخوانی کرد. این قابلیت مفهوم مدولار بودن (Modularity) را به کاربر آموزش میدهد.
1گزاره (Sprite): به هر شیء یا کاراکتری در صحنهی اسکرچ گفته میشود که میتواند کد، لباس (Costume) و صداهای مخصوص به خود را داشته باشد.
2حلقه (Loop): ساختاری در برنامهنویسی که یک قطعه کد را به تعداد مشخص یا تا زمان برقراری یک شرط، بارها اجرا میکند.
3همروندی (Concurrency): توانایی اجرای چندین اسکریپت (سری بلوکها) به طور همزمان در یک پروژه که یکی از قوتهای اصلی اسکرچ است.
4نحو (Syntax): مجموعه قوانین ساختاردهی به کاراکترها و کلمات در زبانهای برنامهنویسی متنی مانند پایتون یا جاوا.
5ساختار نحوی درست (Syntactic Correctness): حالتی که ترتیب قرارگیری دستورات و علائم در کد با قواعد زبان برنامهنویسی مطابقت داشته باشد.
6مدولار بودن (Modularity): ویژگی یک برنامه که در آن کد به بخشهای مستقل و قابل تکرار (مانند تابع یا بلوک سفارشی) تقسیم شده است.