در اغلب بازیها از بیش از یک دکمه استفاده میشود. در این پروژه قصد داریم با استفاده از کلیدهای ← و → به همین موضوع بپردازیم.
این پروژه برگرفته شده از projects.raspberrypi هست.
به روشی که قبلاً گفته شد، یک پروژه جدید تعریف و با نام Synchronized Swimming ذخیره کنید. در بخش کنترل صحنه (Stage control) کلیک کنید. سپس بر روی تب Backdrops در سمت چپ و بالا کلیک کنید. پس از آن بر روی دکمه Convert to Bitmap بزنید. از پالت رنگها/ Fill palette یک رنگ آبی شبیه رنگ آب انتخاب کنید، روی آیکون Fill icon
کلیک کنید و سپس بر روی پسزمینه شطرنجی کلیک کنید تا رنگ آن به رنگ انتخابی تغییر کند (شکل زیر).

رنگ پسزمینه را آبی کنید.
روی اسپرایت گربه کلیک راست کنید و سپس با کلیک بر روی delete آن را حذف کنید. حال روی آیکون
Choose a Sprite کلیک کنید تا لیستی از اسپرایتها را ببینید. بعد از دستهبندی Animals گزینه Cat Flying را انتخاب کنید و سپس روی OK بزنید (شکل زیر).

رنگ پسزمینه را آبی کنید.
روی اسپرایت جدید کلیک کنید. سپس از دستهبندی Events دو بلوک when space key pressed انتخاب و در ناحیه کد درگ کنید. بر روی فلش کوچکی که کنار کلمه space در بلوک اول قرار دارد، کلیک کنید و از لیستی که ظاهر میشود، گزینه left arrow را انتخاب کنید. از دستهبندی Motion ، بلوک زیر را انتخاب کنید و زیر بلوک when left arrow pressed قرار دهید.
همین کار را با بلوک دیگری از دسته Events انجام دهید. بر روی فلش کوچکی که کنار کلمه space در بلوک اول قرار دارد، کلیک و از لیستی که ظاهر میشود، گزینه right arrow را انتخاب کنید. از دستهبندی Motion هم بلوک زیر را انتخاب کنید.

کلید ← یا → را فشار دهید تا بتوانید برنامه را تست کنید. خواهید دید که اسپرایت با فشردن این کلیدها میچرخد و جهت انتخاب شده در صفحه کلید را دنبال میکند. توجه کنید که این بار نیازی به کلیک روی پرچم سبز نیست. دلیل این است که بلوکهای تریگری که از دستهبندی Events انتخاب کردید، همیشه فعال هستند حتی زمانی که برنامه ران نشده است.
همین کار را دو بار دیگر تکرار کنید در این مرحله، میخواهیم اسپرایت علاوه بر چرخش به چپ و راست، قادر به حرکت به جلو و عقب نیز باشد. برای این منظور، بلوکهای up arrow و down arrow را از دستهبندی Events انتخاب میکنیم. سپس از دستهبندی Motion، دو بلوک move -10 steps و move -10 steps را به ترتیب به این بلوکها اضافه میکنیم. حال کلیدهای ↑ و ↓ را فشار دهید خواهید دید که اسپرایت میچرخد و به جلو عقب حرکت میکند.

برای واقعیتر کردن حرکت اسپرایت میتوانید نحوه ظاهر شدن آن را تغییر دهید (در Scratch اصطلاحاً به آن Costume / لباس گفته میشود). روی اسپرایت کلیک کنید، سپس روی تب Costumes در بالای پالت بلوکها کلیک کنید. روی cat flying-a کلیک کنید و سپس برای حذف کردن آن روی آیکون سطل زبالهای که در گوشه بالا سمت راست آن ظاهر میشود کلیک کنید. بعد روی
cat flying-b کلیک کنید و از باکسی که در بالا قرار دارد، نام آن را به right تغییر دهید (شکل زیر).

نام costume را به right تغییر دهید.
روی کاستوم جدید به نام right کلیک راست کنید و گزینه duplicate را انتخاب کنید تا یک کپی از آن ساخته شود. حال روی این کپی کلیک کنید و سپس روی
Select icon بزنید. حال گزینه
Flip Horizontal را انتخاب کنید و نام آن را به left تغییر دهید (شکل زیر). حال اسپرایت دو کاستوم برای دو جهت سمت راست و چپ دارد. این دو کاستوم مشابه هم هستند ولی اسپرایت را در دو جهت متفاوت نشان میدهند.

لباس/ Costume را کپی کنید، آن را برگردانید و نام آن را left بگذارید.
روی تب کد در بالای قسمت مربوط به costume کلیک کنید. از دستهبندی Looks دو بلوک switch costume to left و switch costume to right را انتخاب کنید و بعد اولی را زیر بلوک when left arrow key pressed و دومی را زیر بلوک when right arrow key pressed قرار دهید. حال کلیدهای ← و → را بزنید. خواهید دید که گربه به جهتی که انتخاب کردید، میچرخد.

