ساخت بازی دوز با پایتون + ویدیو + کد
سلام به دوستان خوب میکرولرنی
در این مقاله به آموزش ساخت بازی دوز در پایتون با واسط گرافیکی می پردازیم. نام انگلیسی بازی دوز tic tac toe است. این آموزش شما را در روند توسعه کد بازی دوز در پایتون راهنمایی می کنه. شما در این ویدیو یاد می گیرید که چگونه منطق بازی را پیاده سازی کنید، رابط کاربری گرافیکی را با استفاده از کتابخانه tkinter طراحی کنید، و تعاملات بازیکنان را فعال کنید تا از یک تجربه بازی سرگرم کننده لذت ببرید. چه مبتدی باشید و چه یک توسعه دهنده حرفهای پایتون، این آموزش نکات ارزشمندی را برای ایجاد یک بازی کلاسیک و در عین حال افزایش مهارت های برنامه نویسی شما ارائه می کنه. پس با آموزش بازی تیک تاک تو از میکرولرن همراه باشید.
توجه کنید که این پروژه برای افراد مبتدی مناسب نیست و این افراد بهتره اول دوره رایگان آموزش پایتون را مشاهده کنند. خب بریم که شروع کنیم.
فهرست مطالب
قوانین بازی دوز
دوز یا تیک تاک تو یک بازی جذاب و معروف است که در آن دو بازیکن به تناوب یک علامت (معمولاً “X” و “O”) را در یک صفحه 3×3 قرار میدهند. هدف این بازی این است که سه علامت متشکل از “X” یا “O” را در یک خط افقی، عمودی یا مورب بهدست آورد. بازی تمام میشود در صورتی که یکی از بازیکنها توانایی بردن را نداشته باشد یا تمامی خانهها پر شوند و هیچکس برنده نشود.
رابط گرافیکی برای ساخت بازی دوز در پایتون
رابط کاربری با استفاده از ماژول کینتر(tkinter) ایجاد شده و هر خانه از صفحه بازی با یک دکمه نمایش داده میشود که با کلیک کردن بر روی آن، بازیکن فعلی نقش خود را بازی میکند. برای شروع بازی، ابتدا اندازهی تختهی بازی (تعداد ستونها و ردیفها) را وارد میکنیم. سپس یک شیء از کلاس TicTacToeGUI ایجاد میشود و با فراخوانی تابع run، بازی آغاز میشود. در صورتی که یک بازیکن برنده شود یا بازی مساوی شود، یک پنجرهی پیام نمایش داده میشود و بازی میتواند دوباره شروع شود.
کد بازی دوز در پایتون
با این کد میتوانید یک بازی تیک تاک تو ساده و جذاب را در پایتون ایجاد کنید و این بازی را با دیگران به اشتراک بگذارید.
import tkinter as tk
from tkinter import messagebox
class TicTacToeGUI:
def __init__(self, board_size=3):
self.board_size = board_size
self.window = tk.Tk()
self.window.title('Tic Tac Toe')
self.board = [[' ' for _ in range(self.board_size)]
for _ in range(self.board_size)]
self.current_player = 'X'
self.create_board_buttons()
def create_board_buttons(self):
self.buttons = [[tk.Button(self.window, text=' ', font=('Arial', 24), width=3, height=1,
command=lambda row=row, col=col: self.make_move(row, col)) for col in range(self.board_size)]
for row in range(self.board_size)]
for row in range(self.board_size):
for col in range(self.board_size):
self.buttons[row][col].grid(row=row, column=col)
def make_move(self, row, col):
if self.board[row][col] == ' ':
self.board[row][col] = self.current_player
self.buttons[row][col].config(text=self.current_player)
if self.check_win(self.current_player):
messagebox.showinfo(
"Tic Tac Toe", f"Player {self.current_player} wins!")
self.reset_game()
elif self.is_full():
messagebox.showinfo("Tic Tac Tow", "It's a tie!")
self.reset_game()
else:
self.current_player = 'O' if self.current_player == 'X' else 'X'
else:
messagebox.showerror(
"Invalid Move", "Cell already taken. Try again.")
def check_win(self, player):
for i in range(self.board_size):
if all(self.board[i][j] == player for j in range(self.board_size)) or all(self.board[j][i] == player for j in range(self.board_size)):
return True
return all(self.board[i][i] == player for i in range(self.board_size)) or all(self.board[i][self.board_size - 1 - i] == player for i in range(self.board_size))
def is_full(self):
return all(all(cell != ' ' for cell in row) for row in self.board)
def reset_game(self):
for i in range(self.board_size):
for j in range(self.board_size):
self.board[i][j] = ' '
self.buttons[i][j].config(text=' ')
def run(self):
self.window.mainloop()
if __name__ == '__main__':
board_size = int(
input("Enter the size of the board(e.g., 3 for 3x3, 4 for 4x4, etc.): "))
tic_tac_toe = TicTacToeGUI(board_size)
tic_tac_toe.run()
این کد شامل یک کلاس به نام TicTacToeGUI است که توابع مختلفی برای ساخت تخته بازی، انجام حرکت، بررسی برنده شدن، چک کردن مساوی بودن بازی و تنظیم مجدد بازی را دارد. در زیر، توضیحاتی برای هر یک از توابع و بخشهای کد آورده شده است:
کلاس TicTacToeGUI:
init__(self, board_size=3)__: این تابع مخصوص (constructor) در زمان ایجاد یک شیء از کلاس TicTacToeGUI فراخوانی میشود. مقدار اولیه board_size را دریافت و اعضای مختلف کلاس را مقداردهی اولیه میکند. برای مثال می توان به تعیین اندازه تخته بازی، ایجاد یک پنجره (window) جدید و ایجاد یک تخته خالی اشاره کرد.
create_board_buttons(self): این متد دستورالعملهای لازم برای ایجاد دکمههای تخته بازی را فراهم میکند.
make_move(self, row, col): این متد برای اعمال حرکت انجام شده توسط بازیکن بر روی تخته بازی فراخوانی میشود. این متد مشخص میکند که آیا حرکت معتبر است و بازیکن جاری برنده شده است یا نه.
check_win(self, player): این متد بررسی میکند که آیا بازیکن فعلی برنده شده است یا نه.
is_full(self): این متد بررسی میکند که آیا تخته بازی پر شده و بازی مساوی شده است یا نه.
reset_game(self): این متد بازنشانی تخته بازی و دکمهها را برای شروع دوباره بازی انجام میدهد.
run(self): این تابع پنجره گرافیکی را باز میکند و بازی تیک تاک تو را شروع میکند.
شرط ‘__name__ == ‘__main__:
این شرط بررسی میکند که آیا این کد به عنوان یک برنامه اجرایی اصلی فراخوانی شده است یا به عنوان یک ماژول درونی فراخوانی شده است.
نتیجه گیری
خسته نباشید عرض می کنم به شما دوستان میکرولرنی عزیز که تا انتهای این مقاله همراه ما بودید. امیدوارم که آموزش بازی تیک تاک تو کمکی بوده باشه تا عمق بیشتری به دانسته های خودتون بدید و با اعتماد به نفس بیشتری برنامه نویسی کنید. حمایت شما از میکرولرن همیشه باعث دلگرمی ما بوده و هست. شما می تونید با به اشتراک گذاشتن مقاله ساخت بازی دوز با پایتون با دوستانتون هم کمکی به دیگران کنید و هم به ما برای تولید محتوا انرژی بدید. در انتها پیشنهاد میکنم یکی دیگه از پروژه های جذاب پایتون به نام ساخت ربات تلگرام با پایتون را مطالعه کنید.
درباره احسان عبداللهی
مدیر و موسس میکرولرن | برنامه نویسی پاسخی ظریف به یک نیاز در دنیای واقعی هست.
نوشته های بیشتر از احسان عبداللهی
دیدگاهتان را بنویسید