به نام خدای رنگین کمان

سلام. به جلسه 5 آموزش اسکرچ خوش اومدید. تو این جلسه میخوام شما رو با مفهوم متغیر در اسکرچ آشنا کنم. متغیرها اون چیزی هستند که شما برای اضافه کردن امتیاز به بازیتون بهش نیاز دارید. البته امتیاز تنها کاربرد متغیر در اسکرچ نیست. کارهای جالب دیگه ای هم میشه باهاش کرد که تو این آموزش بهتون میگم.

پس بزن بریم!

فهرست مطالب

1- متغیر در اسکرچ چیست؟

متغیر در اسکرچ یکی از کاربردی ترین مفاهیم برنامه نویسیه. تعریف متغیر اینه:
متغیر مکانی از حافظه است که در آن مقداری ذخیره می شود.

اما باز هم ساده تر میشه بهش نگاه کرد.  احتمالا تا الان تو ریاضی از x و y استفاده کردید و نوشتید:
x = 10 ، a = b + c یا ….

x و y  و a و b و c همون متغیرها هستند که شما باهاشون کار کردید و یه سری مقادیر داخلش ذخیره کردید. متغیر در اسکرچ حتما نباید انگلیسی باشه، میتونید فارسی بنویسید. مثلا یه متغیری به اسم “امتیاز” درست کنید و این دستور رو براش بنویسید:   1 + امتیاز = امتیاز.

لپتاپ - برنامه نویسی

اگر شما دبستانی هستید و این آموزش رو میخونید احتمال داره هنوز با x و y در ریاضی آشنا نشدید. ادامه این آموزش رو دنبال کنید یواش یواش متوجه میشید 🙂

2- تعریف دقیق تر متغیر

وقتی شما یک بازی مینویسید باید به بازیتون امتیاز اضافه کنید. وجود امتیاز در بازی باعث میشه هیجان بازی شما بیشتر بشه. چون کاربر هر بار که بازی میکنه دوست داره امتیاز قبلیش رو بهتر کنه. برای اینکه شما بتونید با استفاده از متغیرها، امتیاز رو به بازیتون اضافه کنید یک مثال براتون میزنم. شما در عکس زیر چند تا سیب میبینید؟

احتمالا بدون فکر کردن و اینکه بخواهید بشمرید سریع گفتید 3. درسته؟ حالا بگید چند تا سیب میبینید:

برای جواب این سوال شما مجبور شدید یکی یکی سیب ها رو بشمرید تا بتونید بگید پانزده سیب وجود داره. اگه بخواهیم خیلی دقیق به کاری که مغز شما انجام داده نگاه کنیم اینجوری میتونیم بگیم:
شما سیب اولی رو که شمردید گفتید : 1
سیب بعدی رو که شمردید گفتید : 2
سیب بعدی : 3
یعنی هر بار گوشه ذهنتون یه عددی نگه میدارید و هر سیب جدیدی که میبینید به اون عدده یکی اضافه میکنید. مثلا تا اینجای شمارش شما عدد 3 رو تو ذهنتون دارید و وقتی سیب بعدی رو میبینید به 3 یکی اضافه میکنید و میگید : 4

کاری که مغز شما داره با اون عدد میکنه دقیقا میشه مفهوم متغیر. همونجور که بهتون گفتم متغیر جاییه که شما یک مقداری رو داخلش ذخیره میکنیدو مثلا برای این مثال من یه متغیری دارم به اسم “تعداد سیبها” که هر بار یک سیب جدید میبینم یه دونه به “تعداد سیبها” اضافه میکنم. فکر کنم الان دیگه کامل متوجه شدید متغیر چیه 🙂

3- دستوراتِ متغیر در اسکرچ

اگر مفهوم متغیر در اسکرچ رو خوب متوجه شده باشید دیگه الان میتونید درک کنید که یکی از کاربردهای متغیرها، امتیازه. کافیه در شروع بازیتون شما متغیر امتیاز رو برابر صفر کنید (به این کار مقدار دهی اولیه هم میگیم).

برای این کار باید دستورات متغیر رو با هم بررسی کنیم. از سمت راست، از قسمت دسته بندی دستورات روی متغیرها کلیک کنید(شماره 1 در عکس)

اولین گزینه ای که میبینید ایجاد یک متغیره. روی اون کلیک کنید. (شماره 2 در عکس) در پنجره ای که باز میشه اسم متغیرتون رو وارد کنید (حواستون باشه گزینه “برای همه شکلک ها” هم انتخاب شده باشه) و روی دکمه تایید بزنید. به همین راحتی تونستید یک متغیر درست کنید کنید 🙂

شماره هایی که در تصویر مشخص کردم رو در آموزش توضیح میدم

دو تا دستور مهم دیگه داریم. یکی دستور “مقدار دهی به متغیر” (شماره 4) و یکی هم دستور “تغییر مقدار متغیر” (شماره 5)
“مقدار دهی به متغیر” یعنی یک مقداری رو به متغیرتون بدید. مثلا بالاتر گفتم که در شروع بازی باید مقدار امتیازمون رو صفر بدیم. برای این کار میتونیم این کار کنیم:

