رسانه آموزشی پرونش
جستجو برای:
سبد خرید 0
  • خانه
  • بسته‌های آموزش‌ها
  • مقالات آموزشی
  • رویدادها
  • محصولات
  • تماس با ما
    • مشهد - شهرک غرب - ساختمان اکسین
      051-36000050
      info@pronesh.ir
      اینستاگرام
      کانال تلگرام
ورود
[suncode_otp_login_form]
گذرواژه خود را فراموش کرده اید؟
عضویت
[suncode_otp_registration_form]

داده های شخصی شما برای پشتیبانی از تجربه شما در این وب سایت، برای مدیریت دسترسی به حساب کاربری شما و برای اهداف دیگری که در privacy policy ما شرح داده می شود مورد استفاده قرار می گیرد.

رسانه آموزشی پرونش
  • خانه
  • بسته‌های آموزش‌ها
  • مقالات آموزشی
  • رویدادها
  • محصولات
  • تماس با ما
    • مشهد - شهرک غرب - ساختمان اکسین
      051-36000050
      info@pronesh.ir
      اینستاگرام
      کانال تلگرام
شروع کنید
آخرین اطلاعیه ها
لطفا برای نمایش اطلاعیه ها وارد شوید
0

پیاده سازی بازی Tic Tac Toe یا دوز

برنامه نویسی

پیاده سازی بازی Tic Tac Toe یا دوز

مقدمه

بازی Tic Tac Toe یک بازی دو نفره است که در یک ماتریس ۳x۳ انجام می‌شود. دو بازیکن به ترتیب علامت‌های X و O را در خانه‌های خالی ماتریس قرار می‌دهند. هدف هر بازیکن این است که سه علامت خود را به صورت افقی، عمودی یا قطری در یک ردیف قرار دهد. اگر تمام خانه‌های ماتریس پر شوند و هیچ بازیکنی نتواند سه علامت خود را در یک ردیف قرار دهد، بازی مساوی خواهد شد.

 

روش حل

برای پیاده‌سازی این بازی، مراحل زیر را دنبال می‌کنیم:

  1. تعریف ماتریس بازی: یک ماتریس ۳x۳ برای نمایش وضعیت بازی استفاده می‌شود.

  2. چرخش نوبت بازیکنان: بازیکنان به نوبت علامت‌های خود را در خانه‌های خالی ماتریس قرار می‌دهند.

  3. بررسی وضعیت بازی: پس از هر حرکت، بررسی می‌شود که آیا بازیکن فعلی برنده شده است یا خیر.

  4. بررسی مساوی بودن بازی: اگر تمام خانه‌های ماتریس پر شوند و هیچ بازیکنی برنده نشده باشد، بازی مساوی اعلام می‌شود.

  5. پایان بازی: بازی تا زمانی که یکی از بازیکنان برنده شود یا بازی مساوی شود، ادامه می‌یابد.

شبه کد

در ادامه با کمک یک شبه کد روند برنامه بازی Tic Tac Toe را برای شما شرح خواهیم داد:

				
					1. Initialize a 3x3 matrix with empty cells
2. Set current_player to 'X'
3. While True:
    4. Display the current state of the matrix
    5. Ask current_player to enter row and column
    6. If the selected cell is empty:
        7. Place current_player's mark in the selected cell
        8. If check_win(current_player) is True:
            9. Display "current_player wins!"
            10. Break the loop
        11. If check_draw() is True:
            12. Display "It's a draw!"
            13. Break the loop
        14. Switch current_player to the other player
    15. Else:
        16. Display "Cell is already occupied. Try again."
				
			

پیاده سازی در زبان‌های مختلف

بعد از این که الگوریتم این بازی برای شما شرح داده شده و شبه کد آن را برای شما نمایش دادیم نوبت پیاده سازی این بازی می رسد. بازی Tic Tac Toe از آنجایی که نیزمند تسلط به ماتریس ها توابع و پارامترهای آن‌ها، شرط ها حلقه‌ها و حلقه‌های تودرتو دارد یکی از پروژه های ثابت در مراحل آموزش تمام زبان های برنامه نویسی می‌باشد. لذا در ادامه سعی می کنیم این بازی را در زبان های پرکاربردی همچون Python, java, Cpp پیاده سازی نماییم:

پیاده سازی در ++C :

				
					#include <iostream>
using namespace std;

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

void displayBoard() {
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            cout << board[i][j];
            if (j < 2) cout << "|";
        }
        cout << endl;
        if (i < 2) cout << "-----" << endl;
    }
}

bool checkWin(char player) {
    for (int i = 0; i < 3; i++) {
        if (board[i][0] == player && board[i][1] == player && board[i][2] == player) return true;
        if (board[0][i] == player && board[1][i] == player && board[2][i] == player) return true;
    }
    if (board[0][0] == player && board[1][1] == player && board[2][2] == player) return true;
    if (board[0][2] == player && board[1][1] == player && board[2][0] == player) return true;
    return false;
}

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

int main() {
    int row, col;
    while (true) {
        displayBoard();
        cout << "Player " << currentPlayer << ", enter row (0-2) and column (0-2): ";
        cin >> row >> col;
        if (board[row][col] == ' ') {
            board[row][col] = currentPlayer;
            if (checkWin(currentPlayer)) {
                displayBoard();
                cout << "Player " << currentPlayer << " wins!" << endl;
                break;
            }
            if (checkDraw()) {
                displayBoard();
                cout << "It's a draw!" << endl;
                break;
            }
            currentPlayer = (currentPlayer == 'X') ? 'O' : 'X';
        } else {
            cout << "Cell is already occupied. Try again." << endl;
        }
    }
    return 0;
}
				
			

