اگر نیاز به دانلود پروژه بازی با سی شارپ(c#) یا هر زبان برنامه نویسی دیگری داشتید سایت پر پروژه این امکان را برای شما فراهم کرده تا هر بازی ای که میخواهید را بتوانید بدست آورید و حتی آموزش ببینید که چگونه بازی را تغییر یا طراحی کنید
معرفی
این مقاله در مورد پیادهسازی این بازی در زبان برنامهنویسی C# است. این بازی سه سطح پیچیدگی ارائه میدهد: آسان، متوسط و پیچیده. کاربر میتواند جواب را برای چند ثانیه ببیند تا راهنمایی بگیرد. امیدوارم از بازی این بازی لذت ببرید. برای اجرای این برنامه نیاز به نصب .NET Framework بر روی کامپیوتر یا لپتاپ خود دارید.
قوانین سودوکو
این بازی قوانین سادهای دارد. بازی که در این مقاله ارائه شده است، اعداد را در یک ماتریس 9x9 مرتب میکند، که این شکل متداولترین شکل این بازی است. قوانین به شرح زیر است:
1. عدد در هر ردیف و ستون باید بین 1 تا 9 باشد و تنها یک بار ظاهر شود.
2. ماتریس 9x9 از نه ماتریس 3x3 ساخته شده است. بنابراین، عدد در هر یک از این زیرمجموعهها نیز باید بین 1 تا 9 باشد و تنها یک بار ظاهر شود.
حالا که قوانین را میشناسیم، بیایید پیادهسازی را ببینیم.
پیادهسازی
کلاس اصلی پیادهسازی این بازی، کلاس Sudoku است و در فایل Sudoku.cs پیادهسازی شده است. نمای بازی با استفاده از یک DataGrid پیادهسازی شده است و فرم اصلی برای پیادهسازی نمایش در فایل SudokuMainForm.cs قرار دارد. ایده طراحی اولیه این است که ابتدا جواب را تولید کنیم و سپس بر اساس سطح پیچیدگی، برخی از جاها را آشکار کنیم. در ابتدا، مدتی را صرف تولید یک جواب کردم با پر کردن مجموعهها که مستقل از یکدیگر با استفاده از اعداد تصادفی بین 1 تا 9 بودند. سپس، سعی کردم مجموعههای دیگر را پر کنم. این کار کمی پیچیده بود و وقت میگرفت. بنابراین، تصمیم گرفتم یک جواب منحصر به فرد را به عنوان پایه بگیرم و سپس سایر جوابهای منحصر به فرد را با تعویض ردیفها، ستونها، مجموعهها و برعکس کردن اعداد ایجاد کنم. به این ترتیب، میتوانستم هزاران ترکیب ایجاد کنم. متد GenerateGame() کلاس Sudoku از این تکنیک استفاده میکند. قسمت دیگر پیادهسازی نمایش است. من از DataGrid استفاده کردهام که یک کنترل بسیار مفید برای نمایش دادهها به صورت جدولی است. من از DataSet استفاده کردهام که آسانتر به DataGrid متصل میشود. چرا که من از آرایه دو بعدی برای نگهداری مجموعه مسئله و جواب استفاده کردهام، دو ویژگی ProblemSet و AnswerSet را که دادهها را به صورت آرایه دو بعدی به عنوان یک DataSet برمیگردانند، ارائه دادهام.
یک قسمت مهم دیگر از بازی، ارائه اعتبارات دادهای است. رویداد ColumnChanging DataTable بسیار مفید است و من از این رویداد برای ا
نجام اعتبارات دادهای مانند "عدد معتبر"، "موقعیت جواب تغییر نکرده" و "عدد تکراری نیست" استفاده کردهام. آرگومانهای رویداد این امکان را به ما میدهند که پیام خطای مناسب برای ستون متاثر را تنظیم کنیم. من یک کنترل دکمه برای نمایش جواب ارائه دادهام که جواب را برای چند ثانیه نمایش میدهد و سپس مسئله را دوباره برمیگرداند. شما میتوانید از این کنترل استفاده کنید اگر مسئله پیچیده باشد و نیاز به راهنمایی داشته باشید. بخش بعدی کد را توضیح میدهد. من تنها متدهای مهم را توضیح میدهم. شما میتوانید پیادهسازی کامل را با دانلود کد منبع با استفاده از لینکهای بالا مشاهده کنید.