برای شنای نمایشی به سبک المپیک، ما به شناگران بیشتری نیاز داریم. به علاوه باید راهی برای ریست کردن موقعیت اسپرایت پیدا کنیم. از دستهبندی Events بلوک when
clicked را اضافه کنید. سپس از دستهبندی Motion، یک بلوک go to x: 0 y: 0 انتخاب کنید (در صورت لزوم مقادیر را تغییر دهید). مجدداً از دستهبندی Motion یک بلوک دیگر به اسم point in direction 90 اضافه کنید. حال وقتی روی پرچم سبز کلیک کنید، گربه به وسط صحنه میآید و سپس به سمت راست اشاره میکند.
برای اینکه شناگران بیشتری داشته باشیم، از دستهبندی Control یک بلوک repeat 10 اضافه کنید و سپس مقدار آن را به 6 تغییر دهید. مجدداً از همان دسته یک بلوک create clone of myself انتخاب کنید و داخل بلوک repeat 10 قرار دهید. برای اینکه همه شناگران در یک جهت شنا نکنند باید بلوک زیر را بالای بلوک clone of myself و داخل بلوک repeat 6 قرار دهید.

روی پرچم سبز کلیک کنید و کلیدهای فلش را امتحان کنید تا ببینید که شناگران شما به حرکت در میآیند!

حال برای تکمیل پروژه شنای نمایشی باید موسیقی را هم به آن اضافه کنید. بدین منظور سراغ تب Sounds در بالای پالت بلوکها بروید. سپس روی آیکون
Choose a Sound کلیک کنید. روی دسته Loops کلیک کنید و از لیستی که ظاهر میشود، موسیقی مورد علاقه خود را پیدا کنید (شکل زیر). برای این پروژه من موسیقی Dance Around را انتخاب کردم. حال روی دکمه OK کلیک کنید تا موسیقی انتخاب شود. پس از آن روی تب Code کلیک کنید.

یک موسیقی انتخاب کنید
از دستهبندی Events، یک بلوک when
clicked انتخاب و به ناحیه کد اضافه کنید. سپس از دستهبندی Control یک بلوک Forever انتخاب کنید. داخل این بلوک، یک بلوک play sound dance around until done اضافه کنید. به یاد داشته باشید که باید اسم قطعه موسیقی که انتخاب کردهاید را وارد کنید. حال روی پرچم سبز کلیک کنید تا برنامه اجرا شود. اگر خواستید موسیقی را متوقف کنید، کافی است روی هشتضلعی قرمز رنگ کلیک کنید تا برنامه و صدا متوقف شود.

در نهایت، برای اینکه یک شنای نمایشی کامل را شبیهسازی کنید، میتوانید یک تریگر جدید به برنامه اضافه کنید. بدین منظور از دستهبندی Events، یک بلوک when space key pressed اضافه کنید. سپس یک بلوک switch costume to right انتخاب کنید. زیر این بلوک، یک بلوک repeat 36 اضافه کنید. به یاد داشته باشید که مقدار پیشفرض را از 10 به 36 تغییر دهید؛ و داخل بلوک repeat 36 هم به ترتیب دو بلوک زیر را قرار دهید:
روی پرچم سبز کلیک کنید تا برنامه ران شود. سپس کلید فاصله را فشار دهید تا تغییرات اخیری که اضافه کردید، اجرا شوند (شکل زیر). پس از تست برنامه حتماً آن را ذخیره کنید.

روتین کامل شنای نمایشی
اکنون که با Scratch کامل آشنا شدید، زمان آن رسیده که روی پروژههای کمی چالشبرانگیزتر کار کنید: یک بازی تیراندازی با کمان. در این بازی بازیکن باید با یک کمان و تیر که به طور تصادفی حرکت میکند، به هدف شلیک کند.
این کارا با باز کردن مرورگر کرومیوم و تایپ آدرس زیر و سپس فشار دادن کلید ENTER شروع کنید تا منابع بازی به صورت یک فایل زیپ دانلود شوند:
حال باید آن را از حالت فشرده خارج کنید (روی آن راست کلیک کرده و گزینه Extract Here را انتخاب کنید). به Scratch برگردید و روی منوی File کلیک کنید. سپس گزینه Load from your computer را انتخاب و روی ArcheryResources.sb3 کلیک کنید و سپس دکمه Open را بزنید. حال از شما پرسیده میشود که آیا میخواهید پروژه فعلی را جایگزین کنید یا خیر. اگر تغییرات را ذخیره نکردهاید، روی Cancel کلیک کنید و آنها را ذخیره کنید. در غیر این صورت روی OK کلیک کنید.

لود شدن منابع بازی تیراندازی با کمان.
پروژه جدید شامل یک پسزمینه و یک اسپرایت است (شکل بالا)، اما هیچ کدی ندارد و این دقیقاً کاری است که باید شما انجام دهید. این کار را با افزودن یک بلوک when
clicked شروع کنید. سپس یک بلوک broadcast message1 اضافه کنید. روی فلش کوچک در انتهای بلوک کلیک کنید و سپس New Message را انتخاب کنید. حال عبارت new arrow را تایپ کنید و دکمه OK را بزنید. حال بلوک عبارت new arrow را نشان میدهد.

