آموزش ساخت بازی دوز با پایتون + ویدئوی آموزشی
ویدئو های آموزشی
شنبه 18 فروردین 1403
جهت مطالعه این مقاله به 10 دقیقه زمان نیاز دارید
آنچه در این مقاله خواهیم خواند:

مقدمه


پایتون زبانی قدرتمند است که به راحتی می‌توان به کمک آن بازی سازی نیز انجام داد. در این مقاله ما قصد داریم یکی از بازی‌های معروف یا همان بازی دوز (tic tac toe) را به شما آموزش دهیم.
در آموزش ساخت بازی دوز با پایتون ما از کتابخانه tkinter استفاده کرده‌ایم و بازی دوز را به کمک این کتابخانه ساخته‌ایم. 
البته که نیاز است برای ساخت بازی دوز با پایتون کمی پیش زمینه از برنامه نویسی پایتون داشته باشید. و اگر این پیش نیاز‌ها را داشته باشید به راحتی به کمک این مقاله می‌توانید اولین بازی گرافیکی خود را بسازید.

 

آموزش ساخت بازی دوز با پایتون


دوز یک بازی قدیمی است که از 9 مربع تشکیل شده‌است و دو بازیکن دارد که یکی با علامت O و دیگری با علامت X مشخص شده‌اند که اگر هر‌کدام از بازیکن‌ها بتوانند سه‌تا از علامت‌هایشان را به صورت عمودی یا افقی یا ضربدری کنار هم بچینند می‌توانند برنده بازی باشند.
برای ساخت بازی دوز با پایتون ما باید مواردی که در بالا گفته شد را برنامه‌ریزی کنیم. اما در ابتدا نیاز است که ظاهر برنامه را به درستی طراحی نماییم.

 

برای ساخت بازی دوز با پایتون چه کد هایی باید بنویسیم؟


در ساخت بازی دوز با پایتون باید به کمک 9 button ظاهر را طراحی نموده‌ایم. برای اینکه برنامه ظاهر زیر را داشته باشد نیاز است تا کد‌های زیر را بنویسیم
 

 


from tkinter import *
from tkinter import messagebox
turn=1
root=Tk()
bt1=Button(root,text="",width=25,height=8,command=lambda:click(1))
bt2=Button(root,text="",width=25,height=8,command=lambda:click(2))
bt3=Button(root,text="",width=25,height=8,command=lambda:click(3))
bt4=Button(root,text="",width=25,height=8,command=lambda:click(4))
bt5=Button(root,text="",width=25,height=8,command=lambda:click(5))
bt6=Button(root,text="",width=25,height=8,command=lambda:click(6))
bt7=Button(root,text="",width=25,height=8,command=lambda:click(7))
bt8=Button(root,text="",width=25,height=8,command=lambda:click(8))
bt9=Button(root,text="",width=25,height=8,command=lambda:click(9))

bt1.grid(row=0,column=0)
bt2.grid(row=0,column=1)
bt3.grid(row=0,column=2)
bt4.grid(row=1,column=0)
bt5.grid(row=1,column=1)
bt6.grid(row=1,column=2)
bt7.grid(row=2,column=0)
bt8.grid(row=2,column=1)
bt9.grid(row=2,column=2)
root.mainloop()

همانطور که مشخص است با فشردن هر button تابع click اجرا می‌شود و یک ورودی را به خود می‌گیرد و این ورودی درواقع شماره جایگاهی است که قرار است بازیکنی که نوبت اوست مهره خود را بچیند.
حال به سراغ تابع click می‌رویم.


