تمرین ++c بازی دوز

دسته بندی : /


تعداد فروش

0 دانشجو

پرسش و پاسخ ها

0 کاربر

تاریخ انتشار

23 تیر 1402

سطح تمرین

متوسط

در این پست قصد داریم تمرین ++c بازی دوز را بررسی و پیاده سازی نماییم.

سوال: بازی دوز یا همان xo را در سی پلاس پلاس پیاده سازی نمایید؟

بازی دوز چگونه انجام میشود؟

بازی دوز یا XO یک بازی ساده و محبوب است که به صورت دو نفره انجام میشود.

در این بازی، یک جدول به صورت ۳ در ۳ تعریف می شود.

بازیکنان به ترتیب نوبت نقش X,O را در خانه ها قرار میدهند تا در نهایت یک نفر برنده بازی شود.

دقت کنید که ممکن است این بازی مساوی هم تمام شود.

در صورتی بازی مساوی تمام میشود که تمامی خانه ها پر شود و کسی دوز نکند و یا دیگر امکان دوز کردن وجود نداشته باشد.

شما میتوانید پروژه بازی دوز در پایتون را نیز مشاهده نمایید.

تمرین ++c بازی دوز

دمو بازی دوز در سی پلاس پلاس

 

پیاده سازی تمرین بازی دوز در سی پلاس پلاس

آموزش و انجام پروژه های برنامه نویسی
وفایی مقدم
0936-328-6141

در این تمرین ++c بازی دوز را به صورت مرحله مرحله پیاده سازی میکنیم.

نکات هر مرحله را مطرح و کد های هر بخش را در اینجا قرار میدهیم.

برد بازی دوز

در اولین قدم باید برد بازی را تشکیل دهیم که شامل یک آرایه از کاراکتر ها میباشد.

دقت کنید که این آرایه به صورت دو بعدی و 3 در 3 میباشد.

char board[3][3] = {{' ', ' ', ' '}, {' ', ' ', ' '}, {' ', ' ', ' '}};

هر کدام از خانه های آرایه board فعلا به صورت خالی میباشد تا با انتخاب کاربر پر شوند.

رسم برد بازی

در قدم بعدی باید بردی که تعریف کردیم را بر روی صفحه نمایش دهیم.

چون قرار است هر سری وضعیت پر شدن خانه های برد را بر روی صفحه نمایش دهیم از یک تابع استفاده میکنیم.

تابع را به صورت زیر تعریف میکنیم:

void drawBoard() {
    cout << "  1 | 2 | 3 " << endl;
    cout << " -----------" << endl;
    cout << "1| " << board[0][0] << " | " << board[0][1] << " | " << board[0][2] << " |" << endl;
    cout << " -----------" << endl;
    cout << "2| " << board[1][0] << " | " << board[1][1] << " | " << board[1][2] << " |" << endl;
    cout << " -----------" << endl;
    cout << "3| " << board[2][0] << " | " << board[2][1] << " | " << board[2][2] << " |" << endl;
    cout << " -----------" << endl;
}

دقت کنید که قرار دادن – و | برای تنظیم نمایش بهتر برد بر روی صفحه میباشد.

تمرین مرتبط: پروژه بازی مافیا

بررسی برنده شدن کاربران

در قدم بعدی ما نیاز به تابعی داریم تا برنده شدن هر یک از کاربران را بسنجیم.

به همین خاطر از تابع checkwin برای بررسی برنده استفاده میکنیم.

ما باید تابع را طوری تعریف کنیم که به عنوان ورودی X یا O را دریافت کند و سپس حالات مختلف دوز را بررسی کند.

یعنی ممکن است یک نفر یا به صورت افقی یا عمودی یا ضربدری دوز کرده باشد پس تمامی حالات را بررسی میکنیم.

کد این تابع به صورت زیر میباشد:

بررسی تساوی شدن بازی

در ادامه تمرین ++c بازی دوز باید بررسی کنیم که بازی تساوی تمام میشود یا خیر.

یعنی ممکن است دو بازی کننده نتوانند دوز کنند پس در این صورت بازی مساوی تمام میشود.

ما در این تمرین ++c با کمک تابع isTie تشخیص میدهیم که بازی مساوی شده یا خیر.

کد تابع isTie به صورت زیر میباشد:

bool isTie() {
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            if (board[i][j] == ' ') {
                return false;
            }
        }
    }
    return true;
}

در اصل ما با این تابع بررسی میکنیم خانه ی خالی وجود دارد یا خیر.

پیشنهاد جذاب: پروژه چاپ فرفره در سی پلاس پلاس

