<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Harsh Kumar</title>
    <description>The latest articles on Forem by Harsh Kumar (@harshku007).</description>
    <link>https://forem.com/harshku007</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1260863%2F0e8673b4-bb28-43ab-84b3-2fabe19df3ab.jpg</url>
      <title>Forem: Harsh Kumar</title>
      <link>https://forem.com/harshku007</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/harshku007"/>
    <language>en</language>
    <item>
      <title>TCS CodeVita Experience</title>
      <dc:creator>Harsh Kumar</dc:creator>
      <pubDate>Wed, 03 Dec 2025 07:55:07 +0000</pubDate>
      <link>https://forem.com/harshku007/tcs-codevita-experience-40gi</link>
      <guid>https://forem.com/harshku007/tcs-codevita-experience-40gi</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnit8o5ytqwf5km1pltdq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnit8o5ytqwf5km1pltdq.png" alt="TCS Round 1 Cleared by Harsh Kumar" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fydxsqz87ucvquj7fxae3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fydxsqz87ucvquj7fxae3.png" alt="TCS Round 2 Cleared By Harsh Kumar" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Mujhe apni TCS CodeVita Contest ki performance ko dekhkar bahut khushi ho rahi hai aur haan abhi bhi improvements kiye hi ja sakte hain aur in fact har baar kiye ja sakte hain shayad yahi Science Community ko hamesha evolve karne ki prerna deti hai ki abhi jo paa liya bahut sahi ab aage aur achcha kya kar sakte hain aur phir usse bhi achcha aur is sab ko measure karna apni aur world ki past performance se yaani ki right progress with rights tools and right kind of tracking. &lt;/p&gt;

&lt;p&gt;To start karte hain is achievement tak aa pane ki kahani se. Pahle main bahut pareshan tha jabse ye taabeez maine pahni hai meri zindagi badal gayi Sorry Sorry Sorry main majaak kar raha tha ye kahani vaisi kahaniyon ki tarah nahin hai bas thoda mahaul ko light karne ke liye anyways pahle main apna motive clear kar doon ki main ye post kyon likh raha hoon phir aage ki baat karte hain. Main is post se ye nahin batana chahta ki dekho maine sab kuchh haasil kar liya hai aur haan ye bhi nahin ki maine kuchh bhi haasil nahin kiya hai ye bas meri ek koshish hai ki main is post ko padh rahe un logon ko kah sakoon ki jo bhi flashy aap log dekhte hain vo easily nahin milta hai aur uske peechhe kaafi hard work, smart work in the right direction, pain aur bhi na jaane kya kya hota hai par iska matlab ye bilkul nahin hai ki koi ise paa nahin sakta in fact mujhse achcha perform karne wale kayi log is contest mein the and i appreciate them ki unhone iske liye kaafi jaan lagayi hogi so Cheers &amp;amp; Congrats to those awesome Problem Solvers aur un sabki hi tarah ham sab bhi apne aap ko improve kar sakte hain aur nahin nahin main bilkul bhi Motivational Speaker nahin banna chah raha hoon ye kaam already  kaafi log shayad bahut achche se kar rahe hain.&lt;/p&gt;