def click(a):
   global turn
   if a==1 and turn==1:
       bt1.config(text="X")
       bt1.config(bg="blue")
       checkwin()
   elif a==1 and turn==2:
       bt1.config(text="O")
       bt1.config(bg="red")
       checkwin()
   elif a==2 and turn==1:
       bt2.config(text="X")
       bt2.config(bg="blue")
       checkwin()
   elif a==2 and turn==2:
       bt2.config(text="O")
       bt2.config(bg="red")
       checkwin()
   elif a==3 and turn==1:
       bt3.config(text="X")
       bt3.config(bg="blue")
       checkwin()
   elif a==3 and turn==2:
       bt3.config(text="O")
       bt3.config(bg="red")
       checkwin()
   elif a==4 and turn==1:
       bt4.config(text="X")
       bt4.config(bg="blue")
       checkwin()
   elif a==4 and turn==2:
       bt4.config(text="O")
       bt4.config(bg="red")
       checkwin()
   elif a==5 and turn==1:
       bt5.config(text="X")
       bt5.config(bg="blue")
       checkwin()
   elif a==5 and turn==2:
       bt5.config(text="O")
       bt5.config(bg="red")
       checkwin()
   elif a==6 and turn==1:
       bt6.config(text="X")
       bt6.config(bg="blue")
       checkwin()
   elif a==6 and turn==2:
       bt6.config(text="O")
       bt6.config(bg="red")
       checkwin()
   elif a==7 and turn==1:
       bt7.config(text="X")
       bt7.config(bg="blue")
       checkwin()
   elif a==7 and turn==2:
       bt7.config(text="O")
       bt7.config(bg="red")
       checkwin()
   elif a==8 and turn==1:
       bt8.config(text="X")
       bt8.config(bg="blue")
       checkwin()
   elif a==8 and turn==2:
       bt8.config(text="O")
       bt8.config(bg="red")
       checkwin()
   elif a==9 and turn==1:
       bt9.config(text="X")
       bt9.config(bg="blue")
       checkwin()
   elif a==9 and turn==2:
       bt9.config(text="O")
       bt9.config(bg="red")
       checkwin()
   if turn==1:
       turn=2
   else:
       turn=1
 

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


خروجی: بعد از یک دور بازی کردن بازیکن اول و بازیکن دوم به صورت زیر است اگر بازیکن اول روی 3 کلیک کرده باشد و بازیکن دوم روی 5
 

 

 


همانطور که در کد بالا دیدید تابع check win فراخوانی شده است تا چک کند آیا بازی تمام شده‌است و بازیکنی برنده شده‌است یا خیر.

 

در ساخت بازی دوز با پایتون شرط برنده شدن چگونه می باشد؟


در ساخت بازی دوز با پایتون در صورتی که هر بازیکن بتواند به صورت افقی یا عمودی یا ضربدری دکمه‌ها را کلیک کند و به رنگ خودش در‌آورد برنده است.
برای این کار در پایتون کد تابع checkwin را به صورت زیر می‌نویسیم.


def checkwin():
   win=0
   if turn==1:
       if bt1["text"]==bt2["text"]==bt3["text"]=="X":
           win=1
       elif bt4["text"]==bt5["text"]==bt6["text"]=="X":
           win=1
       elif bt7["text"]==bt8["text"]==bt9["text"]=="X":
           win=1
       elif bt1["text"]==bt4["text"]==bt7["text"]=="X":
           win=1
       elif bt2["text"]==bt5["text"]==bt8["text"]=="X":
           win=1
       elif bt3["text"]==bt6["text"]==bt9["text"]=="X":
           win=1
       elif bt1["text"]==bt5["text"]==bt9["text"]=="X":
           win=1
       elif bt3["text"]==bt5["text"]==bt7["text"]=="X":
           win=1
   elif turn==2:
       if bt1["text"]==bt2["text"]==bt3["text"]=="O":
           win=2
       elif bt4["text"]==bt5["text"]==bt6["text"]=="O":
           win=2
       elif bt7["text"]==bt8["text"]==bt9["text"]=="O":
           win=2
       elif bt1["text"]==bt4["text"]==bt7["text"]=="O":
           win=2
       elif bt2["text"]==bt5["text"]==bt8["text"]=="O":
           win=2
       elif bt3["text"]==bt6["text"]==bt9["text"]=="O":
           win=2
       elif bt1["text"]==bt5["text"]==bt9["text"]=="O":
           win=2
       elif bt3["text"]==bt5["text"]==bt7["text"]=="O":
           win=2
   if win==1:
       messagebox.showinfo("End","Blue Win")
       root.destroy()
   elif win==2:
       messagebox.showinfo("End","Red Win")
       root.destroy()
 

 

سخن پایانی


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

با ما همراه باشید.


سپاس از نگاهتان