check home phone-call search send

سورس کد بازی دوز Tic Tac Toe به زبان پایتون

بارها در مورد یادگیری و آموزش برنامه نویسی با استفاده از سورس کد برنامه نویسی صحبت کردیم و به نظرم دیگر نیاز نیست در این زمینه صحبتی داشته باشیم. امروز هم یک سورس کد پایتون آماده کردیم که به نظرم می تواند به شما خیلی مطالب یاد دهد. در این مطلب سورس کد بازی دوز Tic Tac Toe به زبان پایتون رو آماده کردیم که در بعضی از سایت های برنامه نویسی به قیمت های خیلی زیادی فروخته می شود.

در این مدت سورس کدهای کمی در زمینه پایتون داخل سایت قرار دادیم که تصمیم گرفتیم بعد از این، در زمینه پایتون بیشتر فعال باشیم. البته منابع خوبی برای یادگیری این زبان دوست داشتنی داخل سایت است اما اگر میخواهید واقعا برنامه نویس خوبی شوید حتما از سورس کدها استفاده کنید. یک نکته هم در مورد سورس کدها متذکر شوم در ابتدای یادگیری برنامه نویسی، به هیچ عنوان سمت سورس کد نرید چون خیلی از مطالب رو نمیدونید و دچار مشکل می شوید. سعی کنید دو سه ماه برنامه نویسی کار کنید و بعد از اینکه خیلی از مطالب رو یاد گرفتید بعد کم کم از سورس کدهای کوچک شروع کنید.

سورس کد بازی دوز Tic Tac Toe به زبان پایتون

قبل از اینکه شروع به معرفی سورس کد بازی دوز Tic Tac Toe به زبان پایتون کنیم توضیحاتی در مورد خود بازی دوز یا Tic Tac Toe دهیم شاید بعضی از دوستان این بازی جذاب رو نشناسند. بر اساس چیزی که در ویکی پدیا امده، ایکس او (که در فارسی دوز هم نامیده می‌شود) یک بازی دو نفره‌است که به ‌وسیله یک قلم و کاغذ انجام می‌شود. نام این بازی به دلیل علامت‌های X و O است که در طول بازی استفاده می‌شود. برای آغاز این بازی در یک صفحه جدولی با ۳ ردیف و ۳ ستون رسم می‌شود و هر یک از طرفین یکی از علامت‌های X یا O را انتخاب می‌کنند و تا انتهای بازی برای پر کردن خانه‌های جدول از آن استفاده می‌کنند.

برای شروع بازی یکی از طرفین به قید قرعه علامت X یا O را که قبلاً انتخاب کرده در یکی از خانه‌های جدول ۹ خانه‌ای قرار می‌دهد. سپس نفر دوم علامت مربوط به خود را در خانه‌های دیگر که هنوز پر نشده‌اند قرار می‌دهد و پس از آن مجدداً نوبت نفر اول خواهد بود.

نقطه پایان بازی در هر مرحله جایی است که یکی از حریفان بتواند علامتی را که در ابتدای بازی انتخاب کرده در یکی از ردیف‌های افقی، عمودی یا قطری قرار دهد و در طول بازی هر یک از طرفین با قرار دادن علامت خود در مقابل علامت‌های حریف نباید اجازه دهند که حریف یک خط عمودی، افقی یا قطری را با علامت خود پر کند. تقریبا میشه گفت این بازی همان بازی دوز خودمان است که در مدارس هم خیلی انجام میدادیم.

 سورس کد بازی دوز Tic Tac Toe به زبان پایتون

در بخش بالا گفتیم بازی دوز یا همون Tic Tac Toe چیست؟ و نحوه بازی کردن آن هم رو گفتیم. حالا به سراغ سورس کد بازی دوز Tic Tac Toe به زبان پایتون بریم. در بخش زیر سورس کامل این بازی رو قرار دادیم و در انتهای همین صفحه می توانید این سورس رو به صورت رایگان هم دانلود کنید. لطفا از فروش این سورس کد بازی خوداری کنید تا همه بتوانند از آن استفاده کنند. 

from tkinter import *

import tkinter.messagebox
tk = Tk()
tk.title("Tic Tac Toe")

click = True

def checker(buttons):
    global click
    if buttons["text"] == " " and click == True:
        buttons["text"] = "X"
        click = False
    elif buttons["text"] == " " and click == False:
        buttons["text"] = "p"
        click = True

    elif(button1["text"] == "X" and button2["text"] == "X" and button3["text"] == "X" or
          button4["text"] == "X" and button5["text"] == "X" and button6["text"] == "X" or
          button7["text"] == "X" and button8["text"] == "X" and button9["text"] == "X" or
          button3["text"] == "X" and button5["text"] == "X" and button7["text"] == "X" or
          button1["text"] == "X" and button5["text"] == "X" and button9["text"] == "X" or
          button1["text"] == "X" and button4["text"] == "X" and button7["text"] == "X" or
          button2["text"] == "X" and button5["text"] == "X" and button8["text"] == "X" or
          button3["text"] == "X" and button6["text"] == "X" and button9["text"] == "X"):
          tkinter.messagebox.showinfo("Winner X", "You Won the game")


    elif (button1["text"] == "p" and button2["text"] == "p" and button3["text"] == "p" or
            button4["text"] == "p" and button5["text"] == "p" and button6["text"] == "p" or
            button7["text"] == "p" and button8["text"] == "p" and button9["text"] == "p" or
            button3["text"] == "p" and button5["text"] == "p" and button7["text"] == "p" or
            button1["text"] == "p" and button5["text"] == "p" and button9["text"] == "p" or
            button1["text"] == "p" and button4["text"] == "p" and button7["text"] == "p" or
            button2["text"] == "p" and button5["text"] == "p" and button8["text"] == "p" or
            button3["text"] == "p" and button6["text"] == "p" and button9["text"] == "p"):
            tkinter.messagebox.showinfo("Winner o", "You Won the game")