broadcast یک پیام از یک بخش از برنامه است که هر بخش دیگری از برنامه میتواند آن را دریافت کند و طبق آن کاری را انجام دهد. بدین منظور یک بلوک when I receive message1 اضافه کنید و سپس متن آن را به when I receive new arrow تغییر دهید. بدین منظور روی فلش رو به پایین کلیک کنید و از لیست new arrow را انتخاب کنید.
در زیر بلوک when I receive new arrow ، یک بلوک go to x: -150 y: -150 و یک بلوک set size to 400 % اضافه کنید. توجه کنید که اینها مقادیر پیشفرض این بلوکها نیستند. به عبارتی شما باید پس از اضافه کردن این بلوکها، مقادیر پیشفرض را با مقادیر مورد نظر جایگزین کنید. حال روی پرچم سبز کلیک کنید تا ببینید تاکنون چه کارهایی انجام دادهاید: اسپرایت پیکان (arrow sprite) که بازیکن از آن برای هدفگیری استفاده میکند، به پایین و سمت چپ صفحه میرود و اندازه آن چهار برابر میشود.

برای به چالش کشیدن بازیکن، یک حرکت شبیهسازی شده برای پیکان یا تیر اضافه کنید. به این صورت که در حین کشیدن کمان و هدفگیری تیر نوسان میکند. یک بلوک Forever را انتخاب و به ناحیه کد اضافه کنید. سپس یک بلوک a glide 1 seconds to x: -150 y: -150 اضافه کنید. در اولین دایره سفید از سمت چپ این بلوک عدد 0.5 را جایگزین کنید. سپس از دستهبندی Operators یک بلوک pick random -150 to 150 را در دو جای خالی دیگر همان بلوک قرار دهید. این باعث میشود که تیر در صفحه به صورت تصادفی در جهات مختلف و فواصل مختلف حرکت کند و هدفگیری برای بازیکن سختتر شود.

یکبار دیگر روی پرچم سبز کلیک کنید تا ببینید که بلوک چه کاری انجام میدهد: اسپرایت تیر در حال حرکت است اما در حال حاضر شما هیچ راهی برای پرتاب تیر به سمت هدف ندارید. حال یک بلوک when space key pressed را به ناحیه کد اضافه کنید. سپس از دستهبندی Control، یک بلوک stop all انتخاب کنید. روی فلش پایین در انتهای بلوک کلیک کنید و آن را به یک بلوک stop other scripts in sprite تغییر دهید.

اگر برنامه را برای اضافه کردن بلوکهای جدید متوقف کردهاید، دوباره روی پرچم سبز کلیک کنید تا برنامه مجدداً اجرا شود. سپس کلید SPACE را فشار دهید: خواهید دید که اسپرایت تیر دیگر حرکت نمیکند. این شروع کار است و باید آن را به نحوی تغییر دهید که به نظر برسد تیر به سمت هدف حرکت میکند. یک بلوک repeat 50 را اضافه کنید و زیر آن یک بلوک change size by -10 قرار دهید. حال روی پرچم سبز کلیک کنید تا بازی را دوباره تست کنید. این بار، به نظر میرسد که تیر به سمت هدف حرکت میکند.

برای اینکه یک بازی جذاب بسازید، به یک راه برای ثبت امتیازات نیاز دارید. از همان دسته قبلی یک بلوک if then اضافه کنید، دقت کنید که زیر بلوک repeat 50 (و نه در داخل آن) قرار بگیرد. حال از دسته Sensing یک بلوک ?touching color اضافه کنید و در جای خالی بین if و then قرار دهید. برای انتخاب رنگ صحیح، روی جعبهی رنگی در انتهای بلوک کلیک کنید، سپس روی آیکونی که شبیه به قطرهچکان است کلیک و بعد روی مرکز زرد رنگ هدف کلیک کنید.

برای اینکه بازیکن بداند که امتیاز گرفته است، یک بلوک start sound cheer و یک بلوک say 200 points for 2 seconds اضافه کنید. در نهایت، یک بلوک broadcast new arrow را در پایینترین قسمت بلوکها (زیر و خارج از بلوک if then) اضافه کنید تا پس از هر بار پرتاب تیر به بازیکن یک تیر دیگر داده شود. روی پرچم سبز کلیک کنید تا بازی را شروع شود. حال سعی کنید تیر را سمت مرکز زرد رنگ پرتاب کنید: اگر بتوانید به هدف بزنید، همراه با تشویق جمعیت ، 200 امتیاز پاداش هم خواهید گرفت.

بازی بدون مشکل اجرا میشود اما کمی چالشبرانگیز است. با استفاده از آنچه در این فصل آموختید، سعی کنید آن را بسط یا گسترش دهید و امتیازاتی برای ضربه زدن به قسمتهای دیگر یعنی به غیر از مرکز زرد رنگ اضافه کنید: 100 امتیاز برای قسمت قرمز، 50 امتیاز برای قسمت آبی و غیره.
سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.