آموزش ساخت بازی دوز با پایتون
بازی دوز نه تنها نوعی منبع سرگرمی عالی است، بلکه نوعی پروژه تمرینی ساده پایتون سرگرمکننده برای علاقهمندان به این زبان محسوب میشود تا از ابتدا آن را بسازند. در این آموزش از مجله مکتوب، شما را با روند ایجاد یک بازی دوز با استفاده از پایتون آشنا خواهیم کرد. ما کد بازی دوز با پایتون را در اختیار شما قرار میدهیم و آن را تشریح خواهیم کرد تا اطمینان حاصل کنیم که مراحل را به خوبی یاد میگیرید.
پیشنیازهای ساخت بازی دوز با پایتون
قبل از شروع و کدنویسی بازی دوز با پایتون، ابتدا باید مطمئن شوید که پایتون را روی دستگاه خود نصب کردهاید. میتوانید آن را از وبسایت رسمی پایتون دانلود کنید. همچنین میتوانید با مطالعه مقاله نحوه نصب پایتون در مجله مکتوب شیوه نصب آن را یاد بگیرید.
در ادامه نحوه ساخت بازی دوز در پایتون را یاد خواهیم گرفت.
کد پایتون بازی دوز
در این مرحله از آموزش ساخت بازی دوز با پایتون مرحلهبهمرحله کد پایتون بازی دوز را باهم مورد بررسی قرار میدهیم و پروژه ساخت بازی دوز با پایتون را خواهیم آموخت. کد بازی دوز با پایتون دو نفره ما به صورت زیر است:
import tkinter as tk
from tkinter import messagebox
class TicTacToe:
def __init__(self, root):
self.root = root
self.root.title("Tic-Tac-Toe")
self.current_player = "X"
self.board = [" " for _ in range(9)]
self.buttons = []
for i in range(9):
row, col = divmod(i, 3)
button = tk.Button(root, text=" ", font=("Helvetica", 24), width=5, height=2,
command=lambda i=i: self.on_click(i))
button.grid(row=row, column=col)
self.buttons.append(button)
def on_click(self, index):
if self.board[index] == " ":
self.board[index] = self.current_player
self.buttons[index].config(text=self.current_player)
if self.check_winner():
messagebox.showinfo("Game Over", f"Player {self.current_player} wins!")
self.reset_game()
elif " " not in self.board:
messagebox.showinfo("Game Over", "It's a draw!")
self.reset_game()
else:
self.current_player = "X" if self.current_player == "O" else "O"
def check_winner(self):
win_patterns = [(0, 1, 2), (3, 4, 5), (6, 7, 8),
(0, 3, 6), (1, 4, 7), (2, 5, 8),
(0, 4, 8), (2, 4, 6)]
for pattern in win_patterns:
if self.board[pattern[0]] == self.board[pattern[1]] == self.board[pattern[2]] != " ":
return True
return False
def reset_game(self):
self.board = [" " for _ in range(9)]
for button in self.buttons:
button.config(text=" ")
self.current_player = "X"
if __name__ == "__main__":
root = tk.Tk()
game = TicTacToe(root)
root.mainloop()
خروجی کد بالا به صورت زیر خواهد بود:
تشریح کد بالا به صورت زیر است:
واردکردن کتابخانهها: کد با واردکردن کتابخانههای لازم شروع میشود. tkinter یک کتابخانه برای ایجاد رابطهای گرافیکی کاربر (GUI) در پایتون است. ما ماژول tkinter را بهعنوان tk وارد کرده و بهطور خاص جعبه پیام را برای نمایش پیامهای بازشو وارد میکنیم.
کلاس TicTacToe: منطق بازی در کلاسی به نام TicTacToe کپسوله شده است.
Initialization (__init__): متد__init__ بازی را مقداردهی اولیه و پنجره بازی و متغیرهای لازم را تنظیم میکند.
- root پنجره اصلی رابط کاربری گرافیکی است.
- current_player ردیابی نوبت چه کسی است (یا “X” یا “O”).
- board لیستی است که صفحه بازی را با 9 فضای خالی نشان میدهد.
- buttons لیستی است که دکمههای رابط کاربری گرافیکی نشاندهنده سلولهای برد را ذخیره میکند.
- ایجاد دکمهها: صفحه بازی از دکمهها تشکیل شده است. یک حلقه از 0 تا 8 اجرا میشود و برای هر تکرار:
- divmod(i, 3) برای محاسبه اندیس سطر و ستون از شاخص مسطح i استفاده میشود.
- یک دکمه با ویژگیهای پیشفرض مانند متن خالی، اندازه قلم، اندازه و یک فرمان ایجاد میشود (عملکرد lambda دکمه را به تابع on_click با شاخص مربوطه متصل میکند).
تابع on_click: هر زمان که بازیکن روی دکمهای کلیک کند، این تابع فراخوانی میشود. این هسته اصلی منطق بازی است.
- بررسی میکند که سلول کلیک شده خالی است یا خیر.
- اگر خالی باشد، صفحه بازی را با نماد بازیکن فعلی بهروز کرده و متن دکمه را متناسب با آن بهروز میکند.
- سپس با فراخوانی تابع check_winner بررسی میکند که آیا برندهای وجود دارد یا خیر.
- اگر بازیکنی برنده شود، یک جعبه پیام با نماد بازیکن برنده ظاهرشده و بازی دوباره تنظیم میشود.
- اگر صفحه پر باشد و برندهای وجود نداشته باشد، یک کادر پیام ظاهر میشود که تساوی را اعلام میکند و بازی دوباره تنظیم میشود.
- اگر بازی ادامه دارد، بازیکن فعلی را برای نوبت بعدی تغییر میدهد.
تابع check_winner: این تابع بررسی میکند که آیا یک الگوی برنده روی تخته وجود دارد یا خیر.
- الگوهای برنده احتمالی (ردیفها، ستونها و موربها) را تعریف میکند.
- از طریق هر الگوی تکرار میشود و بررسی میکند که آیا سه خانه نماد غیر خالی یکسانی دارند یا خیر.
- اگر یک الگو مطابقت داشته باشد، تابع True را برمیگرداند که نشاندهنده برد است.
تابع reset_game: این تابع وضعیت بازی را بازنشانی میکند.
- برد را پاککرده و همه دکمهها را بازنشانی میکند تا خالی شوند.
- این بازیکن فعلی را برای یک بازی جدید به “X” برمیگرداند.
قسمت اصلی (__name__ == “__main__”): این قسمت زمانی اجرا میشود که اسکریپت مستقیماً اجرا شود (بهعنوان یک ماژول وارد نمیشود).
- پنجره اصلی رابط کاربری گرافیکی (ریشه) را ایجاد میکند.
- کلاس TicTacToe را برای شروع بازی مقداردهی اولیه میکند.
- با استفاده از mainloop()، که رابط کاربری گرافیکی را پاسخگو نگه میدارد و به تعاملات کاربر گوش میدهد، وارد حلقه رویداد اصلی میشود.
اگر کد پایتون بازی دوز را اجرا کنید، یک پنجره رابط کاربری گرافیکی با صفحه Tic-Tac-Toe ظاهر میشود. بازیکنان میتوانند برای قرار دادن نمادهای خود (“X” یا “O”) روی دکمهها کلیک کنند. بازی برد یا تساوی را تشخیص داده و پیامهای مناسب را نشان میدهد. به یاد داشته باشید که درک کامل این کد ممکن است کمی طول بکشد، بهخصوص اگر در برنامهنویسی تازهکار هستید.
پیشنهاد مطالعه: آموزش ساخت ماشین حساب با پایتون
سخن پایانی
تا به اینجا ما با موفقیت نسخه اصلی بازی دوز را با استفاده از پایتون ساختیم. این پروژه بازی دوز با پایتون بهعنوان یک فرصت عالی برای تمرین مهارتهای برنامهنویسی پایتون و یادگیری در مورد اصول توسعه بازی با پایتون است. با افزودن ویژگیهای بیشتر مانند رابطهای کاربری، مکانیسمهای امتیازدهی یا حتی اجرای قوانین پیچیدهتر بازی، میتوانید بازی را ارتقا دهید.
آموزش پایتون
اگر به فکر یادگیری برنامه نویسی پایتون هستید ابتدا باید اصول برنامه نویسی و مقدمات پایتون را یاد بگیرید. برای کمک به یادگیری پایتون در مکتب خونه انواع دوره آموزش پایتون موجود است که به کاربران کمک میکند به سادهترین شکل ممکن پایتون را بیاموزند. از طریق صفحه آموزش پایتون مکتب خونه میتوانید انواع دورههای موجود برای پایتون را ببینید
این سایت عالیه
چون برنامه نویسان حرفه ای مثل من رو درک میکنه من نیومدم کد یاد بگیرم اومدم کپی کنم برم
البته تعریف از خود نباشه
البته آموزش هم داره