buttons=StringVar()

button1 = Button(tk,text= " " ,font=('Times 26 bold'), height = 4, width =8, command=lambda:checker(button1))

button1.grid(row=1, column=0, sticky = S+N+E+W)

button2 = Button(tk,text= " " , font=('Times 26 bold'), height = 4, width = 8 , command=lambda:checker(button2))

button2.grid(row = 1, column =1, sticky = S+N+E+W)

button3 = Button(tk,text= " " , font=('Times 26 bold'), height = 4, width = 8 , command=lambda:checker(button3))

button3.grid(row = 1, column =2, sticky = S+N+E+W)
    
button4 = Button(tk,text= " " , font=('Times 26 bold'), height = 4, width = 8 , command =lambda:checker(button4))
    
button4.grid(row = 2, column =0, sticky = S+N+E+W)

button5 = Button(tk,text= " " , font=('Times 26 bold'), height = 4, width = 8 , command=lambda:checker(button5))

button5.grid(row = 2, column =1, sticky = S+N+E+W)

button6 = Button(tk,text= " " , font=('Times 26 bold'), height = 4, width = 8 , command=lambda:checker(button6))

button6.grid(row = 2, column =2, sticky = S+N+E+W)

button7 = Button(tk,text= " " , font=('Times 26 bold'), height = 4, width = 8 , command=lambda:checker(button7))

button7.grid(row = 3, column =0, sticky = S+N+E+W)

button8 = Button(tk,text= " " , font=('Times 26 bold'), height = 4, width = 8 , command=lambda:checker(button8))

button8.grid(row = 3, column =1, sticky = S+N+E+W)
    
button9 = Button(tk,text= " " , font=('Times 26 bold'), height = 4, width = 8 , command=lambda:checker(button9))

button9.grid(row = 3, column =2, sticky = S+N+E+W)

tk.mainloop() 
 توجه: برای دانلود سورس کد بازی دوز Tic Tac Toe به زبان پایتون از جعبه (باکس دانلود) استفاده کنید.
 

دانلــود بـاکـــس

لینک های دانلود در این باکس قرار دارد
img

جهت مشاهده لینک های دانلود ابتدا وارد شده یا ثبت نام کنید

Avatar
پشتیبان سورس ایران 2180 مطلب منتشر شده

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

دیدگاه کاربران

تعداد دیدگاه های کاربران : 11 دیدگاه
Avatar
شبنمو رحمانی
پاسخ دهید