&lt;p&gt;To shayad sabki hi tarah mujhe bhi jab maine DSA (Data Structures &amp;amp; Algorithms) ko padhna start kiya tha to sab kuchh ekdam alag hi duniya se aaya hua lagta tha aur almost vahi feeling ki kya hi hone wala hai bhai in questions ko solve karke type feeling aati thi but kyonki ye course curriculum mein tha aur not to mention ki Placements mein iska kaafi important role rahta hi hai shayad ab tak to hai jab main ye post likh raha hoon isliye main bhi aa gaya is coding ke maidaan mein ki dekhen to aisi kaun si cheej hai jo bachchon ko dara rahi hai hamen sher ko darakar dikhaye to phir mujhe bhi daraya hi DSA Dada ne par jaise jaise isko aur padhna start kiya to almost after 1 month basics of C++ aur Array ke Questions lagne laga ki yaar kya sahi cheej hai ye ekdam Math ki tarah jaise Math hamen Problem Solving Abilities ko enhance karne mein help karti hai same pattern yahan bhi follow ho raha hai aur yahi to ham Engineers ka kaam hai ki Available Resource &amp;amp; Constraints mein jo bhi Best Possible Solution hai usko implement karo phir jab is mindset se cheejon ko seekhna chalu kiya to cheejen doable lagni lagin par tabhi End Semester Exams Aakar kahte hain hamen bhool gaye kya and the DSA Dada settled into background After all End Semester Exams apni importance hold karte hi hain aur phir lagbhag 1-1.5 mahine ke baad phir se DSA padhna start kiya aur ye journey chalti rahi cheejen aati rahin aur Schedule ki aur DSA Seekhne ki pace ki band bajati rahin obviously saare events sunne ka aapke paas time nahin hoga to short mein bas itna hi ki mujhe shayad 1 saal lag gaya Apni DSA Skills ko Good Enough banane mein par koi bhi cheej seekhne mein time lagta hi hai aur jaroori nahin ki har baar aapke plans ke according hi aap padhen yaa kuchh bhi karen aur is baat ke chances rahenge hi ki kuchh na kuchh aapko thoda out of track le hi jayega par hamesha yaad rakhna ki Something is better than nothing to keep doing your stuff and improve karte raho chahe jo bhi ho apne aap ko vaapis track par late rahna hi hai jo sabse important hai be that koi bhi kaam chahe vo koi skill ko master karna ho yaa kisi particular project ko complete karna yaa kuchh bhi aur Always &amp;amp; Always khud ko improve karte raho Aur main ye clear kardoon ki main Competitive Coders mein Top par nahin hoon filhal par iska matlab ye bilkul bhi nahin hai ki mujhe DSA pasand nahin hai balki ye bahut pasand hai kyonki ye Math ki hi tarah hamen Computer world ke Challenges ke liye prepare karta hai to i would recommend ki aap log bhi ise jaroor try out karen. Meri Github Repo ki link ye rahi jisse aap log meri DSA journey ka close look le sakte hain aur baaki dekhte hain kya aur kiya ja sakta hai. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/HarshKumar123456/dsa-using-cpp" rel="noopener noreferrer"&gt;https://github.com/HarshKumar123456/dsa-using-cpp&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Aur Ye ek Chhota sa game jo DSA Problem Solving Ke Time Banaya tha:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://harshku007.pages.dev/games/move-sofa-game" rel="noopener noreferrer"&gt;https://harshku007.pages.dev/games/move-sofa-game&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Iske Solution tak aane mein kya kya steps liye thodi si explanation video:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=2Hpnjwz8YEo" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=2Hpnjwz8YEo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At last but not least i would like to say all of you that aapne yahan tak padha aur agar aap bhi thoda sa stuck feel kar rahen hain kisi bhi point par then keep going and sooner or later aapko uska impact dikhega bas sahi kaam karte rahiye kyonki slow progress while managing every part of life is good than dropping out things in the middle aur Maahi bhai yaani ki The One &amp;amp; Only Captain Cool MS Dhoni ka Cricket bhi hamen shayad yahi sikhata hai ki play till the end to win and stay strong come what may the situation arises to cool rahiye aur enjoy karte karte improve karte rahiye aur agar mere se koi Coding help chahiye ho yaa kuchh poochhna ho to jaroor poochhiye and i will be happy to help aur agar aap ek recruiter hain to i am happy to work at your company and Sorry agar time waste laga ho ise padhna mujhe thoda kam hi idea hai ki kaise ek post likha jata hai par apni feelings ko jaise bhi main kah sakta tha maine kahne ki koshish ki hai ek baar phir se sorry agar koi kami ho to aur Thanks if is post se aapko ek naya viewpoint mila ho to. &lt;/p&gt;

&lt;p&gt;PS: Vaise Ye post mere khud ke liye jyada likha lagta hai as a memory to keep me pushing towards my better version but Thik Hai :)&lt;/p&gt;

</description>
      <category>programming</category>
      <category>tcs</category>
      <category>codevita</category>
      <category>preparation</category>
    </item>
    <item>
      <title>Tic Tac Toe Using HTML, CSS and JS With Confetti animation</title>
      <dc:creator>Harsh Kumar</dc:creator>
      <pubDate>Fri, 19 Jan 2024 13:50:55 +0000</pubDate>
      <link>https://forem.com/harshku007/tic-tac-toe-using-html-css-and-js-with-confetti-animation-45ai</link>
      <guid>https://forem.com/harshku007/tic-tac-toe-using-html-css-and-js-with-confetti-animation-45ai</guid>
      <description>&lt;p&gt;Hello geeks we are going to make a simple Tic Tac Toe project with the magic of some Confetti animation to make your project stand out amongst all Tic Tac Toe projects.&lt;/p&gt;

