اگر نیاز به دانلود پروژه بازی با سی شارپ(c#) یا هر زبان برنامه نویسی دیگری داشتید سایت پر پروژه این امکان را برای شما فراهم کرده تا هر بازی ای که میخواهید را بتوانید بدست آورید و حتی آموزش ببینید که چگونه بازی را تغییر یا طراحی کنید
معرفی
این یک پیادهسازی C# از بازی JawBreaker است زمینه
استفاده از کد
فایل فشرده حاوی کد منبع است که برای Visual Studio.NET کامپایل شده است. فقط فایل پروژه را باز کنید و آن را کامپایل کنید. فایل اجرایی ساخته شده به نام JawBreaker.exe است. شما میتوانید بازی را به راحتی اجرا کنید. تنها کافیست تعداد سلولهای مشابهی را کنار هم بیاورید و سپس آنها را حذف کنید (هر چه تعداد سلولها بیشتر باشد، امتیاز بالاتری کسب خواهید کرد). کلیک اول بلوکی از سلولهای همسایه مشابه را انتخاب میکند. اگر در هر مکانی درون بلوک انتخاب شده کلیک کنید، کل بلوک حذف میشود. هدف اصلی از بازی کسب امتیازات بیشتری است.
طراحی برنامه
برنامه به 3 کلاس تقسیم شده است:
1. کلاس Cell: کلاس Cell نمایانگر یک سلول در تخته بازی است. هر سلول دارای نوعی است که تعیین کننده رنگ آن است.
```csharp
int row;
int col;
int type;
public Cell(int row, int col, int type)
{
this.row = row;
this.col = col;
this.type = type;
}
```
2. کلاس Board: این کلاس وضعیت بازی را ذخیره میکند و دارای یک آرایه دو بعدی از اشیاء Cell میباشد. همچنین دو دسته کشی برای ذخیره Undo و Redo و امتیاز کلی (totalScore) وضعیت فعلی را دارد.
```csharp
private int rows;
private int cols;
private int types;
private Cell[,] data;
private ArrayList selected;
private Stack undoStack;
private Stack redoStack;
private int totalScore;
```
این کلاس دارای متدهایی برای انجام عملیاتهای مختلف از جمله حذف سلولها، انتخاب سلولها، انجام عملیات Undo و Redo، مقداردهی اولیه بازی و بررسی پایان بازی است.
3. کلاس MainForm: در این کلاس عمدهی نقاشیها انجام میشود. دو متد DrawBall و DrawBoard برای نقاشی توپها و تخته بازی تعریف شدهاند.
متد DrawBall یک توپ را بر روی شیء گرافیک داده شده نقاشی میکند. اگر پارامتر Selected صحیح باشد، پس زمینهای را میکشد و سپس توپ را نقاشی میکند.
متد DrawBoard برای تازه کردن تخته بازی فراخوانی میشود و در حال حاضر تمام صفحه را با محتوای فعلی تخته بازی مجدداً نقاشی میکند.
حرکتهای کاربر
حرکتهای کاربر توسط رویداد MouseDown کنترل شدهاند. این رویداد مختصری موقعیت ردیف و ستون را محاسبه کرده و بر اساس منطقهای که موس کل
یک شده است، سلول را تعیین میکند. سپس متد Select از کلاس Board را فرا میخواند. اگر سلول کنونی در لیست اشیاء انتخاب شده باشد، به این معنی است که کاربر میخواهد سلولهای کنونی را حذف کند.
در انتها، پس از هر حرکت، بررسی میشود که آیا بازی به پایان رسیده است یا خیر. اگر بازی به پایان رسیده باشد، یک گزینه برای شروع بازی جدید ارائه میشود.
نکات جالب
نکات جالبی در مورد این برنامه وجود دارد. به عنوان مثال، توجه به بهینهسازی متد Syncronize و نقاشی تخته بازی میتواند به بهبود عملکرد بازی کمک کند. همچنین به جای نقاشی کل تخته بازی، میتوان به نقاشی ناحیههایی که تغییر کردهاند اقدام کرد. این بازی از نظر هوش مصنوعی بسیار جالب است و ممکن است برای یافتن راهحل بهینه چالش خوبی باشد.