سورس کد بازی حدس اعداد با سی شارپ: راهنمای جامع و کامل
بازی حدس اعداد یکی از بازیهای ساده و محبوب است که اکثر برنامهنویسان مبتدی و حرفهای آن را ترجیح میدهند تا مهارتهای برنامهنویسی خود را در زبان سی شارپ تقویت کنند. این بازی، یک تمرین عالی برای فهم مفاهیم پایهای مانند حلقهها، شرطها، تصادفیسازی و ورودی/خروجی است. در ادامه، به صورت جامع و مفصل، به تحلیل کامل سورس کد این بازی، ساختار آن، و نکات مهم در طراحی و پیادهسازی آن میپردازیم.
---
مقدمهای بر بازی حدس اعداد
هدف اصلی بازی، این است که کاربر عدد تصادفی ساخته شده توسط برنامه را حدس بزند. برنامه، با هر حدس کاربر، پاسخ میدهد که عدد مورد نظر بزرگتر، کوچکتر، یا مساوی حدس کاربر است. این روند ادامه پیدا میکند تا کاربر بتواند عدد صحیح را حدس بزند و بازی به پایان برسد. در این فرآیند، مواردی مانند تعداد تلاشهای کاربر، پیامهای راهنمایی، و کنترل صحت ورودیها بسیار اهمیت دارند.
---
ساختار کلی سورس کد
در طراحی این بازی، چند بخش کلیدی وجود دارند که باید در نظر گرفته شوند:
1. تعریف متغیرها: شامل عدد تصادفی، حدس کاربر، تعداد تلاشها و سایر متغیرهای مورد نیاز.
2. تولید عدد تصادفی: با استفاده از کلاس `Random` در سی شارپ.
3. حلقه بازی: که تا زمانی ادامه دارد که کاربر عدد صحیح را حدس بزند یا تعداد تلاشها به حد مشخصی برسد.
4. دریافت ورودی کاربر: از طریق کنسول.
5. بررسی حدس کاربر: مقایسه با عدد تصادفی و ارائه پیام مناسب.
6. پایان بازی: اعلام نتیجه و تعداد تلاشها.
---
کد نمونه و تحلیل قسمت به قسمت
در ادامه، نمونه سورس کد کامل بازی حدس اعداد را مشاهده میکنید، سپس هر قسمت را به صورت تفصیلی بررسی میکنیم:
csharp
using System;
namespace GuessNumberGame
{
class Program
{
static void Main(string[] args)
{
Random rnd = new Random();
int secretNumber = rnd.Next(1, 101); // عدد تصادفی بین 1 تا 100
int attempts = 0;
int userGuess = 0;
Console.WriteLine("به بازی حدس اعداد خوش آمدید!");
Console.WriteLine("من یک عدد بین 1 تا 100 دارم. سعی کنید آن را حدس بزنید.");
do
{
Console.Write("حدس شما: ");
string input = Console.ReadLine();
if (!int.TryParse(input, out userGuess))
{
Console.WriteLine("لطفاً یک عدد معتبر وارد کنید!");
continue; // ادامه حلقه بدون افزایش تلاش
}
attempts++;
if (userGuess > secretNumber)
{
Console.WriteLine("عدد مورد نظر کوچکتر است!");
}
else if (userGuess < secretNumber)
{
Console.WriteLine("عدد مورد نظر بزرگتر است!");
}
else
{
Console.WriteLine($"آفرین! شما عدد را در {attempts} تلاش حدس زدید.");
}
} while (userGuess != secretNumber);
Console.WriteLine("بازی تمام شد. متشکریم از بازی شما!");
}
}
}
---
تحلیل کامل سورس کد
1. تعریف فضاهای نام و کلاسها
در ابتدای برنامه، فضای نام `System` وارد شده است که شامل کلاسهای پایهای نظیر `Console` و `Random` است. کلاس `Program`، کلاس اصلی است که تابع `Main` در آن قرار دارد و نقطه شروع برنامه محسوب میشود.
2. ایجاد نمونهای از کلاس Random
csharp
Random rnd = new Random();
در این قسمت، یک نمونه از کلاس `Random` ساخته میشود که وظیفه تولید اعداد تصادفی را دارد. در ادامه، برای تعیین عدد مخفی از متد `Next` استفاده میشود.
3. تولید عدد تصادفی
csharp
int secretNumber = rnd.Next(1, 101);
کد بالا، عدد تصادفی بین 1 تا 100 تولید میکند. توجه داشته باشید که چون `Next` عدد را تا یک واحد قبل از حد بالا تولید میکند، مقدار بالا باید 101 باشد.
4. متغیرهای کمکی
csharp
int attempts = 0;
int userGuess = 0;
متغیر `attempts` برای شمارش تعداد تلاشهای کاربر است و `userGuess` برای نگهداری حدس کاربر.
5. پیامهای خوشآمدگویی و توضیحات
دو پیام در کنسول نمایش داده میشود، که کاربر را راهنمایی میکند و هدف بازی را مشخص میسازد.
6. حلقه `do-while`
حلقه اصلی بازی است که تا زمانی ادامه دارد که کاربر عدد صحیح را حدس نزده باشد.
csharp
do
{
// دریافت ورودی و پردازش
}
while (userGuess != secretNumber);
این ساختار تضمین میکند حداقل یک بار اجرا شود و بازی تا پایان ادامه یابد.
7. دریافت ورودی کاربر
csharp
string input = Console.ReadLine();
کاربر باید عدد را در کنسول وارد کند. سپس با `int.TryParse`، صحت ورودی بررسی میشود.
8. بررسی ورودی
اگر ورودی عدد نباشد، پیام خطا نشان داده میشود و حلقه ادامه مییابد بدون اینکه تعداد تلاشها افزایش یابد.
csharp
if (!int.TryParse(input, out userGuess))
{
Console.WriteLine("لطفاً یک عدد معتبر وارد کنید!");
continue;
}
9. افزایش شمارش تلاشها
در صورت صحت ورودی، تلاشها افزایش مییابد.
csharp
attempts++;
10. مقایسه حدس کاربر با عدد مخفی
در این قسمت، سه حالت وجود دارد:
- اگر حدس بزرگتر باشد، پیام "عدد مورد نظر کوچکتر است!" نمایش داده میشود.
- اگر حدس کمتر باشد، پیام "عدد مورد نظر بزرگتر است!" نمایش داده میشود.
- اگر برابر باشد، پیام تبریک و تعداد تلاشها نمایش داده میشود و حلقه خاتمه مییابد.
csharp
if (userGuess > secretNumber)
{
Console.WriteLine("عدد مورد نظر کوچکتر است!");
}
else if (userGuess < secretNumber)
{
Console.WriteLine("عدد مورد نظر بزرگتر است!");
}
else
{
Console.WriteLine($"آفرین! شما عدد را در {attempts} تلاش حدس زدید.");
}
---
نکات مهم و بهبودهای ممکن
- اضافه کردن محدودیت تلاش: میتوان محدودیت تعداد تلاشها را اضافه کرد تا بازی چالشبرانگیزتر شود.
- ایجاد رابط گرافیکی: به جای کنسول، میتوان از ویندوز فرم یا WPF استفاده کرد تا رابط کاربری بهتری ارائه داد.
- ذخیره رکوردها: میتوان رکورد کمترین تعداد تلاشها را ذخیره و نمایش داد.
- پشتیبانی از اعداد منفی: اگر خواستید، میتوانید بازی را گسترش دهید تا اعداد منفی هم شامل شوند.
---
جمعبندی
در نهایت، سورس کد بازی حدس اعداد با سی شارپ، نمونهای عالی برای شروع و تمرین برنامهنویسی است. این برنامه، مفاهیم پایهای مانند حلقهها، شرطها، ورودی و خروجی، تولید اعداد تصادفی و کنترل خطا را به خوبی نشان میدهد. همچنین، با افزودن امکانات جدید و بهبودهای بیشتر، میتوان این بازی را به یک پروژه کامل و جذاب تبدیل کرد.
---
اگر سوال دیگری دارید یا نیاز به نمونههای پیشرفتهتر دارید، حتماً بگویید.
سورس کد بازی حدس اعداد با سی شارپ
بازی حدس اعداد با زبان سی شارپ(.net-core).
حدس عدد 4 رقمی
ارقام تکرای نباشند و با صفر شروع نشود
اگر رقم وارد شده در عدد وجود داشت و در جای اصلی قرار گرفته بود رنگ آن سبز میشود و اگر در جای اصلی نبود به رنگ زرد در میآید در غیر این صورت به رنگ قرمز در میآید، این روند ادامه پیدا میکند تا کل ارقام به رنگ سبز در بیاید و برنده بازی شوید.
برای دانلود اینجا کلیک فرمایید
برای دانلود کردن به لینک بالای کلیک کرده تا از سایت اصلی دانلود فرمایید.