سلام اگه بخوایم تو این بازی یک طرف انسان و یکطرف سیستم بازی کنه چه کدی رو باید بزنیم؟؟؟؟

    Avatar
    پشتیبان سورس ایران در پاسخ شبنمو رحمانی
    پاسخ دهید

    برای اینکه در بازی دوز، یک طرف انسان و یک طرف سیستم بازی کند، باید کد زیر را اضافه کنیم:
    # تابعی برای انتخاب خانه خالی توسط سیستم
    def choose_empty_cell(board):
    # پیدا کردن اولین خانه خالی
    for row in range(3):
    for col in range(3):
    if board[row][col] == ” “:
    return row, col
    # اگر خانه خالی وجود نداشت، None را برمی‌گرداند
    return None

    # تابعی برای بازی سیستم
    def system_turn(board):
    # انتخاب خانه خالی توسط سیستم
    row, col = choose_empty_cell(board)
    # قرار دادن علامت سیستم در خانه انتخاب شده
    board[row][col] = “O”

    # تابعی برای شروع بازی
    def start_game():
    # ایجاد یک برد جدید
    board = [[” “, ” “, ” “], [” “, ” “, ” “], [” “, ” “, ” “]]
    # تعیین بازیکن اول
    current_player = “X”
    # شروع بازی
    while True:
    # نمایش برد
    print_board(board)
    # انجام حرکت بازیکن
    if current_player == “X”:
    # دریافت حرکت بازیکن
    row, col = get_player_move(board)
    else:
    # انجام حرکت سیستم
    system_turn(board)
    # بررسی وضعیت بازی
    if check_winner(board):
    # پایان بازی و نمایش برنده
    print(“برنده:”, current_player)
    break
    # تغییر بازیکن
    current_player = “X” if current_player == “O” else “O”

    # تابعی برای دریافت حرکت بازیکن
    def get_player_move(board):
    # دریافت ورودی از کاربر
    row = int(input(“ردیف: “))
    col = int(input(“ستون: “))
    # بررسی اینکه آیا خانه انتخاب شده خالی است
    if board[row][col] != ” “:
    print(“خانه انتخاب شده خالی نیست.”)
    return get_player_move(board)
    # برگرداندن حرکت بازیکن
    return row, col

    # تابعی برای بررسی اینکه آیا برنده وجود دارد یا خیر
    def check_winner(board):
    # بررسی ردیف‌ها
    for row in range(3):
    if board[row][0] == board[row][1] == board[row][2] != ” “:
    return board[row][0]
    # بررسی ستون‌ها
    for col in range(3):
    if board[0][col] == board[1][col] == board[2][col] != ” “:
    return board[0][col]
    # بررسی قطرها
    if board[0][0] == board[1][1] == board[2][2] != ” “:
    return board[0][0]
    if board[0][2] == board[1][1] == board[2][0] != ” “:
    return board[0][2]
    # بازگشت None اگر برنده وجود نداشت
    return None

    # تابعی برای چاپ برد
    def print_board(board):
    for row in board:
    print(“| ” + ” | “.join(row) + ” |”)

    # شروع بازی
    start_game()
    ———————————————–
    این کد به صورت زیر کار می کند:

    تابع choose_empty_cell() اولین خانه خالی در برد را پیدا می کند.
    تابع system_turn() علامت “O” را در خانه خالی انتخاب شده توسط سیستم قرار می دهد.
    تابع start_game() بازی را شروع می کند.
    تابع get_player_move() حرکت بازیکن را دریافت می کند.
    تابع check_winner() بررسی می کند که آیا برنده وجود دارد یا خیر.
    تابع print_board() برد را چاپ می کند.
    برای اینکه سیستم بتواند بازی را به صورت هوشمندانه انجام دهد، می‌توانیم از الگوریتم‌های هوش مصنوعی مانند minimax استفاده کنیم.
    ———————————————–
    موفق باشید

Avatar
کیانااااا
پاسخ دهید

from tkinter import *

import tkinter.messagebox
tk = Tk()
tk.title(“Tic Tac Toe”)

click = True

def checker(buttons):
global click
if buttons[“text”] == ” ” and click == True:
buttons[“text”] = “X”
click = False
elif buttons[“text”] == ” ” and click == False:
buttons[“text”] = “p”
click = True

سلام امکان داره این بخش و توضیح بدین

    Avatar
    پشتیبان سورس ایران در پاسخ کیانااااا
    پاسخ دهید

    سلام دوست عزیز
    این کد یک بازی “تیک تاک تو” ساده را با استفاده از کتابخانه‌ی tkinter در پایتون پیاده‌سازی می‌کند.
    ابتدا، کلاس Tk از tkinter برای ایجاد یک پنجره‌ی جدید استفاده شده است و عنوان آن به “Tic Tac Toe” تعیین شده است.
    سپس یک متغیر click با مقدار اولیه True ایجاد شده است. این متغیر برای تشخیص نوبت بازیکنان استفاده می‌شود، اگر برابر با True باشد به بازیکن اول نوبت داده شده و اگر برابر با False باشد به بازیکن دوم نوبت داده شده.
    تابع checker با ورودی یک دکمه (button) فراخوانی شده است. این تابع هدف آن بررسی کردن وضعیت دکمه‌ی ورودی و اعمال تغییرات لازم برای گیم‌بورد است.
    تابع ابتدا چک می‌کند که متن دکمه خالی است و نوبت بازیکن اول (مقدار True متغیر click) است یا نه. در صورتی که شرایط برقرار باشد، متن دکمه به “X” تغییر داده می‌شود و متغیر click به مقدار False تغییر می‌کند تا به بازیکن دوم نوبت داده شود.
    در غیر این صورت، تابع بررسی می‌کند که متن دکمه خالی است و نوبت بازیکن دوم (مقدار False متغیر click) است یا نه. در صورتی که شرایط برقرار باشد، متن دکمه به “p” تغییر داده می‌شود و متغیر click به مقدار True تغییر می‌کند تا به بازیکن اول نوبت داده شود.
    روند اجرای این تابع در هنگام کلیک روی دکمه‌های گیم‌بورد مشخص می‌شود.
    موفق باشید

Avatar
بروفي
پاسخ دهید

سلام بر سایت خوب سورس ایران .
مرسی که دکمه کپی هم گذاشتید.

Avatar
Amir
پاسخ دهید

سلام
خیلی ممنون بابت سورس
ولی سورس چند تا ایراد داشت🙁

Avatar
یه بنده خدایی
پاسخ دهید

سلام
لطفاً به کامنت ها جواب بدید

Avatar
علی
پاسخ دهید

چرا برنده رو اعلام نمیکنه

Avatar
mohammad4648
پاسخ دهید

ممنون از سایت خوبتون
فقط ی نکته : داخل سورس کد ی اشتباهی وجود داره .داخل تابع checker دوتا elif اخری باید if باشن


شما با موفقیت در خبرنامه ما عضو شدید