اما “تغییر مقدار متغیر” (شماره 5) چیه؟ وقتی شما یک متغیری رو مقداردهی میکنید قراره تا آخر مقدار اون متغیر ثابت باشه؟ قطعا نه! متغیر شما بر اساس یه سری اتفاقایی که شما تعریف میکنید مقدارش  باید عوض بشه. مثلا فرض کنید تو بازی که جلسه قبل نوشتیم (بازی فرار توپ فوتبال از توپ بسکتبال) بخواهیم کاری کنیم که اگه توپ بسکتبال به لبه خورد یه دونه امتیاز به بازی اضافه بشه (این چیزی که میگم برای بازی ما یه جورایی بی معنیه و شاید بگید اصلا چرا باید اینکار کنیم؟! درسته میگید، من الان فقط با این مثال میخوام “تغییر مقدار متغیر” رو بهتون یاد بدم. در ادامه آموزش میگم چیکار کنیم که امتیاز بازیمون قشنگ تر کار کنه)

کدی که در تصویر میبینید در واقع کد توپ بسکتباله که در جلسه قبل نوشتیم و اینجا اومدم کاملترش کردم:
همانطور که در عکس میبینید اول اومدم مقدار امتیازم رو برابر صفر قرار دادم. در ساختار تکرار “برای همیشه” دستور حرکت رو نوشتم و با یک شرط ساده گفتم اگر به لبه خوردی “تغییر امتیاز بده به اندازه 1” یعنی یه دونه به امتیاز اضافه کن.
 
باز هم تکرار میکنم اینکه توپ بسکتبال به لبه برخورد کنه و یه امتیاز به کاربر بدیم کار منطقی نیست. فقط با این کار میخوام دستورات مربوط به متغیر رو  بهتر درک کنید.

نکته: تا اینجای آموزش هیچ حرفی از قسمتهای 3، 6 و 7 نکردیم. این قسمتها رو در جلسات بعدی ازشون استفاده میکنیم

ایده بازی در اسکرچ

در دستور “تغییر امتیاز” به صورت پیش فرض عدد 1 وجود داره. یعنی هر بار که اجرا بشه یکی به متغیر اضافه میشه. ممکنه شما به متغیری نیاز داشته باشید که هر بار که اجرا بشه بخواهید یکی ازش کم کنید (به نظرتون چه متغیری این ویژگی رو داره؟) برای اینکار باید از عدد 1- استفاده کنید. یا ممکنه شما متغیری نیاز داشته باشید که با هر بار اجرا مثلا 7 تا بهش اضافه بشه. پس باید به جای 1 عدد 7 بذارید

مداد - تعریف پروژه

ازتون انتظار دارم تا اینجای کار رو شما هم انجام بدید تا مفاهیم مربوط به متغیر رو بهتر درک کنید. اگر به مشکلی خوردید تو قسمت نظرات سوالتنون رو بپرسید و اگه تونستید این کار رو انجام بدید حتما تو قسمت نظرات به من بگید 🙂

4- کاربرد متغیر در اسکرچ

تا اینجا در مورد متغیرها صحبت کردم و به صورت ویژه کاربردش در استفاده از “امتیاز”. چند تا مثال کاربردی دیگه اینجا میزنم که برای درست کردنشون به متغیر نیاز دارید:

1- تایمِر یا زمان سنج: فرض کنید شما بخواهید یه بازی درست کنید که نیازه زمان بازی کاربر رو اندازه بگیرید. یعنی بتونید تشخیص بدید کاربر چند ثانیه بازی میکنه. (دقیقا مثل بازی توپ فوتبال و بسکتبال که جلسه قبل نوشتیم. تو اون بازی هر چقدر بیشتر تو بازی بمونه باید امتیازش بیشتر باشه )

برای این کار شما نیاز دارید یه متغیر تعریف کنید به اسم تایمر (یا زمان سنج) و کدی بنویسید که هر یک ثانیه یکی بهش اضافه بشه. لطفا قبل از اینکه کد تایمر رو ببینید خودتون فکر کنید و بگید چطور میشه کد تایمر رو نوشت؟

دقت کنید که در این دستورات فقط یه تایمر ساده نوشتیم که تا آخر اجرای پروژه هر یک ثانیه یه دونه به متغیر تایمر اضافه میشه.اگر بخواهید برای بازی جلسه قبل این کار رو انجام بدید بانک ایده این جلسه رو ببینید)
این دستورات رو در اسکرچ امتحان کنید تا خروجی کار رو ببینید. (حتما خودتون میدونید که قبل نوشتن این دستورات باید متغیر تایمر رو ایجاد کنید)

