نوشته شده توسط
EbiPenMan
...از نظر دوستان استفاده كنم و اشتباهات و راه هاي بهتري اگه در نوشتن اين بازي بوده به من و بقيه بگن تا بتونيم سطح مون رو ارتقاء ببخشيم. اگه هم كسي خواست كه كاملش كنه چه بهتر چون اين سورس شامل هيچ حق قانوني براي كسي نيست و فقط اگه دوست داشتيد مي تونيد يه اسمي هم از اين سايت ببريد. اين اولين پروژه من در C# هست و من بيشتر در vb كار كردم. دوست دارم كه از نظرات حرفه اي شما استفاده كنم.
سلام.
این ایرادها، هنگام اجرای بازی به چشم میخوره:
- پس از اینکه یک مین منفجر شد، بازی باید متوقف بشه و کاربر امکان Click کردن روی خونه های جدید رو نداشته باشه.
- اگر قراره پنجره اصلی برنامه، کوچک و بزرگ بشه، باید محتویات Client Area هم بزرگ و کوچک بشه، نه اینکه صفحه رو Maximize کنم و هنوز در همون ناحیه قبلی محتویات صفحه نمایش داده بشه.
- وقتی روی خونه ای Click میکنم، Focus بصورت خودکار به یک خونه دیگه منتقل میشه.
- کلید Mouse روی هر خونه ای رها شد، اون خونه باید روشن بشه. نه اینکه وقتی کلید Mouse فشار داده شد، دیگه اهمیتی نداشته باشه که کجا رها بشه! چون ممکنه کاربر به اشتباه کلیک کرده باشه و بخواد کلید Mouse رو خارج از خونه های موجود رها کنه تا در واقع با اینکار، Click خودش رو Cancel کرده باشه.
- تغییر نامناسب صفحه، در صورت تغییر Theme.
- و ...
این ایرادها در Source دیده میشه:
- عدم استفاده از کلاس (یا کلاسهای) مشخصی برای اجرای کلاس مین یاب.
- عدم استفاده از Naming Convention مشخصی در کد. بعنوان مثال، نام یکی از توابع رو func_general_initialize_form گذاشتید که با هیچیک از اصول نامگذاری ها تطابق نداره.
- Precondition ها در ذهنتون بوده، و در کد آورده نشده.
- استفاده نامناسب از Timer، Array، as و ...
- نگهداری اطلاعات Config برنامه در فایل size mines.txt
- استفاده از تعداد زیادی Button برای اجرای برنامه. (درستش اینه که محتویات صفحه رو خودتون نقاشی میکردید، تا اینکه بخواهید از N تا Button استفاده کنید).
- if های تو در تو.
- شرطهای بی مورد، از جمله:
if (timer_sec.Enabled == false)
timer_sec.Enabled = true;
- عجیب و غریب بودن نحوه نوشتن کد! بعنوان مثال، جای نوشتن
for (int x = 0; x < int_x; x++)
{
for (int y = 0; y < int_y; y++)
{
if (ButtonArray[x, y].Visible == false)
ButtonArray[x, y].Visible = true;
}
}
می تونستید بنویسید:
for (int x = 0; x < int_x; x++)
for (int y = 0; y < int_y; y++)
ButtonArray[x, y].Visible = true;
چون شرطی که شما نوشتید، در واقع در درون Visible Property وجود داره، و اگر مقدار جدید تغییر نکرده باشه، خودش Return میشه. یا جای دیگه ای همچین چیزی نوشتید:
if (ButtonArray[x, y].Visible == false)
bo_check_win = true;
else
bo_check_win = false;
که بهتر بود مینوشتید:
bo_check_win = !ButtonArray[x, y].Visible;
که هم خواناتر هستش و هم جمع و جورتر.
و ...
پاورقی: با همه این تفاصیل، بعنوان اولین کار بد نیست.