بارها در مورد یادگیری و آموزش برنامه نویسی با استفاده از سورس کد برنامه نویسی صحبت کردیم و به نظرم دیگر نیاز نیست در این زمینه صحبتی داشته باشیم. امروز هم یک سورس کد پایتون آماده کردیم که به نظرم می تواند به شما خیلی مطالب یاد دهد. در این مطلب سورس کد بازی دوز 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 به زبان پایتون از جعبه (باکس دانلود) استفاده کنید.
دیدگاه کاربران
تعداد دیدگاه های کاربران : 11 دیدگاهسلام اگه بخوایم تو این بازی یک طرف انسان و یکطرف سیستم بازی کنه چه کدی رو باید بزنیم؟؟؟؟
برای اینکه در بازی دوز، یک طرف انسان و یک طرف سیستم بازی کند، باید کد زیر را اضافه کنیم:
# تابعی برای انتخاب خانه خالی توسط سیستم
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 استفاده کنیم.
———————————————–
موفق باشید
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
سلام امکان داره این بخش و توضیح بدین
سلام دوست عزیز
این کد یک بازی “تیک تاک تو” ساده را با استفاده از کتابخانهی tkinter در پایتون پیادهسازی میکند.
ابتدا، کلاس Tk از tkinter برای ایجاد یک پنجرهی جدید استفاده شده است و عنوان آن به “Tic Tac Toe” تعیین شده است.
سپس یک متغیر click با مقدار اولیه True ایجاد شده است. این متغیر برای تشخیص نوبت بازیکنان استفاده میشود، اگر برابر با True باشد به بازیکن اول نوبت داده شده و اگر برابر با False باشد به بازیکن دوم نوبت داده شده.
تابع checker با ورودی یک دکمه (button) فراخوانی شده است. این تابع هدف آن بررسی کردن وضعیت دکمهی ورودی و اعمال تغییرات لازم برای گیمبورد است.
تابع ابتدا چک میکند که متن دکمه خالی است و نوبت بازیکن اول (مقدار True متغیر click) است یا نه. در صورتی که شرایط برقرار باشد، متن دکمه به “X” تغییر داده میشود و متغیر click به مقدار False تغییر میکند تا به بازیکن دوم نوبت داده شود.
در غیر این صورت، تابع بررسی میکند که متن دکمه خالی است و نوبت بازیکن دوم (مقدار False متغیر click) است یا نه. در صورتی که شرایط برقرار باشد، متن دکمه به “p” تغییر داده میشود و متغیر click به مقدار True تغییر میکند تا به بازیکن اول نوبت داده شود.
روند اجرای این تابع در هنگام کلیک روی دکمههای گیمبورد مشخص میشود.
موفق باشید
سلام بر سایت خوب سورس ایران .
مرسی که دکمه کپی هم گذاشتید.
سلام
خیلی ممنون بابت سورس
ولی سورس چند تا ایراد داشت🙁
سلام
وقت بخیر
خواهش میکنم
ولی چیز عادی هستش دوست عزیز
سلام
لطفاً به کامنت ها جواب بدید
شما سوالی نپرسیدید که جواب بدیم دوست عزیز
چرا برنده رو اعلام نمیکنه
ممنون از سایت خوبتون
فقط ی نکته : داخل سورس کد ی اشتباهی وجود داره .داخل تابع checker دوتا elif اخری باید if باشن