سورس کد کامل بازی دوز در سی پلاس پلاس

در ادامه تمرین ++c بازی دوز ابتدا سورس کد بخش main را شرح و در انتها پس از ثبت نام سورس کد کامل بازی قابل مشاهده میباشد.

سورس کد بخش main بازی دوز

در این بخش سورس کد main بازی را شرح میدهیم.

int main() {
    char currentPlayer = 'X';
    int row, col;
    bool gameover = false;
    while (!gameover) {
        drawBoard();
        cout << "Player " << currentPlayer << " turn." << endl;
        cout << "Enter row (1-3): ";
        cin >> row;
        cout << "Enter column (1-3): ";
        cin >> col;
        if (board[row-1][col-1] == ' ') {
            board[row-1][col-1] = currentPlayer;
            if (checkWin(currentPlayer)) {
                cout << "Player " << currentPlayer << " wins!" << endl;
                gameover = true;
            } else if (isTie()) {
                cout << "Tie game!" << endl;
                gameover = true;
            } else {
                currentPlayer = (currentPlayer == 'X') ? 'O' : 'X';
            }
        } else {
            cout << "That space is already taken. Please try again." << endl;
        }
    }
    drawBoard();
    return 0;
}

همانطور که مشاهده میکنید متغییری از نوع bool بنام gameover داریم که برای تشخیص اتمام بازی میباشد.

یعنی تا زمانی که این متغییر false بازی تمام نمیشود.

در هر دوز از بازی تابع drawboard فراخوانی میشود بدین معنا که هر دور برد بازی چاپ میشود تا وضعیت را ببینیم.

سپس توسط شرط زیر بررسی میشود که آن خانه ای که کاربر انتخاب کرده پر است یا خالی.

if (board[row-1][col-1] == ' ')

این بدین معنا میباشد که کاربر حق ندارد در خانه های پر شده مقدار دیگری قرار دهد.

در نهایت با کمک تابع checkwin برنده بازی مشخص و چاپ میشود.

کد بازی دوز xo

در آخرین بخش از تمرین ++c بازی دوز سورس کد کامل بازی را قرار میدهیم.

از بخش تمرین سی پلاس پلاس میتوانید مجموعه تمرین های رایگان و با جواب را مشاهده نمایید.

پرسش و پاسخ ها

هنوز بررسی‌ای ثبت نشده است.

اولین کسی باشید که دیدگاهی می نویسد “تمرین ++c بازی دوز”

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

تمرینات مشابه

پروژه sql دیجی کالا

پروژه sql دیجی کالا

  • استادیار: وفایی مقدم
  • قیمت: 50,000 تومان
  • نوع آموزش: ویدیویی
  • سطح تمرین : متوسط
پروژه نمایش دمای هوا از طریق گوگل

پروژه نمایش دمای هوا از طریق گوگل

  • استادیار: وفایی مقدم
  • قیمت: 50,000 تومان
  • نوع آموزش: ویدیویی
  • سطح تمرین : متوسط
پروژه ساختمان داده بانک یاب

پروژه ساختمان داده بانک یاب

  • استادیار: وفایی مقدم
  • قیمت: 60,000 تومان
  • نوع آموزش: ویدیویی
  • سطح تمرین : سخت
تمرین چند ضلعی در سی شارپ

تمرین چند ضلعی در سی شارپ

  • استادیار: وفایی مقدم
  • قیمت: رایگان
  • نوع آموزش: ویدیویی
  • سطح تمرین : متوسط
تمرین singleton در سی شارپ

تمرین singleton در سی شارپ

  • استادیار: وفایی مقدم
  • قیمت: رایگان
  • نوع آموزش: ویدیویی
  • سطح تمرین : متوسط
محاسبه شیب پاره خط در سی شارپ

محاسبه شیب پاره خط در سی شارپ

  • استادیار: وفایی مقدم
  • قیمت: 35,000 تومان
  • نوع آموزش: ویدیویی
  • سطح تمرین : متوسط
پروژه محاسبه عملگر های بیتی در سی شارپ

پروژه محاسبه عملگر های بیتی در سی شارپ

  • استادیار: وفایی مقدم
  • قیمت: 50,000 تومان
  • نوع آموزش: ویدیویی
  • سطح تمرین : متوسط
22 مثال الگوریتم از کتاب الگوریتم مجتمع فنی

22 مثال الگوریتم از کتاب الگوریتم مجتمع فنی

  • استادیار: وفایی مقدم
  • قیمت: رایگان
  • نوع آموزش: ویدیویی
  • سطح تمرین : سخت