2- تایمِر معکوس: منظور از تایمر معکوس حالتیه که شما بخواهید کاری کنید که مثلا کاربر فقط 30 ثانیه زمان داشته باشه برای بازی کردن. یعنی میخواهید کاری کنید که مقدار تایمرتون اول کار 30 باشه (پس با 30 مقداردهی اولیه بشه) و هر بار یکی ازش کم بشه (پس تغییر تایمرتون باید به اندازه -1 باشه) و هر وقت تایمر به صفر رسید بازی متوقف بشه. برای اینکه بتونید این کار رو انجام بدید باید با عملگرها آشنا باشید که در جلسات بعدی بهتون میگم ولی اگه تونستید این مورد رو درست کنید خیلی عالیه!

3- فرصتهای بازی:  بعضی از بازیها هستند که چند تا فرصت به شما میدن. مثلا یه بازی جنگی در نظر بگیرید که 3 تا فرصت به شما میده. اینجوری که اگر  تیر خوردی یه فرصت دیگه برای بازی کردن بهت میده. و بعد از این که 3 بار تیر خوردی بازی تموم میشه. برای این کار شما باید یه متغیری به اسم “فرصت” تعریف کنید، در ایتدای بازی با 3 مقداردهیش میکنی و هر وقت تیر میخوری یکی از متغیر “فرصت” کم میشه. وقتی فرصت برابر صفر شد یعنی کاربر فرصتهاش رو از دست داده و بازی باید تموم شه. البته برای پیاده سازی این مورد علاوه بر اینکه عملگرها رو باید بلد باشید باید یاد بگیرید که چطور میتونید تشخیص بدید که کاراکتر شما تیر خورده. من فعلا دارم با شما در مورد کاربردهای متغیر صحبت میکنم و بهتون میگم کجا و چطور از متغیر استفاده کنید.

4- اگه شما هم ایده ای برای استفاده از متغیر در بازی و انیمیشنتون دارید در قسمت نظرات بگید.

برنامه نویس

بانک ایده جلسه 5

بانک ایده جاییه که ذهن شما رو خلاق تر میکنه. در آموزش امروز شما یه سری دستورات یاد گرفتید، یه توانمندیهایی پیدا کردید و در ادامه یه سری ایده میخوام بهتون بدم که بتونید بازی خودتون رو قشنگ تر کنید. شاید الان نتونید همه ایده ها رو پیاده کنید، ولی یه جایی تو گوشه ذهنتون داشته باشید و بعدا به وقتش ازش استفاده کنید. ایده ها رو با دقت بخونید و شما هم اگه ایده ای داشتید در قسمت نظرات این نوشته بنویسید.

1- اضافه کردن تایمر (به عنوان امتیاز) به بازی جلسه قبل
در بازی جلسه قبل کاری کردیم که کاربر باید توپ فوتبال رو از توپ های بسکتبال فراری میداد و به محض برخورد توپ فوتبال با یکی از توپهای بسکتبال، بازی متوقف میشد. حالا شما بیایید متغیر تایمر رو اضافه کنید و تا بدونید کاربر چند ثانیه بازی میکنهو اینجوری امتیازش هم محاسبه میشه.
2- سطح بازی رو با گذر زمان سخت تر کنید
به این معنی که اگه مثلا بعد از گذشت 10 ثانیه سرعت توپ بسکتبال بیشتر بشه. وقتی 20 ثانیه شد باز هم سرعت بیشتر بشه و …

برای اینکه بتونید این کار رو انجام بدید نیازه که قبلش ایده 1 رو درست کرده باشید. علاوه بر اون به یک متغیر سرعت هم نیاز دارید. متغیر سرعت چیه؟ اگه بخواهید حرکت توپ بسکتبال رو سریعتر کنید باید دستور “حرکت کن 10 گام” رو تغییر بدید. یعنی اگه به جای 10 گام ، 15 گام حرکت کنه حرکتش سریعتر میشه. 15 رو اگه 20 کنید باز هم سریعتر میشه… حالا به این فکر کنید از متغیر سرعت و متغیر تایمر  چطوری میتونید ازشون استفاده کنید که بتونید سرعت بازی رو با گذر زمان بیشتر کنید.

این ایده ها رو چطور پیاده سازی کنم؟

همونطور که گفتم قرار نیست همه این ایده ها رو الان بلد باشید پیاده کنید. همین که بهشون فکر کنید و ذهنتون رو درگیر کنه هم خیلی خوبه. اگر بتونید درستون کنید هم که عالیه. اما با این وجود اگه دوست داشتید من در دوره قهرمان اسکرچ همه این موارد رو آموزش دادم. هم درست کردن تایمر و هم سطح بندی بازی. وارد اون دوره بشید و از قسمت جلسات دوره سر فصلهای آموزش رو ببینید

این بازی رو هم ببینید. همونجور که در توضیحاتش نوشته شده پیاده سازی این بازی سخته، اما شاید بتونید ازش ایده بگیرید و به شکل ساده تری این بازی رو با یه ایده جدید درست کنید.
فایل آماده این پروژه رو در جعبه ابزار اسکرچ گذاشتم.

آنچه در ادامه یاد میگیرید

در جلسه بعدی با هم بازی پینگ پنگ رو درست میکنیم.  بعد از درست کردن این بازی شما میتونید بازی فوتبال و هاکی هم درست کنید 🙂

سوال

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