(1399/2/4، 02:59 عصر)mohammadslt نوشته است: (1399/2/4، 02:50 عصر)Master Badfar نوشته است: (1399/2/4، 02:27 عصر)mohammadslt نوشته است: سلام خیلی ممنون از وقتی که گذاشتین برای بنده من تازه یک هفتس با برنامه اشنا شدم از صحبت های شما چیزی متوجه نشدم
فقط میخوام هلپ به بازی اضافه بشه
اقای mhp گفتن هرچی تو یونتی بشه انجام داد تو کانسم میشه
نمیدونم این شدنی هست یا نه
بله شدنیه؛
سعی میکنم یه سورس براتون تهیه کنم.
دمت گرم
سورس خودم گذاشتما هلپ برای اون میخوام با نمایش جواب تو کادر
دس به خاک بزنی طلا بشه
سلام دوباره؛
ببخشید که دیر شد. لازم میدونم یه سری نکات رو بهت بگم:
- 1- پروژه ای که ساختی اونقدرا بهینه نیست و روی موبایل کاربر بدون لگ نخواهد بود.
- 2- تو میتونی به جای تعریف متغیر گلوبال برای کلمات از آرایه و دیکشنری که آموزش هاشون رو میتونی از اینجا و اینجا مطالعه کنی استفاده کنی. من از دیکشنری توی ادیت سورست استفاده کردم. البته اگر من جای تو بودم ساز و کاری طراحی میکردم تا کلمات از یک فایل جیسون یا از یک دیتابیس استخراج بشه و توی بازی لحاظ بشه تا اینطوری بتونم هر روز کلی کلمه به بازی اضافه کنم. اینطوری وقتی یه فرمت مشخصی از کلمه تعریف میکنی بازی انتها داره. ولی وقتی کلمات از یک دیتابیس یا فایل جیسون که مرتب آپدیت میشن گرفته بشه و یک روال کلی برای نمایش کلمه ها باشه بازیت تمومی نخواهد داشت.
- 3- این سبک بازی واقعاً اشباع شده و دیگه جذابیت نداره مگر اینکه واقعاً ایده نو داشته باشی که من توی این سورس ایده جدیدی ندیدم.
- 4- همونطور که گفتم سعی کن قالب جیسون رو یاد بگیری که خیلی به کارت میاد و پروژه ات رو تا حد مناسبی بهینه میکنه. (آقای ثنایی عزیز راجع به جیسون توضیح دادن که با یک سرچ توی بخش جستجو انجمن به دست میاد.)
- 5- سعی کن از توابع (فانکشن ها) توی ایونت نویسی هات استفاده کنی تا مجبور نباشی ایونت ها رو کپی پیست کنی. در ضمن اینطوری برنامه بهینه تر میشه. (آموزش تابع رو از اینجا مطالعه کن.)
پ.ن: بهت توصیه میکنم که در اسرع وقت آموزش هایی که معرفی کردم رو مطالعه کنی چون باعث میشه به عنوان یک تازه کار با راه های استاندارد و اصولی آشنا بشی و از همین اول کاری درست و بهینه ایونت بزنی. این مواردی که بهت گفتم میتونه کمک بسیار شایانی بهت بکنه پس بهتره هر چه زودتر راجع بهشون اطلاعات کسب کنی و آموزش هاشون رو مطالعه کنی.
اما من کار خاصی نکردم و فقط سه تا ایونت و یک متغیر و شیء دیکشنری رو به پروژه ات اضافه کردم. در ضمن من این مکانیزم راهنما رو فقط روی کلمه اول اعمال کردم اما خودت میتونی توسعه اش بدی.
یه حلقه For به نام alaphba_get تشکیل دادم که تک تک حروف کلمه اولت «موز» رو دریافت میکنه و در دیکشنری ذخیره میکنه. این حلقه به تعداد کاراکترها (حروف) کلمه اولت مرحله یا فاز داره. یعنی در هر فاز یا مرحله این حلقه یک حرف از حروف کلمه رو دریافت میکنه و به عنوان یک کلید در دیکشنری ذخیره میکنه. قبلش یه متغیر به نام index تعریف کردم که بعد از انتخاب یک حرف الفبا یک عدد به مقدارش اضافه میشه. بعدش هم اومدم گفتم وقتی حلقه تموم شد و البته کاربر دکمه help رو زد حرف بعدی که انتخاب کرده با توجه به متغیر index نمایش داده بشه. شمای ایونت بخش حلقه این شکلیه:
![[تصویر: evento.png]](http://s10.picofile.com/file/8394917468/evento.png)
(اگر تصویر لود نشده از
اینجا تصویر رو ببین)
شاید بپرسی اکسپرشن len و trim و loopindex کارشون چیه. اکسپرشن len تعداد کاراکترهای یک رشته رو میشماره و برمیگردونه و اکسپرشن trim فاصله های (Space) یک رشته رو حذف میکنه. مثلاً وقتی اکسپرشن trim رو روی رشته "Hello World!" اعمال کنی خروجی که بهت میده میشه "HelloWorld!". به این دلیل از trim استفاده کردم که فضاهای خالی تکست رو حذف کنه و بعد تعداد کاراکترها رو بشماره و حلقه به تعداد کاراکترهای اصلی انجام بشه. چون هر فاصله هم یک کاراکتر تلقی میشه. اکسپرشن loopindex هم کارش اینه که مشخص کنه در کدوم مرحله (فاز) از حلقه قرار داریم.
اگر دقت کرده باشی یک کلید اضافی در آخرین فاز حلقه تشکیل میشه که مقداری نداره و اون رو توی ایونت دوم مربوط به حلقه حذفش کردم. توی این ایونت از ساختار شرطی استفاده کردم. ساختار شرطی به صورت اکسپرشن در کانستراکت به این شکله:
کد:
در غیر اینصورت : اگر شرط برقرار بود انجام شود ? شرط
قبل از علامت سوال شرط خودم رو لحاظ کردم و گفتم اگر حلقه در فاز آخر خودش بود آخرین کلیدی که توسط شیء دیکشنری ساخته شده حذف بشه و چون در غیر اینصورتی در کار نیست (نقیض شرط در کار نیست) یک دابل کوتیشن خالی قرار دادم.
در ایونت شماره 39 هم گفتم که وقتی حلقه تمام شد با توجه به متغیر index حرف بعدی رو که در دیکشنری ذخیره شده رو به کاربر نمایش بده.
دانلود سورس