در برنامه بالا تابع displayBoard وظیفه ترسیم ماتریس در خروجی را برعهده دارد،‌ با کمک تابع checkWin وضعیت برد بازیکن مورد نظر را بررسی می کنیم که آیا در وضعیت برد قرار دارد یا خیر، در نهایت تابع checkDraw‌ بررسی می کند که آیا تمام خانه ها پرشده اند یا خیر.

پیاده سازی در Python :

				
					board = [[' ' for _ in range(3)] for _ in range(3)]
current_player = 'X'

def display_board():
    for row in board:
        print("|".join(row))
        print("-" * 5)

def check_win(player):
    for i in range(3):
        if all([cell == player for cell in board[i]]): return True
        if all([board[j][i] == player for j in range(3)]): return True
    if all([board[i][i] == player for i in range(3)]): return True
    if all([board[i][2 - i] == player for i in range(3)]): return True
    return False

def check_draw():
    return all([cell != ' ' for row in board for cell in row])

while True:
    display_board()
    row, col = map(int, input(f"Player {current_player}, enter row (0-2) and column (0-2): ").split())
    if board[row][col] == ' ':
        board[row][col] = current_player
        if check_win(current_player):
            display_board()
            print(f"Player {current_player} wins!")
            break
        if check_draw():
            display_board()
            print("It's a draw!")
            break
        current_player = 'O' if current_player == 'X' else 'X'
    else:
        print("Cell is already occupied. Try again.")
				
			

پیاده سازی در Java :

				
					import java.util.Scanner;

public class TicTacToe {
    private static char[][] board = new char[3][3];
    private static char currentPlayer = 'X';

    public static void main(String[] args) {
        initializeBoard();
        Scanner scanner = new Scanner(System.in);
        while (true) {
            displayBoard();
            System.out.print("Player " + currentPlayer + ", enter row (0-2) and column (0-2): ");
            int row = scanner.nextInt();
            int col = scanner.nextInt();
            if (board[row][col] == ' ') {
                board[row][col] = currentPlayer;
                if (checkWin(currentPlayer)) {
                    displayBoard();
                    System.out.println("Player " + currentPlayer + " wins!");
                    break;
                }
                if (checkDraw()) {
                    displayBoard();
                    System.out.println("It's a draw!");
                    break;
                }
                currentPlayer = (currentPlayer == 'X') ? 'O' : 'X';
            } else {
                System.out.println("Cell is already occupied. Try again.");
            }
        }
        scanner.close();
    }

    private static void initializeBoard() {
        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 3; j++) {
                board[i][j] = ' ';
            }
        }
    }

    private static void displayBoard() {
        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 3; j++) {
                System.out.print(board[i][j]);
                if (j < 2) System.out.print("|");
            }
            System.out.println();
            if (i < 2) System.out.println("-----");
        }
    }

    private static boolean checkWin(char player) {
        for (int i = 0; i < 3; i++) {
            if (board[i][0] == player && board[i][1] == player && board[i][2] == player) return true;
            if (board[0][i] == player && board[1][i] == player && board[2][i] == player) return true;
        }
        if (board[0][0] == player && board[1][1] == player && board[2][2] == player) return true;
        if (board[0][2] == player && board[1][1] == player && board[2][0] == player) return true;
        return false;
    }

    private static boolean checkDraw() {
        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 3; j++) {
                if (board[i][j] == ' ') return false;
            }
        }
        return true;
    }
}
				
			
برچسب ها: بازی دوزپروژه با سورس کدپروژه پایتونپروژه جاواپروژه سی
قبلی پروژه دفترچه تلفن
بعدی 10 مورد از برترین هوش مصنوعی‌های 2025

دیدگاهتان را بنویسید لغو پاسخ

جستجو برای:
پشتیبانی
دسته‌ها
  • برنامه نویسی
  • عمومی
  • هوش مصنوعی
برچسب‌ها
ai ChatGPT copilot json python spyder xml آموزش ChatGPT آموزش برنامه نویسی چند نخی اسپایدر بازی دوز دستیار هوشمند سورس کد مدیریت فایل نصب هوش مصنوعی ٍExcel درپایتون پایتون پردازش تصویر پروژه پروژه c++ پروژه java پروژه python پروژه با سورس کد پروژه جاوا پروژه دفترچه تلفن پروژه سی پروژه ماشین حساب پروژه پایتون چت جی پی تی
رسانه آموزش آنلاین پرونش قصد دارد با همکاری انشارات هوش‌آموز یکی از بهترین و کاراترین مراکز آموزشی در ضمینه علوم کامپیوتر را با استفاده از منابع معتبر، به صورت کامل کاربردی و پروژه محور، با هدف آموزش جهت ورودی به بازار کار در اختیار علاقمندان قرار دهد. از شما درخواست می‌کنیم با استفاده قانونی از محصولات این سایت ما را در راستای رسیدن به این منظور یاری کنید.
دسترسی سریع
  • خانه
  • دوره ها
  • اخبار
  • تماس با ما
خبرنامه

چیزی را از دست ندهید، ثبت نام کنید و در مورد شرکت ما مطلع باشید.

نمادها
© 1404. رسانه آموزشی پرونش Pronesh

هوش مصنوعی

  • 11 دوره

حل تمرین

  • 2 دوره

متلب

  • 12 دوره

++C/C

  • 1 دوره

پایتون

  • 2 دوره

برنامه نویسی

  • 10 نوشته

عمومی

  • 1 نوشته

هوش مصنوعی

  • 6 نوشته
برای مشاهده خریدهای خود باید وارد حساب کاربری خود شوید
Facebook Twitter Youtube Instagram Whatsapp