پس بیایید راه‌حل برنامهٔ «حدس عدد» را بررسی کنیم.
چطور آن را می‌ساختید؟
خب، مسئله این است که باید از کاربر عدد را بپرسیم.
مثلاً: «عدد بین ۱ تا ۱۰۰ را که من به آن فکر می‌کنم حدس بزن.»
باشه.
بعد باید مطمئن شویم که خودِ عدد را داریم.
یعنی باید یک عدد مخفی داشته باشیم که کامپیوتر در ذهن دارد و همچنین متغیری برای حدس کاربر.
مثلاً int userGuess را تعریف می‌کنیم و آن را برابر صفر قرار می‌دهم.
پس این حدسِ کاربر خواهد بود.
و این عدد، عددی است که کامپیوتر در ذهن دارد و باید آن را حدس بزنیم.
حالا می‌توانیم آن را تصادفی کنیم.
این هم یک گزینه است.
اما فعلاً ساده نگهش می‌داریم.
پس کاری که می‌کنیم این است که بررسی می‌کنیم آیا حدسِ کاربر با عددِ مخفی برابر نیست.
می‌خواهیم به کاربر امکان دهیم حدسش را وارد کند.
اینجا می‌نویسیم «حدس خود را وارد کنید» و سپس مقدار `userGuess` را بازنویسی می‌کنیم.
یعنی مقدار ورودی کاربر را می‌خوانیم چون به‌صورت رشته است و سپس آن را تبدیل به `int` می‌کنیم.
درسته.
تبدیل می‌کنیم.int حالا آن را به
و این حدس کاربر را به‌دست می‌دهد.
بعد دوباره بررسی می‌کنیم آیا حدس کاربر برابر عددِ مخفی است یا نه.
اگر حدس کاربر همان عدد باشد — یا در حالت معمول‌تر، حدسِ کاربر از عددِ مخفی کمتر یا بیشتر است.
یعنی کمتر است یا بیشتر است نسبت به عدد مخفی.
پس اگر حدسِ کاربر کمتر بود به او می‌گوییم «کم است — دوباره تلاش کنید».
و اگر حدس خیلی بالا بود می‌گوییم «خیلی بالا».
دوباره تلاش کن.
مثلاً نمایش می‌دهیم: «خیلی بالا. دوباره تلاش کن.»
و در سایر موارد می‌دانیم که کاربر درست حدس زده است.
پس اینجا نمایش می‌دهیم «تبریک می‌گویم».
شما عدد را حدس زدید.
و شاید واقعاً درست حدس زده باشید.
چیزی شبیه به این، باشه؟
و این تا حد زیادی نرم‌افزار ماست.
خب حالا وقتی کاربر عدد را درست حدس زد چه اتفاقی می‌افتد؟
این بخش اجرا خواهد شد.
و دیگر حدسِ کاربر با عددِ مخفی متفاوت نخواهد بود.
پس آن‌ها یکسان خواهند شد.
و اگر یکسان شوند، این حلقهٔ while دیگر اجرا نخواهد شد.
پس ایدهٔ کلی همین است.
پس تا زمانی که این شرط برقرار باشد — یعنی حدسِ کاربر برابر عدد مخفی نباشد —
این حلقهٔ while اجرا خواهد شد؛ به محض اینکه برابر شوند، شرط دیگر برقرار نیست و حلقه متوقف می‌شود.
این شرط دیگر true نخواهد بود، چون ما از علامت تعجب (!) برای نشان دادن «مساوی نیست» استفاده کرده‌ایم.
که به معنی «مساوی نیست با secretNumber» است.
خب، برنامه را اجرا کنیم و ببینیم چه می‌شود.
خب آماده است.
یک عدد بین ۱ تا ۱۰۰ را حدس بزن.
من می‌گویم: ۵.
می‌گوید «خیلی کم است».
دوباره تلاش کن.
اجازه بده ۲۵ بگویم.
خیلی کم است.
دوباره تلاش کن.
بیایید ۵۵ را امتحان کنیم.
خیلی زیاد است.
دوباره تلاش کن، باشه؟
بزنیم ۵۰.
هنوز خیلی بالاست.
بزنیم ۴۲.
و می‌گوید: «تبریک می‌گویم».
عدد را درست حدس زدی.
پس تقریباً همینه.
حالا می‌توانید یک شمارنده اضافه کنید که تعداد تلاش‌ها را بشمارد.
و می‌توانید تعداد تلاش‌ها را اینجا هم نمایش دهید.
خب این را چطور انجام می‌دهیم؟
مثلاً می‌نویسیم: int counter = 0;
counter و هر بار که این بخش کد اجرا می‌شود، مقدار را افزایش می‌دهیم.
counter و وقتی کاربر درست حدس زد، می‌توانیم مقدار را نشان دهیم.
"It took you " + counter + " tries" می‌توانیم نمایش دهیم: تلاش».X — مثلاً «طول کشید:
فکر می‌کنم اینطوری نوشته می‌شود، خب بگذار برنامه را متوقف کنم.
پس می‌گوید: «تبریک می‌گویم».
عدد را درست حدس زدی.
می‌نویسد: «It took you counter tries» — من مطمئن نیستم.
شاید با y نوشته شود.
مطمئن نیستم.
باشه.
Guess the number.
من بین ۱ تا ۱۰۰ فکر می‌کنم.
پس دوباره انجام می‌دهیم.
۲۵، ۵۰، ۴۲.
و بعد می‌گوید: «تبریک می‌گویم».
عدد را درست حدس زدی، درست است؟
سه تلاش طول کشید.
عالی.
و من اینجا یک خط خالی دیگر اضافه می‌کنم.
اما خب این تقریباً برنامهٔ «حدس عدد» ما بود.
اپلیکیشن حدس عدد.
نسبتاً ساده و سرراست اما جالب است.
حالا می‌توانید از یک عدد تصادفی استفاده کنید.
قبلاً دیدیم چگونه از Random استفاده کنیم.
پس اگر می‌خواهید خودتان امتحان کنید، ویدیو را متوقف کنید و تلاش کنید.
من از کلاس Random استفاده می‌کنم: var random = new Random();
پس اینجا یک نمونه از کلاس Random می‌سازم.
و سپس عدد مخفی را با random.Next(...) مقداردهی می‌کنم.
بین 1 و 101 (یعنی ۱ تا ۱۰۰).
پس این را بالاتر انجام می‌دهم تا عدد یک‌بار تعیین شود و خودم هم عدد را ندانم.
پس اجراش می‌کنم و خودم عدد را نخواهم دانست.
ببینیم چند تلاش لازم دارم.
پس: ۵ خیلی کم؛ ۵۰ خیلی زیاد؛ ۳۰ خیلی کم؛ ۳۵ خیلی زیاد؛ باشه.
۳۲ خیلی کم است، باشه.
همان‌جا.
پس عدد را درست حدس زدید.
در ۶ تلاش موفق شدید.
خب، همین‌جا.
حالا یک برنامهٔ حدس عدد دارید.
که هر بار یکتا خواهد بود.
هر بار عدد متفاوت خواهد بود.
دیگر هر بار همان عدد نخواهد بود.
پس این برنامهٔ کوچک همین بود؛ ما یک اپلیکیشن «حدس عدد» ساختیم با تمام ویژگی‌هایی که تا حالا یاد گرفته‌ایم،
که خیلی خوب است.
شامل ایجاد یک عدد تصادفی هم می‌شود.
شامل انواع داده مثل اعداد صحیح هم هست.
while همچنین کار با کنسول، استفاده از حلقه‌های با شرط «مساوی نیست»، و عملیات افزایش را داشتیم.
همچنین تبدیل نوع (parsing) و گرفتن ورودی کاربر را استفاده کردیم.
از دستورات if، else if و else استفاده کردیم و حتی کمی الحاق رشته (concatenation) هم داشتیم.
و بله، تقریبا بیشترِ ویژگی‌هایی که تا الآن یاد گرفته‌ایم را پوشش دادیم.
نه همه‌شان، اما بیشترشان.
امیدوارم از این چالش کوچک لذت برده باشید.
یک پروژهٔ خیلی جالب دیگر هم برایتان دارم.
آماده‌ای؟
پس در ویدیوی بعد می‌بینمتان!