&lt;p&gt;Play it yourself (&lt;a href="https://harshkumar123456.github.io/Tic-Tac-Toe-Using-HTML-CSS-and-JavaScript/" rel="noopener noreferrer"&gt;https://harshkumar123456.github.io/Tic-Tac-Toe-Using-HTML-CSS-and-JavaScript/&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;We are going to use simply HTML, CSS and JavaScript for our project to make it simple. If you are an expert then you can always opt for some framework like React, Angular or Vue or any other to do the same.  &lt;/p&gt;

&lt;p&gt;Let's start....&lt;/p&gt;

&lt;p&gt;First of all create a folder in which you are going to put this project. Let us name that folder &lt;strong&gt;project&lt;/strong&gt;. Open that folder in &lt;a href="https://code.visualstudio.com/" rel="noopener noreferrer"&gt;VS Code&lt;/a&gt;(A code editor).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt; Make a index.html file in that folder&lt;br&gt;
&lt;strong&gt;Step 2:&lt;/strong&gt; Now paste that code in your index.html and this is simply starting code of any html file you will be making.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html lang="en"&amp;gt;
&amp;lt;head&amp;gt;
    &amp;lt;meta charset="UTF-8"&amp;gt;
    &amp;lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&amp;gt;
    &amp;lt;title&amp;gt;Tic Tac Toe&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;

&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 3:&lt;/strong&gt; Now as we know the tic tac toe game have 9 boxes in it so we have to create them also. Make 9 boxes of tic tac toe and take them inside a div tag and give them appropriate class and id for selecting them in later styling.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html lang="en"&amp;gt;
&amp;lt;head&amp;gt;
    &amp;lt;meta charset="UTF-8"&amp;gt;
    &amp;lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&amp;gt;
    &amp;lt;title&amp;gt;Tic Tac Toe&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
    &amp;lt;div class="game-box"&amp;gt;
        &amp;lt;div class="box" id="1"&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;div class="box" id="2"&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;div class="box" id="3"&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;div class="box" id="4"&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;div class="box" id="5"&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;div class="box" id="6"&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;div class="box" id="7"&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;div class="box" id="8"&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;div class="box" id="9"&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 4:&lt;/strong&gt; Style them as you want here is one such example styling.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html lang="en"&amp;gt;

&amp;lt;head&amp;gt;
    &amp;lt;meta charset="UTF-8"&amp;gt;
    &amp;lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&amp;gt;
    &amp;lt;title&amp;gt;Tic Tac Toe&amp;lt;/title&amp;gt;
    &amp;lt;style&amp;gt;

        /* For Resetting any of the default margin padding in components */
        * {
            margin: 0px;
            padding: 0px;
        }

        /* For Centering the game-box div and giving some font-family for a different look */
        body {
            height: 90vh;
            padding: 10px;
            display: flex;
            justify-content: center;
            align-items: center;
            flex-direction: column;
            gap: 20px;
            font-family: cursive, 'Gill Sans', 'Gill Sans MT', Calibri, 'Trebuchet MS', sans-serif;
        }


        /* For letting the 9 boxes of tic tac toe in layout of game */
        .game-box {
            width: 320px;
            display: grid;
            gap: 10px;
            grid-template-rows: 1fr 1fr 1fr;
            grid-template-columns: 1fr 1fr 1fr;
        }

        /* Box styling and making it flex for letting any O or X in center */
        .box {
            width: 100px;
            height: 100px;
            border-radius: 18px;
            background: #ffffff;
            box-shadow: 10px 10px 20px #c7c7c7,
                -10px -10px 20px #ffffff;

            display: flex;
            justify-content: center;
            align-items: center;

        }
    &amp;lt;/style&amp;gt;
&amp;lt;/head&amp;gt;

&amp;lt;body&amp;gt;
    &amp;lt;div class="game-box"&amp;gt;
        &amp;lt;div class="box" id="1"&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;div class="box" id="2"&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;div class="box" id="3"&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;div class="box" id="4"&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;div class="box" id="5"&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;div class="box" id="6"&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;div class="box" id="7"&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;div class="box" id="8"&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;div class="box" id="9"&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
&amp;lt;/body&amp;gt;

&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 5:&lt;/strong&gt; Add on click event listener to boxes&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html lang="en"&amp;gt;

&amp;lt;head&amp;gt;
    &amp;lt;meta charset="UTF-8"&amp;gt;
    &amp;lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&amp;gt;
    &amp;lt;title&amp;gt;Tic Tac Toe&amp;lt;/title&amp;gt;
    &amp;lt;style&amp;gt;
        /* For Resetting any of the default margin padding in components */
        * {
            margin: 0px;
            padding: 0px;
        }

        /* Utility Classes */
        .game-text {
            font-family: cursive, 'Gill Sans', 'Gill Sans MT', Calibri, 'Trebuchet MS', sans-serif;
            font-size: 40px;
            color: rgb(74, 74, 74);
            font-weight: bold;
        }

        /* For Centering the game-box div and giving some font-family for a different look */
        body {
            height: 90vh;
            padding: 10px;
            display: flex;
            justify-content: center;
            align-items: center;
            flex-direction: column;
            gap: 20px;
            font-family: cursive, 'Gill Sans', 'Gill Sans MT', Calibri, 'Trebuchet MS', sans-serif;
        }


        /* For letting the 9 boxes of tic tac toe in layout of game */
        .game-box {
            width: 320px;
            display: grid;
            gap: 10px;
            grid-template-rows: 1fr 1fr 1fr;
            grid-template-columns: 1fr 1fr 1fr;
        }

        /* Box styling and making it flex for letting any O or X in center */
        .box {
            width: 100px;
            height: 100px;
            border-radius: 18px;
            background: #ffffff;
            box-shadow: 10px 10px 20px #c7c7c7,
                -10px -10px 20px #ffffff;

            display: flex;
            justify-content: center;
            align-items: center;

        }
    &amp;lt;/style&amp;gt;
&amp;lt;/head&amp;gt;

&amp;lt;body&amp;gt;
    &amp;lt;div class="game-box game-text"&amp;gt;
        &amp;lt;div class="box" id="1"&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;div class="box" id="2"&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;div class="box" id="3"&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;div class="box" id="4"&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;div class="box" id="5"&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;div class="box" id="6"&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;div class="box" id="7"&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;div class="box" id="8"&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;div class="box" id="9"&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;script&amp;gt;

        // Add event listener to all the div having class box 
        function handleBoxClick(){
            console.log("Box " + this.id + " was clicked.");
        }

        const boxes = document.querySelectorAll('.box');

        boxes.forEach(box =&amp;gt; {
            box.addEventListener('click', handleBoxClick);
        });
    &amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;

&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 6:&lt;/strong&gt; Initialise player's turn and show O or X in game boxes on clicking and if clicked again then show alert and return&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html lang="en"&amp;gt;

&amp;lt;head&amp;gt;
    &amp;lt;meta charset="UTF-8"&amp;gt;
    &amp;lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&amp;gt;
    &amp;lt;title&amp;gt;Tic Tac Toe&amp;lt;/title&amp;gt;
    &amp;lt;style&amp;gt;
        /* For Resetting any of the default margin padding in components */
        * {
            margin: 0px;
            padding: 0px;
        }

        /* Utility Classes */
        .game-text {
            font-family: cursive, 'Gill Sans', 'Gill Sans MT', Calibri, 'Trebuchet MS', sans-serif;
            font-size: 40px;
            color: rgb(74, 74, 74);
            font-weight: bold;
        }

        /* For Centering the game-box div and giving some font-family for a different look */
        body {
            height: 90vh;
            padding: 10px;
            display: flex;
            justify-content: center;
            align-items: center;
            flex-direction: column;
            gap: 20px;
            font-family: cursive, 'Gill Sans', 'Gill Sans MT', Calibri, 'Trebuchet MS', sans-serif;
        }


        /* For letting the 9 boxes of tic tac toe in layout of game */
        .game-box {
            width: 320px;
            display: grid;
            gap: 10px;
            grid-template-rows: 1fr 1fr 1fr;
            grid-template-columns: 1fr 1fr 1fr;
        }

        /* Box styling and making it flex for letting any O or X in center */
        .box {
            width: 100px;
            height: 100px;
            border-radius: 18px;
            background: #ffffff;
            box-shadow: 10px 10px 20px #c7c7c7,
                -10px -10px 20px #ffffff;

            display: flex;
            justify-content: center;
            align-items: center;

        }
    &amp;lt;/style&amp;gt;
&amp;lt;/head&amp;gt;

&amp;lt;body&amp;gt;
    &amp;lt;div class="game-box game-text"&amp;gt;
        &amp;lt;div class="box" id="1"&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;div class="box" id="2"&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;div class="box" id="3"&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;div class="box" id="4"&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;div class="box" id="5"&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;div class="box" id="6"&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;div class="box" id="7"&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;div class="box" id="8"&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;div class="box" id="9"&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;script&amp;gt;

        // Initialise playerTurn variable to know player's turn 
        let playerTurn = "O";

        // Function to toggle player's turn 
        function setPlayerTurn() {
            playerTurn = playerTurn === "O" ? "X" : "O";
        }

        // Add event listener to all the div having class box 
        function handleBoxClick(){
            console.log("Box " + this.id + " was clicked.");

            if(this.innerHTML){
                // If box has something in it then the same box should not clicked more than once show alert and return
                alert("Box is already filled...");
                return ;
            }

            // Change text inside box
            this.innerHTML = playerTurn;

            console.log("Now player turn is changed to " + playerTurn);
            setPlayerTurn();
            console.log(" to " + playerTurn);
        }

        const boxes = document.querySelectorAll('.box');

        boxes.forEach(box =&amp;gt; {
            box.addEventListener('click', handleBoxClick);
        });

    &amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;

&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 7:&lt;/strong&gt; Setup winning logic and play winning sound if the current player won and save the sound file named &lt;strong&gt;victory-sound.mp3&lt;/strong&gt; in same &lt;strong&gt;project&lt;/strong&gt; folder&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html lang="en"&amp;gt;

&amp;lt;head&amp;gt;
    &amp;lt;meta charset="UTF-8"&amp;gt;
    &amp;lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&amp;gt;
    &amp;lt;title&amp;gt;Tic Tac Toe&amp;lt;/title&amp;gt;
    &amp;lt;style&amp;gt;
        /* For Resetting any of the default margin padding in components */
        * {
            margin: 0px;
            padding: 0px;
        }

        /* Utility Classes */
        .game-text {
            font-family: cursive, 'Gill Sans', 'Gill Sans MT', Calibri, 'Trebuchet MS', sans-serif;
            font-size: 40px;
            color: rgb(74, 74, 74);
            font-weight: bold;
        }

        /* For Centering the game-box div and giving some font-family for a different look */
        body {
            height: 90vh;
            padding: 10px;
            display: flex;
            justify-content: center;
            align-items: center;
            flex-direction: column;
            gap: 20px;
            font-family: cursive, 'Gill Sans', 'Gill Sans MT', Calibri, 'Trebuchet MS', sans-serif;
        }


        /* For letting the 9 boxes of tic tac toe in layout of game */
        .game-box {
            width: 320px;
            display: grid;
            gap: 10px;
            grid-template-rows: 1fr 1fr 1fr;
            grid-template-columns: 1fr 1fr 1fr;
        }

        /* Box styling and making it flex for letting any O or X in center */
        .box {
            width: 100px;
            height: 100px;
            border-radius: 18px;
            background: #ffffff;
            box-shadow: 10px 10px 20px #c7c7c7,
                -10px -10px 20px #ffffff;

            display: flex;
            justify-content: center;
            align-items: center;

        }
    &amp;lt;/style&amp;gt;
&amp;lt;/head&amp;gt;

&amp;lt;body&amp;gt;
    &amp;lt;div class="game-box game-text"&amp;gt;
        &amp;lt;div class="box" id="1"&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;div class="box" id="2"&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;div class="box" id="3"&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;div class="box" id="4"&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;div class="box" id="5"&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;div class="box" id="6"&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;div class="box" id="7"&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;div class="box" id="8"&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;div class="box" id="9"&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;script&amp;gt;

        // Initialise playerTurn variable to know player's turn 
        let playerTurn = "O";
        let winner = false;
        let winningPattern = null;
        let winningSound = new Audio("victory-sound.mp3");

        const winningPatterns = [
            [1, 2, 3], // Horizontal rows
            [4, 5, 6],
            [7, 8, 9],
            [1, 4, 7], // Vertical columns
            [2, 5, 8],
            [3, 6, 9],
            [1, 5, 9], // Diagonals
            [3, 5, 7]
        ];


        function findPatternMatch(currentPlayer, pattern) {
            console.log("inside pattern" + pattern);

            for (const index of pattern) {
                if (document.getElementById(index.toString()).innerHTML !== currentPlayer) {
                    return false;
                }
            }

            return true;
        }


        function checkIfCurrentPlayerWon(currentPlayer) {
            for (const pattern of winningPatterns) {
                let isPatternMatch = findPatternMatch(currentPlayer, pattern);
                if (isPatternMatch) {
                    winningPattern = pattern;
                    winningSound.play();

                    return true;
                }
            }

            return false;
        }

        // Function to toggle player's turn 
        function setPlayerTurn() {
            playerTurn = playerTurn === "O" ? "X" : "O";
        }

        // Add event listener to all the div having class box 
        function handleBoxClick(){
            console.log("Box " + this.id + " was clicked.");

            if(this.innerHTML){
                // If box has something in it then the same box should not clicked more than once show alert and return
                alert("Box is already filled...");
                return ;
            }

            // Change text inside box
            this.innerHTML = playerTurn;

            let currentPlayer = playerTurn;
            winner = checkIfCurrentPlayerWon(currentPlayer);

            console.log("Now player turn is changed to " + playerTurn);
            setPlayerTurn();
            console.log(" to " + playerTurn);
        }

        const boxes = document.querySelectorAll('.box');

        boxes.forEach(box =&amp;gt; {
            box.addEventListener('click', handleBoxClick);
        });

    &amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;

&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 8:&lt;/strong&gt; Add some error handling if one player wins then let the users know and if they click again on boxes then say them to restart game&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html lang="en"&amp;gt;

&amp;lt;head&amp;gt;
    &amp;lt;meta charset="UTF-8"&amp;gt;
    &amp;lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&amp;gt;
    &amp;lt;title&amp;gt;Tic Tac Toe&amp;lt;/title&amp;gt;
    &amp;lt;style&amp;gt;
        /* For Resetting any of the default margin padding in components */
        * {
            margin: 0px;
            padding: 0px;
        }

        /* Utility Classes */
        .game-text {
            font-family: cursive, 'Gill Sans', 'Gill Sans MT', Calibri, 'Trebuchet MS', sans-serif;
            font-size: 40px;
            color: rgb(74, 74, 74);
            font-weight: bold;
        }

        /* For Centering the game-box div and giving some font-family for a different look */
        body {
            height: 90vh;
            padding: 10px;
            display: flex;
            justify-content: center;
            align-items: center;
            flex-direction: column;
            gap: 20px;
            font-family: cursive, 'Gill Sans', 'Gill Sans MT', Calibri, 'Trebuchet MS', sans-serif;
        }


        /* For letting the 9 boxes of tic tac toe in layout of game */
        .game-box {
            width: 320px;
            display: grid;
            gap: 10px;
            grid-template-rows: 1fr 1fr 1fr;
            grid-template-columns: 1fr 1fr 1fr;
        }

        /* Box styling and making it flex for letting any O or X in center */
        .box {
            width: 100px;
            height: 100px;
            border-radius: 18px;
            background: #ffffff;
            box-shadow: 10px 10px 20px #c7c7c7,
                -10px -10px 20px #ffffff;

            display: flex;
            justify-content: center;
            align-items: center;

        }
    &amp;lt;/style&amp;gt;
&amp;lt;/head&amp;gt;

&amp;lt;body&amp;gt;
    &amp;lt;div class="player-turn-box game-text"&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;div class="game-box game-text"&amp;gt;
        &amp;lt;div class="box" id="1"&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;div class="box" id="2"&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;div class="box" id="3"&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;div class="box" id="4"&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;div class="box" id="5"&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;div class="box" id="6"&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;div class="box" id="7"&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;div class="box" id="8"&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;div class="box" id="9"&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;script&amp;gt;

        // Initialise playerTurn variable to know player's turn 
        let playerTurn = "O";
        let winner = false;
        let winningPattern = null;
        let winningSound = new Audio("victory-sound.mp3");

        const winningPatterns = [
            [1, 2, 3], // Horizontal rows
            [4, 5, 6],
            [7, 8, 9],
            [1, 4, 7], // Vertical columns
            [2, 5, 8],
            [3, 6, 9],
            [1, 5, 9], // Diagonals
            [3, 5, 7]
        ];

        // Function to reload game
        function reloadGame() {
            location.reload();
        }

        // Initialise the player turn box to let the user know who will be going to start
        (document.getElementsByClassName("player-turn-box"))[0].innerHTML = "&amp;lt;h1&amp;gt;Player " + playerTurn + " Turn&amp;lt;/h1&amp;gt;";


        function findPatternMatch(currentPlayer, pattern) {
            console.log("inside pattern" + pattern);

            for (const index of pattern) {
                if (document.getElementById(index.toString()).innerHTML !== currentPlayer) {
                    return false;
                }
            }

            return true;
        }


        function checkIfCurrentPlayerWon(currentPlayer) {
            for (const pattern of winningPatterns) {
                let isPatternMatch = findPatternMatch(currentPlayer, pattern);
                if (isPatternMatch) {
                    winningPattern = pattern;
                    winningSound.play();

                    return true;
                }
            }

            return false;
        }

        // Function to toggle player's turn 
        function setPlayerTurn() {
            playerTurn = playerTurn === "O" ? "X" : "O";
        }

        // Add event listener to all the div having class box 
        function handleBoxClick(){
            // If we got our winner then say user to restart game 
            if (winner) {
                (document.getElementsByClassName("player-turn-box"))[0].innerHTML = "&amp;lt;h1&amp;gt;Please restart game &amp;lt;button onclick='reloadGame()' style='border: none; background: none;'&amp;gt; &amp;lt;img width='24' height='24' src='https://img.icons8.com/material-two-tone/24/restart--v1.png' alt='restart--v1'/&amp;gt; &amp;lt;/button&amp;gt; &amp;lt;/h1&amp;gt;";
                return;
            }

            console.log("Box " + this.id + " was clicked.");

            if(this.innerHTML){
                // If box has something in it then the same box should not clicked more than once show alert and return
                alert("Box is already filled...");
                return ;
            }

            // Change text inside box
            this.innerHTML = playerTurn;

            let currentPlayer = playerTurn;
            winner = checkIfCurrentPlayerWon(currentPlayer);

            console.log("Now player turn is changed to " + playerTurn);
            setPlayerTurn();
            console.log(" to " + playerTurn);

            if (winner) {
                // If we got our winner then tell the users that the current player is won
                console.log("Now winner is " + playerTurn + " wohoo....");
                (document.getElementsByClassName("player-turn-box"))[0].innerHTML = "&amp;lt;h1&amp;gt; ' " + currentPlayer + " ' Wons &amp;lt;button onclick='reloadGame()' style='border: none; background: none;'&amp;gt; &amp;lt;img width='24' height='24' src='https://img.icons8.com/material-two-tone/24/restart--v1.png' alt='restart--v1'/&amp;gt; &amp;lt;/button&amp;gt;&amp;lt;/h1&amp;gt;";
            }
            else {
                (document.getElementsByClassName("player-turn-box"))[0].innerHTML = "&amp;lt;h1&amp;gt;Player " + playerTurn + " Turn&amp;lt;/h1&amp;gt;";
            }
        }

        const boxes = document.querySelectorAll('.box');

        boxes.forEach(box =&amp;gt; {
            box.addEventListener('click', handleBoxClick);
        });

    &amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;

&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Animation time
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Update styling in style tag for zoom in and out effect&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Include &lt;a href="https://www.npmjs.com/package/canvas-confetti" rel="noopener noreferrer"&gt;this&lt;/a&gt; CDN Link for confetti animation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://cdn.jsdelivr.net/npm/canvas-confetti@1.9.2/dist/confetti.browser.min.js" rel="noopener noreferrer"&gt;https://cdn.jsdelivr.net/npm/canvas-confetti@1.9.2/dist/confetti.browser.min.js&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Make functions to animate pattern we have got already earlier stored&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Final code
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html lang="en"&amp;gt;

&amp;lt;head&amp;gt;
    &amp;lt;meta charset="UTF-8"&amp;gt;
    &amp;lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&amp;gt;
    &amp;lt;title&amp;gt;Tic Tac Toe&amp;lt;/title&amp;gt;
    &amp;lt;style&amp;gt;
        /* For Resetting any of the default margin padding in components */
        * {
            margin: 0px;
            padding: 0px;
        }

        /* Utility Classes */
        .game-text {
            font-family: cursive, 'Gill Sans', 'Gill Sans MT', Calibri, 'Trebuchet MS', sans-serif;
            font-size: 40px;
            color: rgb(74, 74, 74);
            font-weight: bold;
        }

        /* For Centering the game-box div and giving some font-family for a different look */
        body {
            height: 90vh;
            padding: 10px;
            display: flex;
            justify-content: center;
            align-items: center;
            flex-direction: column;
            gap: 20px;
            font-family: cursive, 'Gill Sans', 'Gill Sans MT', Calibri, 'Trebuchet MS', sans-serif;
        }


        /* For letting the 9 boxes of tic tac toe in layout of game */
        .game-box {
            width: 320px;
            display: grid;
            gap: 10px;
            grid-template-rows: 1fr 1fr 1fr;
            grid-template-columns: 1fr 1fr 1fr;
        }

        /* Box styling and making it flex for letting any O or X in center */
        .box {
            width: 100px;
            height: 100px;
            border-radius: 18px;
            background: #ffffff;
            box-shadow: 10px 10px 20px #c7c7c7,
                -10px -10px 20px #ffffff;

            display: flex;
            justify-content: center;
            align-items: center;
            transition: transform 0.5s ease-out;
        }

        .box.zoom-out {
            animation: zoomOut 0.5s ease-out;
        }

        .box.zoom-in {
            animation: zoomIn 0.5s ease-out;
        }

        @keyframes zoomOut {
            0% {
                transform: scale(1);
            }

            100% {
                transform: scale(0);
            }
        }

        @keyframes zoomIn {
            0% {
                transform: scale(0);
            }

            100% {
                transform: scale(1);
            }
        }
    &amp;lt;/style&amp;gt;
&amp;lt;/head&amp;gt;

&amp;lt;body&amp;gt;
    &amp;lt;div class="player-turn-box game-text"&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;div class="game-box game-text"&amp;gt;
        &amp;lt;div class="box" id="1"&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;div class="box" id="2"&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;div class="box" id="3"&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;div class="box" id="4"&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;div class="box" id="5"&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;div class="box" id="6"&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;div class="box" id="7"&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;div class="box" id="8"&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;div class="box" id="9"&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;script src="https://cdn.jsdelivr.net/npm/canvas-confetti@1.9.2/dist/confetti.browser.min.js"&amp;gt;&amp;lt;/script&amp;gt;

    &amp;lt;script&amp;gt;

        // Initialise playerTurn variable to know player's turn 
        let playerTurn = "O";
        let winner = false;
        let winningPattern = null;
        let winningSound = new Audio("victory-sound.mp3");

        const winningPatterns = [
            [1, 2, 3], // Horizontal rows
            [4, 5, 6],
            [7, 8, 9],
            [1, 4, 7], // Vertical columns
            [2, 5, 8],
            [3, 6, 9],
            [1, 5, 9], // Diagonals
            [3, 5, 7]
        ];

        // Animation of winning pattern
        function animateWinningPattern(winningPattern) {
            if (winningPattern) {
                confetti({
                    particleCount: 100,
                    startVelocity: 50,
                    spread: 360,
                    origin: {
                        x: Math.random(),
                        // since they fall down, start a bit higher than random
                        y: Math.random() - 0.2
                    }
                });

                for (const index of winningPattern) {
                    document.getElementById(index.toString()).classList.toggle("zoom-out");
                    document.getElementById(index.toString()).classList.toggle("zoom-in");
                }
            }
        }
        setInterval(() =&amp;gt; {
            animateWinningPattern(winningPattern);
        }, 500);

        // Function to reload game
        function reloadGame() {
            location.reload();
        }

        // Initialise the player turn box to let the user know who will be going to start
        (document.getElementsByClassName("player-turn-box"))[0].innerHTML = "&amp;lt;h1&amp;gt;Player " + playerTurn + " Turn&amp;lt;/h1&amp;gt;";


        function findPatternMatch(currentPlayer, pattern) {
            console.log("inside pattern" + pattern);

            for (const index of pattern) {
                if (document.getElementById(index.toString()).innerHTML !== currentPlayer) {
                    return false;
                }
            }

            return true;
        }


        function checkIfCurrentPlayerWon(currentPlayer) {
            for (const pattern of winningPatterns) {
                let isPatternMatch = findPatternMatch(currentPlayer, pattern);
                if (isPatternMatch) {
                    winningPattern = pattern;
                    winningSound.play();

                    return true;
                }
            }

            return false;
        }

        // Function to toggle player's turn 
        function setPlayerTurn() {
            playerTurn = playerTurn === "O" ? "X" : "O";
        }

        // Add event listener to all the div having class box 
        function handleBoxClick(){
            // If we got our winner then say user to restart game 
            if (winner) {
                (document.getElementsByClassName("player-turn-box"))[0].innerHTML = "&amp;lt;h1&amp;gt;Please restart game &amp;lt;button onclick='reloadGame()' style='border: none; background: none;'&amp;gt; &amp;lt;img width='24' height='24' src='https://img.icons8.com/material-two-tone/24/restart--v1.png' alt='restart--v1'/&amp;gt; &amp;lt;/button&amp;gt; &amp;lt;/h1&amp;gt;";
                return;
            }

            console.log("Box " + this.id + " was clicked.");

            if(this.innerHTML){
                // If box has something in it then the same box should not clicked more than once show alert and return
                alert("Box is already filled...");
                return ;
            }

            // Change text inside box
            this.innerHTML = playerTurn;

            let currentPlayer = playerTurn;
            winner = checkIfCurrentPlayerWon(currentPlayer);

            console.log("Now player turn is changed to " + playerTurn);
            setPlayerTurn();
            console.log(" to " + playerTurn);

            if (winner) {
                // If we got our winner then tell the users that the current player is won
                console.log("Now winner is " + playerTurn + " wohoo....");
                (document.getElementsByClassName("player-turn-box"))[0].innerHTML = "&amp;lt;h1&amp;gt; ' " + currentPlayer + " ' Wons &amp;lt;button onclick='reloadGame()' style='border: none; background: none;'&amp;gt; &amp;lt;img width='24' height='24' src='https://img.icons8.com/material-two-tone/24/restart--v1.png' alt='restart--v1'/&amp;gt; &amp;lt;/button&amp;gt;&amp;lt;/h1&amp;gt;";
            }
            else {
                (document.getElementsByClassName("player-turn-box"))[0].innerHTML = "&amp;lt;h1&amp;gt;Player " + playerTurn + " Turn&amp;lt;/h1&amp;gt;";
            }
        }

        const boxes = document.querySelectorAll('.box');

        boxes.forEach(box =&amp;gt; {
            box.addEventListener('click', handleBoxClick);
        });

    &amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;

&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Thank you for reading &lt;/p&gt;

&lt;h2&gt;
  
  
  Harsh Kumar
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/in/harsh-kumar-158634233/" rel="noopener noreferrer"&gt;Let us connect&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>confetti</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
