بسم الله الرحمن الرحیم
آموزش ساخت بازی حدس کلمات(بازی HANGMAN) به زبان جاوا
مدرس:سعید قلندری
در این آموزش قصد داریم شیوه ساختن بازی HANGMAN به زبان جاوا که سورس کد آن را در سایت جاواپرو به صورت رایگان به اشتراک گذاشتیم بپردازیم.
بازی به این صورت است که یک کلمه به عنوان کلمه رمز در نظر گرفته میشود و کاربر باید این کلمه را حدس بزند، (در اینجا حدس به صورت کل کلمه نیست بلکه حرف به حرف است) در هر بار که حرفی از کلمه رمز اشتباه حدس زده شود، کاربر به یک مرحله از اعدام نزدیک میشود.(تعداد مراحل برای حدس کلمه 7 تا است. یعنی اگر تعداد حدس به هفت رسید بازی تمام هست و ما بازنده میشویم.)
مثل بازی آفتابه یک تصویر به عنوان کلمه رمز در نظر گرفته میشود و کاربر با کلیک کردن بر روی حروف الفبا(در اینجا حروف انگلیسی در نظر گرفته شده است.) حدس خودش را امتحان کند. به تصاویر زیر توجه کنید.
در تصویر(1) با زدن دکمه start_Game بازی شروع میشود.
همان طور که در تصویر(1) مشاهده میکنید، یک کلمه به صورت خط چین و تصویر همان کلمه در نظر گرفته شده است تعداد خط چین ها به اندازه طول کلمه است.
حال با کلیک کردن بر روی حروف حدس خودمان را امتحان مینماییم اگر حدس ما درست باشد آن حرف در جای خودش قرار میگیرد در غیر این صورت یک مرحله به اعدام نزدیک میشویم. مانند تصاویر(2) و (3):
ابتدا حرف i و بعد حرف n حدس زده ایم که هر دو درست هستند.
حال در تصویر(4) یک حرف اشتباه حدس میزنیم:
همانطور که مشاهده میکنید به دلیل اشتباه حدس زدن یک مرحله به اعدام نزدیک میشویم.در ادامه( مثلا میخواهیم بازنده شویم) چگونگی کار نشان داده میشود، به تصاویر زیر دقت نمایید:
حال قصد داریم این پروژه ساده را پیاده سازی کنیم.
ابتدا یک پروژه جدید ایجاد میکنیم. تصویر(9)
در تصویر(9) ،دکمه Next را زده به مرحله بعد میرویم....
• در تصویر(10) در قسمت 1 اسم دلخواهی برای پروژه خود در نظر میگیریم مثلا Hangman
• در قسمت 2 تصویر تیک مربوط به mainclass را برمیداریم و دکمه finish را میزنیم.
بعد مطابق تصاویر زیر عمل میکنیم:
در تصویر(11) روی قسمت مشخص شده (New File) کلیک کرده و مرحله زیر را انجام میدهیم:
در تصویر(12) ابتدا رو قسمت 1 کلیک کرده و بعد قسمت 2 را انتخاب میکنیم(JFrame Form)
و دکمه Next را میزنیم.
در تصویر(13)، در قسمت 1 تصویر یک نام دلخواه مثل اسم کلاس ها در نظر گرفته و با زدن دکمه finish
قسمت 2 تصویر کار را اتمام میکنیم و قسمت Form ما آماده میشود مانند تصویر(14):
در این بخش ظاهر پروژه خود را آماده میکنیم:
ایتدا مطابق تصاویر(15)و(16) یک Panel انتخاب کرده(قسمت1) و آن را بروی Fram قرار میدهیم وآن را قدری میکشیم تا کل عرض form خود را گرفته و تا تقریبا نصف ارتفاع Fram قرار گیرد(قسمت2)
(این طراحی دلخواهی است شما میتوانید بهتر از اینجانب طراحی نمایید.)
مطابق تصاویر(17) و (18) :
در بخش properties مربوط به Panel قسمت مربوط به background انتخاب نموده و رنگ سفید را انتخاب مینماییم
همانطور که در تصویر(19) مشاهده میکنید رنگ مربوط به JPanel سفید شده است:
در قسمت JPanel طراحی زیر را انجام میدهیم. به تصویر(20) دقت کنید:
توضیحات مربوط به تصویر(20):
همانطور که در تصویر(20) مشاهده میکنید از قسمت 1 چهار عدد JLable انتخاب میکنیم
JLable1: (قسمت2 تصویر) برای عکس مربوط به کلمه است.
JLable2: (قسمت3 تصویر) برای عکس مربوط به چوبه دار است.
JLable3: (قسمت4 تصویر) برای نوشته مربوط به اینکه ما برنده شدیم یا بازنده .
JLable4: (قسمت5 تصویر) برای نوشته مربوط به کلمه رمز مطابق تصویر است.
تصویر(21) را ببنید:
پروژه به صورت زیر است.
• دلیل اینکه از JLable استفاده میکنیم این است که JLable ویژگی برای عکس تحت عنوان icon دارد و هم برای اینکه بخواهیم رشته ای (String) بنویسیم.
بعد از اینکه JLable ها را انتخاب کردیم طبق تصویر(22) برای هر 4 عدد JLable کارهای زیر را اعمال میکنیم:
Text را پاک میکنیم و horizontalAlignment را برابر CENTER قرار میدهیم باعث میشود تصویر وسط JLable قرار گیرد.
بعد مثل تصویر (23) داریم:
در تصویر(23) ،در قسمت Code قسمت Variable Name یک نام دلخواهی قرار میدهیم. این نام باعث میشود در بخش کد نویسی شناخته شود( در جلوتر به آن میپردازیم)
برای سه JLable دیگر همین کارها را انجام میدهیم:
توجه داشته باشید در قسمت Code هر JLable قسمت Variable Name باید اسم های متفاوتی داشته باشد. یعنی هر JLable یا هر کدام از اجزای گرافیکی دیگر مثل دکمه ها و ... باید نام های متفاوتی داشته باشند.
برای قسمت های مربوط به چوبه دار و وضعیت برد یا باخت و قسمت کلمه رمز اسمهای متفاوتی در نظر میگیریم به تصاویر زیر دقت کنید:
تصویر(24) برای چوبه دار است.
تصویر زیر برای قسمت برنده یا بازنده است که ما اسم ان را status گذاشته ایم.
تصویر(26) نیز برای کلمه رمز است:
خب تا اینجای کار با طراحی مربوط به تصاویر آشنا شدیم حال به طراحی مربوط به دکمه ها میپردازیم.
به تصویر(26) بار دیگر نگاه کنید:
قسمت JPanel مربوط به تصاویر بود که طراحی آن تمام شد. حال در قسمت پایین JPanel
یک JPanel دیگری قرار میدهیم و رنگ background آن را نیز تغییر میدهیم و دکمه ها را در این قسمت میگذاریم:
در تصویر(27) jpanel2 که با رنگ سبز مشخص شده است محل قرارگیری دکمه ها است.
به تعداد حروف الفبا دکمه قرار میدهیم. برای هر کدام از دکمه های الفبا کارهای زیر را انجام میدهیم:
تصویر(29) اندازه دکمه را تعیین کرده ایم باری تمام دکمه های حروف این اندازه در نظر گرفته شده شما میتوانید اندازه های دیگری هم در نظر بگیرید.
تصویر(30) برای code دکمه a است که ما اسم آن را btnA قرار داده ایم.
حال برای سایر حروف همین کارها را میکنیم و در قسمت code، variable Name را متناسب با هر حرفی که بود قرار میدهیم.
b--------> btnB
c------ -> btnC
…
بعد از دکمه های مربوط به حروف دو دکمه یکی برای شروع بازی و دیگری برای reset کردن بازی قرار میدهیم.
طراحی تمام شد حال به سراغ کدنویسی آن میرویم.
از آنجا که قرار است با کلیک کردن بروی حروف، آن حرف کلیک شده مقدارش در کلمه قرار گیرد باید رویداد مربوط به کلیک کردن را فعال کنیم.
تمام دکمه های حروف را انتخاب میکنیم(با تک کلیک و نگه داشتن (Ctrl) و event مربوطه را فعال میکنیم: تصویر(32)
مطابق تصویر(32) در قسمت1 تمامی دکمه های حروف انتخاب شده اند در قسمت 2 وارد Events میشویم در قسمت 3 اسم دلخاهی برای events انتخاب میکنیم ما اسم ان را CliclLetters گذاشته ایم .بعد از این کار این عمل در قسمت source برنامه فعال میشود.
تصاویر زیر:
متدی که در تصویر(34) مشاهده میکنید جایی است که با هر بار کلیک کردن بروی دکمه های حروف محتوای آن حرف نمایش داده میشود.
حال مطابق تصاویر زیر برای هر دو دکمه start_Game و reset _Game eventsهایشان را فعال میکنیم: با کلیک راست کردن بر روی هر دو دکمه و مسیر زیر را انتخاب کردن.
بعد از این کار دو متد زیر در قسمت سورس برنامه فعال میشود:
الگوریتم برنامه:
برنامه به چه صورت انجام میشود.
به این صورت که با کلیک کردن بر روی دکمه Start_Game وارد بازی میشویم بعد به صورت تصادفی یک کلمه که درون آرایه ای قرار داده ایم انتخاب میشود و تصویر مربوط به آن کلمه نیز فعال میشود بعد به تعداد حروف کلمه خط چین در قسمت مربوط به کلمه رمز فعال میشود.
حال کاربر با کلیک بروی حروف حدس خود را امتحان میکند اگر درست بود آن حرف در محل خودش قرار میگیرد در غیر این صورت چوبه دار فعال میشود.
این کار تا 7 حدس ادامه میابد اگر تا این تعداد حدس کلمه را پیدا کردیم که برنده میشویم در غیر این صورت بازنده هستیم.
مراحل کد نویسی:
ابتدا طبق تصویر(38) تعدادی متغیر را تعریف میکنیم:
بررسی قسمتهای تعیین شده در تصویر(39):
قسمت 1:
کتابخانه swing برای کار کردن با اجزای گرافیکی import میکنیم.
کتابخانه util برای استفاده از کلاس Random import میکنیم.
قسمت 2:
سه آرایه یک بعدی تعریف کرده ایم.
آرایه imgHangman: از نوع ImageIcon است که قرار است تصاویر مربوط به چوبه دار درونش ذخیره شود.
آرایه imgWord : از نوع ImageIcon است که قرار است تصاویر مربوط به کلمات رمز درونش ذخیره شود.
آرایه buttons : از نوع JButtons بوده و 26 حرف الفبا درونش ذخیره میکنیم.
قسمت 3:
یک آرایه از نوع رشته ای تحت عنوان secret_word تعریف کرده ایم. درون این آرایه لغاتی تحت عنوان کلمه های رمز ذخیره میکنیم.
قسمت4:
دو آرایه از نوع کارکتری تعریف کرده ایم.
آرایه secret که از نوع کارکتر است بعد از اینکه یک کلمه به صورت تصادفی انتخاب شد به صورت آرایه ای از کارکترها تبدیل میکنیم و درون این آرایه ذخیره میکنیم.
آرایه blanks که از نوع کارکتر است به تعداد کارکترهای درون آرایه secret خط چین(-) قرار میدهیم.
قسمت5 :
از کلاس Random یک شی ایجاد میکنیم
و یک متغیر از نوع عدد صحیح به نام x تعریف کرده ایم
در قسمت جلوتر با نحوه کار با این دو متغیر آشنا میشویم.
قسمت 6 و7 و8 :
سه متغیر از نوع رشته تعریف کرده ایم.
secWord : کلمه رمز انتخاب شده درونش قرار میگیرد
dash : برای بار اول به تعدا حروف کلمه رمز خط چین قرار میگیرد
help : رشته ای است که هربار حرف صحیح حدس زده میشود با مقادیر آرایه blanks جمع میشود و درونش ذخیره میشود.
قمست 9 :
یک عدد صحیح به عنوان cnt در نظر گرفته میشود که تعداد دفعات حدس اشتباه درونش ذخیره میشود.
قسمت 10 :
متغیری از نوع Boolean است که درست یا اشتباه حدس زدن ما را تعیین میکند.
قسمت 11 :
این متغیر رشته ای برای حالت برنده شدن تعیین شده است.
با تمامی این قسمت ها در کد نویسی آشنا میشوید.
قدم بعدی باید درون سازنده کلاس برخی از این متغیرها مقداردهی شوند:
طبق تصاویر زیر:
قدم بعد این است که متد مربوط به کلیک کردن برای شروع بازی پیاده سازی کنیم:
حال متد مربوط به کلیک کردن بر روی حروف و حدس زدن را پیاده سازی میکنیم:
توضیحات قسمت های مشخص شده در تصویر(43):
قسمت 1:
این شرط باعث میشود که وقتی در lblStatus مقداری ثبت شود(در lblStatus حالت برنده شدن یا بازنده شدن ثبت میشود در تصویر(44) به زیر عکس چوبه دار دقت نمایید بار نگ سبز مشخص شده است)
با کلیک کردن بر روی سایر حروف دیگه اتفاقی نیفتد و کار به اتمام رسد.
قسمت 2 :
با این دستور با کلیک کردن بر روی حروف مقدار آن حرف درون دکمه btn ذخیره میگردد.
از آنجا که evt.getSource() از نوع object است با عمل cast کردن به نوع button تبدیل میکنیم.
قسمت 3:
هملن متغیرهایی هستند که در مراحل قبل در مورد انها توضیح داده شد.
قسمت 4 :
یک متغیر از نوع رشته تعریف کرده ایم. از آنجا که ما با کلیک کردن بر روی حروف مقدار آن حرف مورد نظر ما است با دستور getText() مقدارش را درون این متغیر ذخیره میکنیم.
از آنجا که حروف الفبا تک کارکتری میباشند با دستور charAt(0) به کارکتر تبدیل میکنیم.
قسمت 5:
هر گاه حدس ما درست باشد با استفاده از حلقه ای که ایجاد کردیم آن حرف درون آرایه blanks ذخیره میشود و مقدار flag برابر true میشود یعنی حدس ما صحیح بوده است
و آن دکمه ای که کلیک کردیم با دستور setvisible( false) محو میشود.
درون حلقه با یک جستجو درون آرایه secret که کلمه رمز درون آن است حدس ما را بررسی میکند.
حال ادامه کار مطابق تصویر(45) انجام میدهیم:
توضیحات قسمت های مشخص شده در تصویر(45):
قسمت 6 :
این شرط کنترل میکند که اگر حدس ما درست نبود یعنی مقدار flag=false است، واگر نقیض آن درست باشد تصویر مربوط به چوبه دار فعال میشود و یک مقدار به شمارنده cnt که تعداد دفعات اشتباه را بررسی میکند اضافه میشود.
قسمت 7:
اگر تعدا اشتباه به هفت رسید بازنده ایم و پیغام بازنده شدن را نمابش میدهد.
قسمت 8 :
در هربار مقدار win که برای تعیین کننده برنده شدن است مقدارش با محتوای آرایه blanks جمع میشود.
قسمت 9 :
شرطی است که حالت برنده شدن را بررسی میکند.
قسمت 10 :
این بخش برای نمایش حالت خط چین شده کلمه رمز است.
در آخر متد مربوط به reset _Game را پیاده سازی میکنیم که در این متد همه چیز به حالت اولیه برگردانده میشود. تصویر(47)
امیدوارم مطالب قابل فهم بوده باشد. با چندبار تکرار و تمرین به خوبی فرا میگیرید.
دوستدار جاوا – سعید قلندری
این جلسه آموزشی را بصورت کامل و مرتب شده در لینک زیر دانلود کنید:(در صورت خرابی لینک گزارش دهید)
لینک دانلود کتاب آموزش ساخت پروژه بازی حدس کلمات (Hangman)
لینک دانلود سورس کد پروژه بازی حدس کلمات (Hangman)
نشر این مطلب با ذکر منبع (لینک سایت) بلامانع است.
بستن *نام و نام خانوادگی * پست الکترونیک * متن پیام |
دوره های آموزشی برنامه نویسی
انجام پروژه های برنامه نویسی
تدریس خصوصی برنامه نویسی
بیش از 7 سال از فعالیت جاواپرو میگذرد
جاواپرو دارای مجوز نشر دیجیتال از وزارت فرهنگ و ارشاد اسلامی است
جهت ارتباط مستقیم با جاواپرو در واتساپ و تلگرام :
09301904690