پروژه پایانی درس مبانی برنامه نویسی کامپیوتر مهلت تحویل 9 :بهمن ساعت 90:37 نکات کلی فایل های خود را در یک فلدر با عنوان Proj_STDID1_STDID2قرار داده و پس از فشرده سازی در ایمیلی با همین عنوان به آدرس hw.cpp.901@gmail.comارسال نمایید. به عنوان مثال اگر شماره دانشجویی گروه شما 76661199و 76096669است نام فایل ارسالی شما باید proj_91106677_90341004.zipباشد. مهلت ارسال اسامی اعضای گروه تا ساعت 90:37دوشنبه 69دی ماه است .اسامی اعضای گروه باید به آدرس hw.cpp.901@gmail.comارسال شود .نمرهی پروژهی گروههایی که پس از این تاریخ نام خود را اعالم کنند صفر درنظر گرفته میشود. مهلت تحویل پروژه ساعت 9 90:37بهمن بوده و به هیچ عنوان تمدید نخواهد شد. سؤاالت خود را با فرستادن ایمیل به آدرس cplusplus-90-1-g9@googlegroups.comمطرح کنید. هرگونه رونوشت ،برای منبع رونوشت و همچنین نسخه های رونویسی شده ،به اندازهی نمرهی پروژه نمره منفی در پی خواهد داشت. بازی چکرز در این قسمت بازی دو نفرهی چکرز 6و قواعد آن را به شما معرفی میکنیم .این بازی روی یک صفحهی شطرنجی 8×8انجام می شود .در ابتدای بازی مهرهها مطابق آنچه که در شکل 6نشان داده شده است به روی صفحه چیده میشوند. شکل .6نحوهی چینش مهرهها در آغاز بازی. هر یک از نفرات در نوبت خود میتواند یکی از مهره هایش را یک خانه جابجا کند ولی مهره ها همیشه باید در خانه های سفید باقی بمانند .همچنین هر کس باید مهره هایش را به سمت جلو (نسبت به خودش) حرکت دهد. مطابق با آنچه که در شکل 9نشان داده شده است ،اگر دو مهرهی غیر همرنگ به طور قطری در کنار هم قرار داشته باشند ،میتوان از روی مهرهی حریف پرید و آن را حذف کرد .البته این در حالتی است که پشت مهرهی حریف خالی باشد. شکل .9نحوهی زدن یک مهره در بازی چکرز. اگر کسی در نوبت خود بتواند مهرهی حریف را بزند ،باالجبار باید این کار را انجام بدهد .یعنی اگر امکان زدن مهرهی حریف وجود داشته باشد ،نمیتوان از زدن مهرهی وی صرف نظر کرد. Checkers 1 همان طور که در شطرنج ،اگر پیاده به سطر آخر برسد تبدیل به وزیر می شود ،در این بازی هم اگر مهرهای به سطر آخر برسد تبدیل به شاه میشود .برتری شاه این است که به عقب هم میتواند برگردد ولی مهرههای عادی فقط به سمت جلو حرکت میکنند. در نهایت هم ،کسی که مهرهای در زمین برایش باقی نمانده باشد ،بازنده است. نمونه ای از بازی: برای آشنایی بیشتر با قوانین بازی ،می توانید به اینجا مراجعه کنید .دقت کنید برای حرکت دادن مهره ها ،باید روی مهره کلیک کرده ،سپس روی خانه ی مقصد کلیک کنید .بازیکن اول کاربر و بازیکن دوم کامپیوتر است. شرح پروژه شما باید برای این پروژه ،یک محیط بازی پیاده سازی نمایید که کاربران بتوانند روی آن بازی کنند .به عنوان نمره اضافه ،می توانید یک بازیکن خودکار نیز داشته باشد که تا حدی هوشمند باشد .توجه کنید تابعی که محیط گرافیکی را برای شما نمایش میدهد ،در اختیارتان قرار میگیرد .این تابع 0آرگومان ورودی دارد: یک آرایه می گیرد که با مقدار های 6 ،6و 9و 0و 9پر شده اند 6 .یعنی خانهی خالی 6 ،خانهای که با مهرهی سفید پرشده و 9هم خانهای که با مهرهی قرمز پر شده 0 ،خانه ای که با مهره ی سفید شاه پر شده و 9خانه ای که با مهره ی قرمز شاه پر شده است .کافی است هنگام رسم محیط بازی ،این تابع را با آرگومان مناسب صدا کنید. یک متغیر که نشان دهندهی تعداد مهرههای سفید موجود در صفحه است. یک متغیر که نشان دهندهی تعداد مهرههای قرمز موجود در صفحه است. الگوی این تابع به صورت زیر است: ;)void draw (int ** board, int num_white, int num_red به طور کلی برنامه شامل دو قسمت است: رسم صفحهی بازی :این قسمت توسط تابعی که در اختیارتان قرار می گیرد پیاده سازی میشود. یک خط فرمان که حرکتهای هر بازیکن از آن گرفته میشود :سپس از ورودی آدرس دو خانه را میگیرد ،اولی موقعیت مهرهای است که باید حرکت کند و دومی موقعیتی که مهره پس از جابجایی به آن میرود .دقت کنید ،اگر قرار است دنبالهای از حرکات در یک گام انجام شود ،باید دنبالهای از آدرسها در ورودی وارد شود. همانگونه که در شکل 0نشان داده شده است ،نامگذاری خانهها مانند نامگذاری خانههای شطرنج صورت میگیرد .شماره سطر ها از 6تا 8و شمارهی ستون ها از Aتا Hاست. H G F E D C B A 1 2 3 4 5 6 7 8 شکل .0شیوهی نامگذاری خانههای صفحهی بازی. اگر کاربر حرکت غیر مجازی را در ورودی بدهد ،باید پیغام خطای مناسب چاپ کنید و منتظر ورودی جدید باشید .این پیغام عبارت است از: invalid Move, try again. همچنین در صورتی که کاربر مجبور به زدن مهره ای باشد ولی این کار را انجام ندهد باید پیغام خطای زیر چاپ شود: invalid Move, you must make a jump. دقت کنید پس از هر حرکت ،باید یک بار تابع drawرا ،که در باال در موردش توضیح داده شد ،صدا کنید. برای مثال دنباله ای از دستوراتی که در خط فرمان نوشته می شوند در زیر آمده است .توجه کنید خطوط سیاه ، خروجی و خطوط سبز ورودی هستند: first player’s turn: A6 B5 second player’s turn: B3 C4 first player’s turn: B5 B4 invalid Move, try again. B5 A4 second player’s turn: ... موارد اصلی پروژه: .6برای نوشتن پروژه حتما در مواقع لزوم از کامنت استفاده کنید. .9از نوشتن تمام متن برنامه در mainاکیدا خودداری کرده ،و حتما از توابع استفاده کنید. .0در هنگام حرکت ،همهی قوانین بازی باید چک شوند .اگر کاربر حرکتی را بر خالف قوانین بازی درخواست کند ،نباید انجام شود. .9از چاپ عبارات اضافی در خروجی خودداری کنید .هرگونه خروجی اضافه موجب کسر نمره خواهد شد. .3برای نام گذاری متغیر ها و توابع ،از نام های معنی دار استفاده کنید. .1حتما در برنامه ی خود از فاصله گذاری مناسب ،برای افزایش خوانایی برنامه استفاده کنید. .9به همراه کد خود ،یک فایل pdfبه عنوان مستندات پروژه ارسال کنید .این فایل باید شامل :خالصهای از الگوریتم ها و کتابخانههای استفاده شده ،توضیحاتی در مورد توابع و عملکرد هر کدام ،و دیگر موارد مشابه باشد. موارد اختیاری پروژه: پیاده سازی یک بازیکن( .که قوانین را به درستی رعایت کند) دقت کنید برنامه ی شما در حالت عادی، تنها ورودی ها را از کاربر می گیرد ،منظور از این قسمت ،پیاده سازی یک بازیکن است .اول کاربری است که پشت کامپیوتر نشسته و حرکات را وارد می کند اما بازیکن دوم کامپیوتر است. افزایش هوشمندی بازیکن موارد اجباری مربوط به گروه های سه نفره(:این مورد برای گروه های دو نفره به عنوان نمره اضافه در نظر گرفته می شود) اگر تعدادی از مهره های حریف چنان قرار داشته باشند که بازیکن بتواند با یکی از مهرههایش و به طور متوالی آن ها را بزند ،میتواند همهی آن ها را در یک نوبت بزند .مثال در شکل ،9اگر نوبت سفید باشد، باید بازی نشان داده شده را انجام دهد و دو مهره از حریف را حذف کند. شکل .9حرکتهای متوالی
© Copyright 2025 Paperzz