[0:00]aur yahan pe ye bol raha hai ab O ki baari hai, to for example O ne yahan pe chala X ne yahan pe chala O ne phir se yahan pe chala aur main X ko jeeta deta hu, just for verification purpose ki kaisa dikh raha hai Doston, mera naam hai Sagar aur main aapka welcome karta hu is Python programming ke project ki series mein. Aur aaj hum ek GUI based Tic Tac Toe game banane wale hain Python mein. GUI ka matlab hai ki graphical user interface jo ki hamare game ko dekhne aur khelne mein asaan banata hai. Tic Tac Toe ek bahut hi popular aur simple game hai, jisme do players X aur O ka use karte hain. aur 3x3 ki grid mein apne symbols ko lagate hain. Jis player ki pehle symbol ki line complete hoti hai, chahe wo horizontal ho, vertical ho ya diagonal ho, wo jeet jata hai, yaani ki use winner karar kar diya jaata hai. Aaiye dekhte hain ki hum is game ko Python mein kaise bana sakte hain. Sabse pehle hum Tkinter module ko import karenge, jo ki Python mein GUI banane ke liye ek standard library hai. Tkinter se hum windows, buttons, labels aur aur bhi bahut kuch bana sakte hain. Tkinter ko import karne ke liye simple hum likhenge,
[0:58]Isse hum Tkinter ko tk ke naam se pukar sakte hain, jo ki chhota aur asaan hai. Ab hum Tkinter se message box ka istemal karenge jo ki hume game mein kisi bhi message ko dikhane ke liye kaam aaega. Jaise ki agar koi player jeet gaya ho, ya phir game draw ho gaya ho, to hum message box ki madad se user ko bata sakte hain ki bhai ye status hai. Message box ko import karne ke liye simple hum yahan pe likhenge,
[1:23]Ab hum ek function define karenge jo ki check underscore winner naam ka hoga. Is function ka kaam ye hai ki wo har button click karne ke baad check kare ki koi player jeeta hai ya nahi. Iske liye hum ek list banayenge jisme eight possible combinations honge jeetne ke liye. Ye combinations agar match hote hain, inme se eight mein se koi bhi ek match hota hai, to winner jeet jaega. Ye combinations teen horizontal lines, teen vertical lines aur do diagonal lines honge. Har combination mein teen buttons ke index honge jo ki zero se eight tak honge. Hum button ko grid mein arrange karenge jaise ki 0, 1, 2, 3, 4, 5, 6, 7, 8. Is list ko combo naam se pukarhenge aur iske har element ko loop mein check karenge. Agar kisi combo mein tino element ka text same hai aur khali nahi hai, to matlab hai ki us player ki jeet hui hai. Us case mein hum teenon button ka background color green kar denge aur message box se user ko bataenge ki konsa player jeeta hai. Aur phir hum root window ko band kar denge. Is function ko likhne ke liye simple hum likhenge define
[2:59]To is tarike se humne humari eight possible combinations condition rakh di hai. Inme se koi ek bhi match hoti hai to user ko winner karar de diya jaayega.
[4:04]Ab yahan pe main ye teen argument pass karna chahta hu ki bhai jab koi teen box match ho jae, to wo us line ko, particular line ko green colour ka background de. Bas yahan mujhe indexing change karni padegi. To kuch log kya karenge yahan pe control C control V karenge, but nahi main ek shortcut batata hu. Aapko jis bhi line ko niche simple replicate karna hai, usme apna cursor laa ke chhod dijiye. Then shift, alt aur down arrow aap jaise hi click karenge, to ye same aapko niche copy paste karke de dega. Shortcut hai, aur simply hum yahan pe isko change kar denge one aur two se.
[5:20]Yahan tak hum program ko ek baar chala ke dekh lete hai, koi error to nahi aa raha hai. To chaliye koi error nahi aa raha hai abhi isme, aage badhte hain. Ab hum ek function aur define karenge jo ki button underscore click naam ka hoga. Is function ka kaam ye hai ki jab user kisi button par click kare, to us button par current player ka symbol lag jae. Iske liye hum function mein index parameter lenge jo ki button ka index hoga. Phir hum check karenge ki button khali hai ya nahi. Aur winner variable false hai ya nahi. Winner variable ye batata hai ki game abhi chal raha hai ya nahi. Agar dono condition true hai to hum button par current player ka text set kar denge aur check winner function ko call kar denge. Phir hum toggle player function ko call kar denge jo ki next player ko set karega. Is function ko likhne ke liye simple hum yahan pe likhenge,
[6:52]Ab hum toggle player naam ka ek function define karenge jo ki current player ko change karega. Iske liye hum global keyword ka istemal karenge jo ki hume current player variable ko function ke andar modify karne dega. Phir hum current player ko X se O, O se X mein badalte jayenge aur badalte rahega ye. Aur label widget ko update kar denge jo ki user ko bataega ki ab konse player ki baari hai ya phir konse player ko chalne ki chance hai. Is function ko likhne ke liye simple hum yahan pe likhenge,
[8:10]Ab hum root window banayenge jo ki Tkinter se aata hai. Is window ka title Tic Tac Toe rakhenge aur isko root naam se pukarrenge. Is window ko banane aur title set karne ke liye hum likhenge simple
[8:38]Ab hum nau button banayenge jo ki game ke liye honge. Is button ka text, font normal aur halka sa bada hoga. Width aur height six aur two honge aur command parameter mein hum lambda function denge jo ki button click function ko call karega aur us button ka index dega.
[9:56]Lambda function ek anonymous function hai jo ki ek line mein likha jata hai. In buttons ko ek list mein store karenge jo ki button naam se pukari jaegi. In buttons ko banane ke liye hum ek list comprehension ka istemal karenge jo ki python trick hai jisse ek line mein list bana sakte hain. Iske liye simple hum yahan pe likhenge, Ab hum in buttons ko grid mein arrange karenge jisse wo 3x3 ki shape mein dikhenge. Iske liye hum enumerate function ka istemal karenge jo ki har button ke sath hume uska index bhi dega. Phir hum grid method ka istemal karenge jo ki button ko row aur column mein set karega. Row aur column hum button ke index se calculate karenge. Iske liye hum simple yahan pe likhenge,
[10:53]Ab hum current player variable banayenge jo ki X ya O hoga. Hum isko X se shuru karenge aur isko current player naam se pukarrenge. Is variable ko banane ke liye simple hum likhenge,
[11:10]Ab hum winner variable banayenge jo ki true ya false hoga. Hum isko false se shuru karenge aur isko winner naam se pukarrenge. Ye variable hume bataega ki game abhi chal raha hai ya nahi. Is variable ko banane ke liye simple hum likhenge,
[11:27]Ab hum ek label widget banayenge jo ki user ko bataega ki ab konse player ki baari hai. Is label ka text current player ke hisaab se set karenge aur isko label naam se pukarrenge. Is label ko banane ke liye simple hum yahan pe likhenge,
[12:10]Ab is label ko grid mein arrange karenge jisse wo button ke niche dikhenge. Iske liye hum grid method ka istemal karenge aur row teen aur column span teen denge. Isse label pure width mein stretch ho jaega. Iske liye hum simple yahan pe likhenge,
[12:38]Ab hum root window ko main loop method se chalaenge jo ki window ko screen par dikhaega aur user input handle karega. Iske liye hum simple yahan pe likhenge,
[12:51]To ab humara program ho chuka hai ready. Ise run karke dekhte hain.
[12:58]aur yahan pe X to yahan pe ye bol raha hai name O is not defined. Dekh lete hain kya galti hui hai. Okay, to yahan pe maine zero lagana tha maine O laga diya. Chaliye to ye galti khair hoti rehti hai, ye humne isse fix bhi kar liya hai. Ab phir se isse clear karte hain aur run karke dekhte hain. Aur yahan pe ye bol raha hai ab O ki baari hai. To for example O ne yahan pe chala X ne yahan pe chala O ne phir se yahan pe chala aur main X ko jeeta deta hu. Just for verification purpose ki kaisa dikh raha hai. Ab yahan pe dekhiye player X wins yahan pe pop up hoke aa chuka hai. Hum OK pe click karte hain. Ek baar phir se ise run karte hain aur match ko tie karte hain. Main yahan pe kisi ko jeetne nahi dunga waise. Oh oh, O jeet gaya. To like mujhe nahi pata ki isme isko bahut zyada acche se kaise khelte hain, but aap log is game ko zarur try kariye aur comment section mein zarur bataiega ki ye project kaisa laga aapko. Aur is code ka access yadi aapko chahiye to wo video ke description mein mil jaega. Milte hain next video mein next project ke sath, thank you so much for watching.



