{"id":27083,"date":"2026-08-25T21:07:31","date_gmt":"2026-08-25T15:37:31","guid":{"rendered":"https:\/\/qsh.in\/boards\/wbbse\/?p=27083"},"modified":"2026-08-25T21:16:16","modified_gmt":"2026-08-25T15:46:16","slug":"3-digit-subtraction","status":"publish","type":"post","link":"https:\/\/qsh.in\/boards\/wbbse\/mental-math\/3-digit-subtraction\/","title":{"rendered":"\u09e9-\u0985\u0999\u09cd\u0995\u09c7\u09b0 \u09ac\u09bf\u09df\u09cb\u0997\u09c7\u09b0 \u09ae\u09cd\u09af\u09be\u099c\u09bf\u0995! (Samudrayaan Deep Ocean)"},"content":{"rendered":"<p>\u0986\u099c\u0995\u09c7\u09b0 \u0997\u09c7\u09ae\u099f\u09bf \u098f\u0995\u099f\u09c1 \u0986\u09b2\u09be\u09a6\u09be! \u0986\u09ae\u09b0\u09be \u099a\u09b2\u09c7 \u098f\u09b8\u09c7\u099b\u09bf \u0997\u09ad\u09c0\u09b0 \u09b8\u09ae\u09c1\u09a6\u09cd\u09b0\u09c7\u09b0 \u09a8\u09bf\u099a\u09c7, \u0986\u09ae\u09be\u09a6\u09c7\u09b0 <strong>\u09b8\u09ae\u09c1\u09a6\u09cd\u09b0\u09af\u09be\u09a8 (Submarine)<\/strong> \u09a8\u09bf\u09df\u09c7\u0964 \u0995\u09bf\u09a8\u09cd\u09a4\u09c1 \u09b9\u09a0\u09be\u09ce \u0995\u09b0\u09c7 \u09b8\u09be\u09ae\u09a8\u09c7 \u0985\u09a8\u09c7\u0995 \u09ac\u09dc \u09ac\u09dc \u09b8\u09be\u09ae\u09c1\u09a6\u09cd\u09b0\u09bf\u0995 \u09ae\u09be\u0987\u09a8 \u0986\u09b0 \u09aa\u09be\u09a5\u09b0 \u09ad\u09c7\u09b8\u09c7 \u0986\u09b8\u099b\u09c7! \u098f\u0997\u09c1\u09b2\u09cb\u0995\u09c7 \u09b8\u09b0\u09be\u09a4\u09c7 \u09b9\u09b2\u09c7 \u09a4\u09cb\u09ae\u09be\u0995\u09c7 <strong>\u09b8\u09a8\u09bf\u0995 \u0993\u09df\u09c7\u09ad<\/strong> \u099b\u09c1\u0981\u09dc\u09a4\u09c7 \u09b9\u09ac\u09c7\u0964 \u0986\u09b0 \u09b8\u09a8\u09bf\u0995 \u0993\u09df\u09c7\u09ad \u09ab\u09be\u09df\u09be\u09b0 \u0995\u09b0\u09be\u09b0 \u098f\u0995\u09ae\u09be\u09a4\u09cd\u09b0 \u0989\u09aa\u09be\u09df \u09b9\u09b2\u09cb\u2014\u09ac\u09dc \u09ac\u09dc \u09e9-\u0985\u0999\u09cd\u0995\u09c7\u09b0 \u09ac\u09bf\u09df\u09cb\u0997 \u0996\u09be\u09a4\u09be-\u0995\u09b2\u09ae \u099b\u09be\u09dc\u09be \u09e8 \u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1\u09c7 \u09b8\u09ae\u09be\u09a7\u09be\u09a8 \u0995\u09b0\u09be!<\/p>\n<p>\u09ad\u09df \u09aa\u09c7\u09df\u09cb \u09a8\u09be, \u0986\u099c \u0986\u09ae\u09bf \u09a4\u09cb\u09ae\u09be\u0995\u09c7 <strong>\u09b0\u09be\u0989\u09a8\u09cd\u09a1\u09bf\u0982 \u09ae\u09c7\u09a5\u09a1 (Rounding Strategy)<\/strong> \u09a8\u09be\u09ae\u09c7\u09b0 \u098f\u0995\u099f\u09bf \u09ae\u09cd\u09af\u09be\u099c\u09bf\u0995 \u099f\u09cd\u09b0\u09bf\u0995 \u09b6\u09c7\u0996\u09be\u09ac\u0964<\/p>\n<h3>\u09ae\u09cd\u09af\u09be\u099c\u09bf\u0995 \u099f\u09cd\u09b0\u09bf\u0995: \u09e9-\u0985\u0999\u09cd\u0995\u09c7\u09b0 \u09b0\u09be\u0989\u09a8\u09cd\u09a1\u09bf\u0982 \u0995\u09cc\u09b6\u09b2 \u2728<\/h3>\n<p>\u09af\u0996\u09a8 \u09ac\u09bf\u09df\u09cb\u0997 \u0995\u09b0\u09be\u09b0 \u09b8\u0982\u0996\u09cd\u09af\u09be\u099f\u09bf \u0995\u09cb\u09a8\u09cb \u09b6\u09a4\u0995\u09c7\u09b0 (\u09af\u09c7\u09ae\u09a8 \u09e7\u09e6\u09e6, \u09e8\u09e6\u09e6, \u09e9\u09e6\u09e6) \u0996\u09c1\u09ac \u0995\u09be\u099b\u09be\u0995\u09be\u099b\u09bf \u09b9\u09df (\u09af\u09c7\u09ae\u09a8: \u09e7\u09ef\u09eb, \u09e8\u09ef\u09ee, \u09e9\u09ef\u09e6), \u09a4\u0996\u09a8 \u098f\u0987 \u09a8\u09bf\u09df\u09ae\u099f\u09bf \u099c\u09be\u09a6\u09c1\u09b0 \u09ae\u09a4\u09cb \u0995\u09be\u099c \u0995\u09b0\u09c7\u0964<\/p>\n<p><strong>\u0989\u09a6\u09be\u09b9\u09b0\u09a3 \u09a6\u09c7\u0996\u09cb: \u09eb\u09ea\u09e9 \u2013 \u09e8\u09ef\u09ee = ?<\/strong><\/p>\n<ul>\n<li><strong>\u09a7\u09be\u09aa \u09e7:<\/strong> \u09e8\u09ef\u09ee \u09b8\u0982\u0996\u09cd\u09af\u09be\u099f\u09bf \u09e9\u09e6\u09e6 \u098f\u09b0 \u0996\u09c1\u09ac \u0995\u09be\u099b\u09be\u0995\u09be\u099b\u09bf\u0964 \u09a4\u09be\u0987 \u09e8\u09ef\u09ee \u098f\u09b0 \u099c\u09be\u09df\u0997\u09be\u09df \u09ae\u09a8\u09c7 \u09ae\u09a8\u09c7 \u09e9\u09e6\u09e6 \u09a7\u09b0\u09c7 \u09a8\u09be\u0993\u0964<\/li>\n<li><strong>\u09a7\u09be\u09aa \u09e8:<\/strong> \u098f\u09ac\u09be\u09b0 \u09eb\u09ea\u09e9 \u09a5\u09c7\u0995\u09c7 \u09e9\u09e6\u09e6 \u09ac\u09bf\u09df\u09cb\u0997 \u0995\u09b0\u09cb: \u09eb\u09ea\u09e9 \u2013 \u09e9\u09e6\u09e6 = <strong>\u09e8\u09ea\u09e9<\/strong> (\u098f\u099f\u09be \u09ae\u09c1\u0996\u09c7 \u09ae\u09c1\u0996\u09c7 \u0995\u09b0\u09be \u0996\u09c1\u09ac \u09b8\u09b9\u099c!)\u0964<\/li>\n<li><strong>\u09a7\u09be\u09aa \u09e9:<\/strong> \u09af\u09c7\u09b9\u09c7\u09a4\u09c1 \u09a4\u09c1\u09ae\u09bf \u09e8\u09ef\u09ee \u098f\u09b0 \u09ac\u09a6\u09b2\u09c7 \u09e9\u09e6\u09e6 \u09ac\u09bf\u09df\u09cb\u0997 \u0995\u09b0\u09c7\u099b\u09bf\u09b2\u09c7 (\u0985\u09b0\u09cd\u09a5\u09be\u09ce \u09e8 \u09ac\u09c7\u09b6\u09bf \u09ac\u09be\u09a6 \u09a6\u09bf\u09df\u09c7\u099b\u09bf\u09b2\u09c7), \u09a4\u09be\u0987 \u098f\u09ac\u09be\u09b0 \u09e8\u09ea\u09e9 \u098f\u09b0 \u09b8\u09be\u09a5\u09c7 \u09b8\u09c7\u0987 \u09e8 \u09af\u09cb\u0997 \u0995\u09b0\u09c7 \u09a6\u09be\u0993: \u09e8\u09ea\u09e9 + \u09e8 = <strong>\u09e8\u09ea\u09eb<\/strong>\u0964<\/li>\n<\/ul>\n<p>\u0989\u09a4\u09cd\u09a4\u09b0 \u09aa\u09c7\u09df\u09c7 \u0997\u09c7\u09b2\u09c7 \u09e8 \u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1\u09c7 \u2794 <strong>\u09e8\u09ea\u09eb<\/strong>!<\/p>\n<h3>\u09af\u09a6\u09bf \u09b0\u09be\u0989\u09a8\u09cd\u09a1\u09bf\u0982 \u0995\u09b0\u09be \u09a8\u09be \u09af\u09be\u09df? (Chunking Method) \ud83e\udd14<\/h3>\n<p>\u09af\u09a6\u09bf \u09b8\u0982\u0996\u09cd\u09af\u09be\u099f\u09bf \u09b0\u09be\u0989\u09a8\u09cd\u09a1\u09bf\u0982 \u0995\u09b0\u09be\u09b0 \u09ae\u09a4\u09cb \u09a8\u09be \u09b9\u09df (\u09af\u09c7\u09ae\u09a8: \u09ec\u09eb\u09ea \u2013 \u09e8\u09e9\u09e7), \u09a4\u0996\u09a8 \u0986\u09ae\u09b0\u09be \u09aa\u09cd\u09b0\u09a5\u09ae \u09b8\u0982\u0996\u09cd\u09af\u09be\u099f\u09bf \u0986\u09b8\u09cd\u09a4 \u09b0\u09c7\u0996\u09c7 \u09a6\u09cd\u09ac\u09bf\u09a4\u09c0\u09df \u09b8\u0982\u0996\u09cd\u09af\u09be\u099f\u09bf\u0995\u09c7 \u09ad\u09c7\u0999\u09c7 \u09a7\u09be\u09aa\u09c7 \u09a7\u09be\u09aa\u09c7 \u09ac\u09be\u09a6 \u09a6\u09c7\u09ac\u0964<\/p>\n<ul>\n<li><strong>\u09a7\u09be\u09aa \u09e7:<\/strong> \u09b6\u09a4\u0995 \u09ac\u09be\u09a6 \u09a6\u09be\u0993: \u09ec\u09eb\u09ea \u2013 \u09e8\u09e6\u09e6 = <strong>\u09ea\u09eb\u09ea<\/strong><\/li>\n<li><strong>\u09a7\u09be\u09aa \u09e8:<\/strong> \u09a6\u09b6\u0995 \u09ac\u09be\u09a6 \u09a6\u09be\u0993: \u09ea\u09eb\u09ea \u2013 \u09e9\u09e6 = <strong>\u09ea\u09e8\u09ea<\/strong><\/li>\n<li><strong>\u09a7\u09be\u09aa \u09e9:<\/strong> \u098f\u0995\u0995 \u09ac\u09be\u09a6 \u09a6\u09be\u0993: \u09ea\u09e8\u09ea \u2013 \u09e7 = <strong>\u09ea\u09e8\u09e9<\/strong><\/li>\n<\/ul>\n<h3>\u098f\u09ac\u09be\u09b0 \u09a4\u09cb\u09ae\u09be\u09b0 \u09aa\u09be\u09b2\u09be! \u09b8\u09be\u09ac\u09ae\u09c7\u09b0\u09bf\u09a8 \u09ac\u09be\u0981\u099a\u09be\u0993! \ud83d\ude80<\/h3>\n<p>\u0996\u09be\u09a4\u09be-\u0995\u09b2\u09ae \u09a6\u09c2\u09b0\u09c7 \u09b8\u09b0\u09bf\u09df\u09c7 \u09b0\u09be\u0996\u09cb! \u09a8\u09bf\u099a\u09c7 \u09a5\u09be\u0995\u09be \u0997\u09c7\u09ae\u099f\u09bf\u09a4\u09c7 <strong>\u201c\u09ae\u09bf\u09b6\u09a8 \u09b6\u09c1\u09b0\u09c1 \u0995\u09b0\u09cb\u201d<\/strong> \u09ac\u09be\u099f\u09a8\u09c7 \u0995\u09cd\u09b2\u09bf\u0995 \u0995\u09b0\u09cb\u0964 \u09b8\u09cd\u0995\u09cd\u09b0\u09bf\u09a8\u09c7 \u09ac\u09dc \u09ac\u09bf\u09df\u09cb\u0997\u09c7\u09b0 \u0985\u0999\u09cd\u0995 \u098f\u09b2\u09c7\u0987 \u09b0\u09be\u0989\u09a8\u09cd\u09a1\u09bf\u0982 \u099f\u09cd\u09b0\u09bf\u0995 \u09ac\u09cd\u09af\u09ac\u09b9\u09be\u09b0 \u0995\u09b0\u09c7 \u09b8\u09a0\u09bf\u0995 \u0989\u09a4\u09cd\u09a4\u09b0\u099f\u09bf \u09ac\u09c7\u099b\u09c7 \u09a8\u09be\u0993\u0964 \u09a4\u09c1\u09ae\u09bf \u09af\u09a4 \u09a6\u09cd\u09b0\u09c1\u09a4 \u09b8\u09a0\u09bf\u0995 \u0989\u09a4\u09cd\u09a4\u09b0 \u09a6\u09c7\u09ac\u09c7, \u09a4\u09cb\u09ae\u09be\u09b0 \u09b8\u09be\u09ac\u09ae\u09c7\u09b0\u09bf\u09a8 \u09a5\u09c7\u0995\u09c7 \u09a4\u09a4 \u09a6\u09cd\u09b0\u09c1\u09a4 \u09b8\u09a8\u09bf\u0995 \u0993\u09df\u09c7\u09ad \u09ab\u09be\u09df\u09be\u09b0 \u09b9\u09ac\u09c7 \u098f\u09ac\u0982 \u09ae\u09be\u0987\u09a8 \u09a7\u09cd\u09ac\u0982\u09b8 \u09b9\u09ac\u09c7!<\/p>\n<p>\u09a6\u09c7\u0996\u09bf \u09a4\u09c1\u09ae\u09bf \u0986\u099c \u0995\u09a4 \u09b8\u09cd\u0995\u09cb\u09b0 \u0995\u09b0\u09a4\u09c7 \u09aa\u09be\u09b0\u09cb! \u099a\u09b2\u09cb \u0996\u09c7\u09b2\u09bf\u2026<\/p>\n    <div id=\"qsh-27083-240\" class=\"qsh-sim-frame-wrap\" style=\"--qsh-aspect: 1\/1;\">\n        <div class=\"qsh-sim-bar\">\n            <div class=\"qsh-sim-label\"><span class=\"qsh-dot\"><\/span> Interactive Simulator<\/div>\n            <div class=\"qsh-sim-controls\">\n                <button type=\"button\" class=\"qsh-sim-btn qsh-btn-reload\" onclick=\"document.getElementById('if-qsh-27083-240').srcdoc = document.getElementById('if-qsh-27083-240').srcdoc;\" aria-label=\"Restart\">\n                    <svg viewbox=\"0 0 24 24\" width=\"14\" height=\"14\" fill=\"currentColor\"><path d=\"M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z\"><\/path><\/svg>\n                <\/button>\n                <button type=\"button\" class=\"qsh-sim-btn qsh-btn-fs\" id=\"fs-btn-qsh-27083-240\" aria-label=\"Fullscreen\">\n                    <svg viewbox=\"0 0 24 24\" width=\"14\" height=\"14\" fill=\"currentColor\"><path d=\"M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z\"><\/path><\/svg>\n                    <span>Expand<\/span>\n                <\/button>\n            <\/div>\n        <\/div>\n        <div class=\"qsh-sim-viewport\">\n            <iframe id=\"if-qsh-27083-240\" srcdoc=\"&lt;!DOCTYPE html&gt;&lt;html&gt;&lt;head&gt;&lt;base href=&quot;https:\/\/qsh.in\/boards\/wbbse\/&quot;&gt;&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no&quot;&gt;&lt;style&gt;*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;}html,body{width:100%;height:100%;margin:0;padding:0;overflow:hidden;touch-action:manipulation;background:#0b0f19;color:#f8fafc;font-family:system-ui,-apple-system,sans-serif;}&lt;\/style&gt;&lt;style&gt;#sim-root {\r\n    position: relative;\r\n    width: 100%;\r\n    height: 100vh;\r\n    min-height: 600px;\r\n    background-color: #000a14;\r\n    color: #e0f7fa;\r\n    font-family: 'Noto Sans Bengali', system-ui, sans-serif;\r\n    overflow: hidden;\r\n    display: flex;\r\n    flex-direction: column;\r\n    touch-action: manipulation;\r\n    -webkit-tap-highlight-color: transparent;\r\n    user-select: none;\r\n}\r\n\r\n.screen {\r\n    position: absolute;\r\n    top: 0;\r\n    left: 0;\r\n    width: 100%;\r\n    height: 100%;\r\n    display: none;\r\n    flex-direction: column;\r\n    justify-content: center;\r\n    align-items: center;\r\n    background: radial-gradient(circle at bottom, #003366 0%, #000a14 100%);\r\n    z-index: 10;\r\n}\r\n\r\n.screen.active {\r\n    display: flex;\r\n}\r\n\r\n#game-screen {\r\n    z-index: 1;\r\n    background: transparent;\r\n}\r\n\r\n.panel {\r\n    background: rgba(0, 20, 40, 0.85);\r\n    border: 2px solid #00b4d8;\r\n    border-radius: 16px;\r\n    padding: 2rem;\r\n    max-width: 90%;\r\n    width: 500px;\r\n    text-align: center;\r\n    box-shadow: 0 0 30px rgba(0, 180, 216, 0.4);\r\n    backdrop-filter: blur(8px);\r\n}\r\n\r\n.panel h1 {\r\n    color: #90e0ef;\r\n    margin-top: 0;\r\n    font-size: clamp(1.8rem, 5vw, 2.5rem);\r\n    text-shadow: 0 0 10px rgba(144, 224, 239, 0.5);\r\n}\r\n\r\n.panel p {\r\n    font-size: 1.1rem;\r\n    line-height: 1.6;\r\n    margin-bottom: 1.5rem;\r\n}\r\n\r\n.trick-box {\r\n    background: rgba(0, 180, 216, 0.15);\r\n    border-left: 4px solid #00b4d8;\r\n    padding: 12px;\r\n    font-size: 1rem !important;\r\n    text-align: left;\r\n    color: #caf0f8;\r\n    border-radius: 0 8px 8px 0;\r\n}\r\n\r\n.action-btn {\r\n    background: #0077b6;\r\n    color: #fff;\r\n    border: none;\r\n    padding: 12px 35px;\r\n    font-size: 1.3rem;\r\n    border-radius: 8px;\r\n    cursor: pointer;\r\n    font-weight: bold;\r\n    transition: all 0.2s;\r\n    box-shadow: 0 4px 15px rgba(0, 119, 182, 0.5);\r\n}\r\n\r\n.action-btn:active {\r\n    transform: scale(0.95);\r\n    background: #023e8a;\r\n}\r\n\r\n\/* HUD *\/\r\n#hud {\r\n    position: absolute;\r\n    top: 0;\r\n    left: 0;\r\n    width: 100%;\r\n    padding: 15px 20px;\r\n    display: flex;\r\n    justify-content: space-between;\r\n    box-sizing: border-box;\r\n    font-size: 1.2rem;\r\n    font-weight: bold;\r\n    color: #48cae4;\r\n    z-index: 5;\r\n    background: linear-gradient(to bottom, rgba(0,0,0,0.8) 0%, rgba(0,0,0,0) 100%);\r\n}\r\n\r\n\/* Timer *\/\r\n#timer-container {\r\n    position: absolute;\r\n    top: 60px;\r\n    left: 50%;\r\n    transform: translateX(-50%);\r\n    width: 80%;\r\n    max-width: 400px;\r\n    height: 12px;\r\n    background: rgba(0,0,0,0.5);\r\n    border-radius: 6px;\r\n    overflow: hidden;\r\n    z-index: 5;\r\n    border: 1px solid #00b4d8;\r\n}\r\n\r\n#timer-bar {\r\n    width: 100%;\r\n    height: 100%;\r\n    background: #00b4d8;\r\n    transition: width 0.1s linear, background-color 0.3s;\r\n}\r\n\r\n\/* Problem Display *\/\r\n#problem-display {\r\n    position: absolute;\r\n    top: 95px;\r\n    left: 50%;\r\n    transform: translateX(-50%);\r\n    z-index: 5;\r\n    background: rgba(0, 20, 40, 0.8);\r\n    border: 2px solid #00b4d8;\r\n    padding: 12px 40px;\r\n    border-radius: 12px;\r\n    backdrop-filter: blur(5px);\r\n    box-shadow: 0 5px 20px rgba(0, 180, 216, 0.3);\r\n}\r\n\r\n.problem-text {\r\n    font-size: clamp(2.2rem, 6vw, 3.2rem);\r\n    font-weight: bold;\r\n    color: #ffffff;\r\n    letter-spacing: 2px;\r\n}\r\n\r\n\/* Canvas *\/\r\n#game-canvas {\r\n    position: absolute;\r\n    top: 0;\r\n    left: 0;\r\n    width: 100%;\r\n    height: 100%;\r\n    z-index: 2;\r\n    background: linear-gradient(to bottom, #001f3f 0%, #003366 50%, #000022 100%);\r\n}\r\n\r\n\/* Control Dock *\/\r\n#control-dock {\r\n    position: absolute;\r\n    bottom: 25px;\r\n    left: 50%;\r\n    transform: translateX(-50%);\r\n    width: 95%;\r\n    max-width: 600px;\r\n    display: grid;\r\n    grid-template-columns: repeat(2, 1fr);\r\n    gap: 12px;\r\n    z-index: 10;\r\n}\r\n\r\n@media (min-width: 480px) {\r\n    #control-dock {\r\n        grid-template-columns: repeat(4, 1fr);\r\n    }\r\n}\r\n\r\n.option-btn {\r\n    background: rgba(0, 53, 102, 0.85);\r\n    border: 2px solid #48cae4;\r\n    color: #ffffff;\r\n    font-size: clamp(1.6rem, 5vw, 2.2rem);\r\n    padding: 15px 0;\r\n    border-radius: 12px;\r\n    cursor: pointer;\r\n    font-weight: bold;\r\n    transition: all 0.1s;\r\n    backdrop-filter: blur(8px);\r\n    box-shadow: 0 4px 10px rgba(0,0,0,0.5);\r\n}\r\n\r\n.option-btn:active {\r\n    background: #48cae4;\r\n    color: #000;\r\n    transform: scale(0.95);\r\n}\r\n\r\n.option-btn.correct {\r\n    background: #00e676;\r\n    color: #000;\r\n    border-color: #00e676;\r\n}\r\n\r\n.option-btn.wrong {\r\n    background: #ff1744;\r\n    color: #fff;\r\n    border-color: #ff1744;\r\n    animation: shake 0.3s;\r\n}\r\n\r\n@keyframes shake {\r\n    0%, 100% { transform: translateX(0); }\r\n    25% { transform: translateX(-6px); }\r\n    75% { transform: translateX(6px); }\r\n}&lt;\/style&gt;&lt;\/head&gt;&lt;body&gt;&lt;div id=&quot;sim-root&quot;&gt;\r\n    <!-- Start Screen -->\r\n    &lt;div id=&quot;start-screen&quot; class=&quot;screen active&quot;&gt;\r\n        &lt;div class=&quot;panel&quot;&gt;\r\n            &lt;h2&gt;\u09b8\u09ae\u09c1\u09a6\u09cd\u09b0\u09af\u09be\u09a8 \u09ae\u09bf\u09b6\u09a8&lt;\/h2&gt;\r\n            &lt;p&gt;\u0986\u09ae\u09be\u09a6\u09c7\u09b0 \u09b8\u09be\u09ac\u09ae\u09c7\u09b0\u09bf\u09a8 \u0997\u09ad\u09c0\u09b0 \u09b8\u09ae\u09c1\u09a6\u09cd\u09b0\u09c7 \u0986\u099f\u0995\u09c7 \u09aa\u09dc\u09c7\u099b\u09c7! \u09b8\u09be\u09ae\u09a8\u09c7 \u09ac\u09bf\u09b6\u09be\u09b2 \u09b8\u09ac \u09b8\u09be\u09ae\u09c1\u09a6\u09cd\u09b0\u09bf\u0995 \u09aa\u09be\u09a5\u09b0 \u0993 \u09ae\u09be\u0987\u09a8 \u09ad\u09c7\u09b8\u09c7 \u0986\u09b8\u099b\u09c7\u0964&lt;\/p&gt;\r\n            &lt;p class=&quot;trick-box&quot;&gt;&lt;strong&gt;\u09ac\u09c8\u09a6\u09bf\u0995 \u099f\u09cd\u09b0\u09bf\u0995:&lt;\/strong&gt; \u09e7\u09ef\u09eb, \u09e8\u09ef\u09ee-\u098f\u09b0 \u09ae\u09a4\u09cb \u09b8\u0982\u0996\u09cd\u09af\u09be \u09ac\u09bf\u09df\u09cb\u0997 \u0995\u09b0\u09a4\u09c7 \u0995\u09be\u099b\u09c7\u09b0 \u09b6\u09a4\u0995 (\u09e8\u09e6\u09e6, \u09e9\u09e6\u09e6) \u09a7\u09b0\u09c7 \u09a8\u09be\u0993\u0964 \u09a4\u09be\u09b0\u09aa\u09b0 \u09af\u09a4\u099f\u09c1\u0995\u09c1 \u09ac\u09c7\u09b6\u09bf \u09ac\u09bf\u09df\u09cb\u0997 \u0995\u09b0\u09c7\u099b\u09cb, \u09a4\u09be \u09af\u09cb\u0997 \u0995\u09b0\u09c7 \u09a6\u09be\u0993!&lt;\/p&gt;\r\n            &lt;p&gt;\u09b8\u09a0\u09bf\u0995 \u0989\u09a4\u09cd\u09a4\u09b0 \u09ac\u09c7\u099b\u09c7 \u09a8\u09bf\u09df\u09c7 '\u09b8\u09a8\u09bf\u0995 \u0993\u09df\u09c7\u09ad' \u09ab\u09be\u09df\u09be\u09b0 \u0995\u09b0\u09cb \u098f\u09ac\u0982 \u09b0\u09be\u09b8\u09cd\u09a4\u09be \u09aa\u09b0\u09bf\u09b7\u09cd\u0995\u09be\u09b0 \u0995\u09b0\u09cb!&lt;\/p&gt;\r\n            &lt;button id=&quot;start-btn&quot; class=&quot;action-btn&quot;&gt;\u09ae\u09bf\u09b6\u09a8 \u09b6\u09c1\u09b0\u09c1 \u0995\u09b0\u09cb&lt;\/button&gt;\r\n        &lt;\/div&gt;\r\n    &lt;\/div&gt;\r\n\r\n    <!-- Game Screen -->\r\n    &lt;div id=&quot;game-screen&quot; class=&quot;screen&quot;&gt;\r\n        <!-- HUD -->\r\n        &lt;div id=&quot;hud&quot;&gt;\r\n            &lt;div class=&quot;hud-item&quot;&gt;\u09b8\u09cd\u0995\u09cb\u09b0: &lt;span id=&quot;score-display&quot;&gt;\u09e6&lt;\/span&gt;&lt;\/div&gt;\r\n            &lt;div class=&quot;hud-item&quot;&gt;\u09b2\u09c7\u09ad\u09c7\u09b2: &lt;span id=&quot;level-display&quot;&gt;\u09e7&lt;\/span&gt;&lt;\/div&gt;\r\n            &lt;div class=&quot;hud-item&quot;&gt;\u09b2\u09be\u0987\u09ab: &lt;span id=&quot;lives-display&quot;&gt;\u2764\ufe0f\u2764\ufe0f\u2764\ufe0f&lt;\/span&gt;&lt;\/div&gt;\r\n        &lt;\/div&gt;\r\n        \r\n        <!-- Timer Bar -->\r\n        &lt;div id=&quot;timer-container&quot;&gt;\r\n            &lt;div id=&quot;timer-bar&quot;&gt;&lt;\/div&gt;\r\n        &lt;\/div&gt;\r\n\r\n        <!-- Problem Display -->\r\n        &lt;div id=&quot;problem-display&quot;&gt;\r\n            &lt;div class=&quot;problem-text&quot; id=&quot;math-problem&quot;&gt;\u09eb\u09ea\u09e9 - \u09e8\u09ef\u09ee = ?&lt;\/div&gt;\r\n        &lt;\/div&gt;\r\n\r\n        <!-- Canvas for Animation -->\r\n        &lt;canvas id=&quot;game-canvas&quot;&gt;&lt;\/canvas&gt;\r\n\r\n        <!-- Controls \/ Numpad Dock -->\r\n        &lt;div id=&quot;control-dock&quot;&gt;\r\n            &lt;button class=&quot;option-btn&quot; data-index=&quot;0&quot;&gt;\u09e6&lt;\/button&gt;\r\n            &lt;button class=&quot;option-btn&quot; data-index=&quot;1&quot;&gt;\u09e6&lt;\/button&gt;\r\n            &lt;button class=&quot;option-btn&quot; data-index=&quot;2&quot;&gt;\u09e6&lt;\/button&gt;\r\n            &lt;button class=&quot;option-btn&quot; data-index=&quot;3&quot;&gt;\u09e6&lt;\/button&gt;\r\n        &lt;\/div&gt;\r\n    &lt;\/div&gt;\r\n\r\n    <!-- Game Over Screen -->\r\n    &lt;div id=&quot;game-over-screen&quot; class=&quot;screen&quot;&gt;\r\n        &lt;div class=&quot;panel&quot;&gt;\r\n            &lt;h1 id=&quot;end-title&quot;&gt;\u09ae\u09bf\u09b6\u09a8 \u09b0\u09bf\u09aa\u09cb\u09b0\u09cd\u099f&lt;\/h1&gt;\r\n            &lt;p id=&quot;end-message&quot;&gt;\u09b8\u09be\u09ac\u09ae\u09c7\u09b0\u09bf\u09a8 \u0996\u09c1\u09ac \u09ac\u09c7\u09b6\u09bf \u0995\u09cd\u09b7\u09a4\u09bf\u0997\u09cd\u09b0\u09b8\u09cd\u09a4 \u09b9\u09df\u09c7\u099b\u09c7!&lt;\/p&gt;\r\n            &lt;p&gt;\u09a4\u09cb\u09ae\u09be\u09b0 \u099a\u09c2\u09dc\u09be\u09a8\u09cd\u09a4 \u09b8\u09cd\u0995\u09cb\u09b0: &lt;span id=&quot;final-score&quot;&gt;\u09e6&lt;\/span&gt;&lt;\/p&gt;\r\n            &lt;button id=&quot;restart-btn&quot; class=&quot;action-btn&quot;&gt;\u0986\u09ac\u09be\u09b0 \u0996\u09c7\u09b2\u09cb&lt;\/button&gt;\r\n        &lt;\/div&gt;\r\n    &lt;\/div&gt;\r\n&lt;\/div&gt;&lt;script&gt;\n        window.GameController = {\n            saveScore: function(score, time, extraData) {\n                window.parent.postMessage({\n                    action: 'qsh_save_score',\n                    sim_id: 27083,\n                    score: score,\n                    time: time || 0,\n                    meta: extraData || {}\n                }, 'https:\/\/qsh.in\/boards\/wbbse');\n            }\n        };\n    &lt;\/script&gt;&lt;script&gt;(function() {\r\n    'use strict';\r\n\r\n    \/\/ --- Utility: Bengali Numerals ---\r\n    const EN_TO_BN = { '0':'\u09e6', '1':'\u09e7', '2':'\u09e8', '3':'\u09e9', '4':'\u09ea', '5':'\u09eb', '6':'\u09ec', '7':'\u09ed', '8':'\u09ee', '9':'\u09ef' };\r\n    \r\n    function toBengali(num) {\r\n        return num.toString().split('').map(d =&gt; EN_TO_BN[d] || d).join('');\r\n    }\r\n\r\n    \/\/ --- State &amp; Variables ---\r\n    let state = {\r\n        isPlaying: false,\r\n        score: 0,\r\n        level: 1,\r\n        lives: 3,\r\n        timeLeft: 15000,\r\n        maxTime: 15000,\r\n        lastTime: 0,\r\n        currentProblem: null,\r\n        correctIndex: 0,\r\n        sceneState: 'idle', \/\/ idle, fire, hit\r\n        accuracy: { correct: 0, total: 0 }\r\n    };\r\n\r\n    \/\/ Animation Variables\r\n    let animPhase = 0;\r\n    let mineX = 0;\r\n    let mineY = 0;\r\n    let bubbles = [];\r\n    let sonicWaves = [];\r\n    let particles = [];\r\n\r\n    \/\/ --- Audio System ---\r\n    const AudioCtx = window.AudioContext || window.webkitAudioContext;\r\n    let actx;\r\n\r\n    function initAudio() {\r\n        if (!actx) actx = new AudioCtx();\r\n        if (actx.state === 'suspended') actx.resume();\r\n    }\r\n\r\n    function playSound(type) {\r\n        if (!actx) return;\r\n        const osc = actx.createOscillator();\r\n        const gain = actx.createGain();\r\n        osc.connect(gain);\r\n        gain.connect(actx.destination);\r\n        const now = actx.currentTime;\r\n\r\n        if (type === 'sonar') {\r\n            osc.type = 'sine';\r\n            osc.frequency.setValueAtTime(800, now);\r\n            gain.gain.setValueAtTime(0.3, now);\r\n            gain.gain.exponentialRampToValueAtTime(0.01, now + 0.5);\r\n            osc.start(now); osc.stop(now + 0.5);\r\n        } else if (type === 'sonic') {\r\n            osc.type = 'triangle';\r\n            osc.frequency.setValueAtTime(400, now);\r\n            osc.frequency.exponentialRampToValueAtTime(100, now + 0.4);\r\n            gain.gain.setValueAtTime(0.4, now);\r\n            gain.gain.exponentialRampToValueAtTime(0.01, now + 0.4);\r\n            osc.start(now); osc.stop(now + 0.4);\r\n        } else if (type === 'explosion') {\r\n            osc.type = 'sawtooth';\r\n            osc.frequency.setValueAtTime(100, now);\r\n            osc.frequency.exponentialRampToValueAtTime(10, now + 0.8);\r\n            gain.gain.setValueAtTime(0.6, now);\r\n            gain.gain.exponentialRampToValueAtTime(0.01, now + 0.8);\r\n            osc.start(now); osc.stop(now + 0.8);\r\n        }\r\n    }\r\n\r\n    function announce(text) {\r\n        if ('speechSynthesis' in window) {\r\n            window.speechSynthesis.cancel();\r\n            const msg = new SpeechSynthesisUtterance(text);\r\n            msg.rate = 1.2; msg.pitch = 0.8; msg.lang = 'bn-IN'; \r\n            window.speechSynthesis.speak(msg);\r\n        }\r\n    }\r\n\r\n    \/\/ --- Canvas Rendering (Vector Art) ---\r\n    const canvas = document.getElementById('game-canvas');\r\n    const ctx = canvas.getContext('2d');\r\n    let animationId;\r\n\r\n    function resizeCanvas() {\r\n        const dpr = window.devicePixelRatio || 1;\r\n        const rect = canvas.parentElement.getBoundingClientRect();\r\n        canvas.width = rect.width * dpr;\r\n        canvas.height = rect.height * dpr;\r\n        ctx.scale(dpr, dpr);\r\n        canvas.style.width = `${rect.width}px`;\r\n        canvas.style.height = `${rect.height}px`;\r\n    }\r\n\r\n    function initBubbles() {\r\n        bubbles = [];\r\n        const w = canvas.width \/ (window.devicePixelRatio || 1);\r\n        const h = canvas.height \/ (window.devicePixelRatio || 1);\r\n        for(let i=0; i&lt;30; i++) {\r\n            bubbles.push({\r\n                x: Math.random() * w,\r\n                y: Math.random() * h,\r\n                r: Math.random() * 4 + 1,\r\n                speed: Math.random() * 1 + 0.5\r\n            });\r\n        }\r\n    }\r\n\r\n    \/\/ Awesome Explosion Particles Setup\r\n    function createExplosion(x, y) {\r\n        particles = [];\r\n        const colors = ['#ffea00', '#ff5722', '#ff1744', '#00e5ff', '#ffffff'];\r\n        for (let i = 0; i &lt; 50; i++) {\r\n            const angle = Math.random() * Math.PI * 2;\r\n            const speed = Math.random() * 10 + 3;\r\n            particles.push({\r\n                x: x,\r\n                y: y,\r\n                vx: Math.cos(angle) * speed,\r\n                vy: Math.sin(angle) * speed,\r\n                size: Math.random() * 8 + 3,\r\n                color: colors[Math.floor(Math.random() * colors.length)],\r\n                life: 1.0,\r\n                decay: Math.random() * 0.02 + 0.015\r\n            });\r\n        }\r\n    }\r\n\r\n    function drawSubmarine(x, y, scale) {\r\n        ctx.save();\r\n        ctx.translate(x, y);\r\n        ctx.scale(scale, scale);\r\n        \r\n        ctx.fillStyle = '#ffb703'; \r\n        ctx.beginPath();\r\n        ctx.ellipse(0, 0, 60, 25, 0, 0, Math.PI * 2);\r\n        ctx.fill();\r\n        \r\n        ctx.fillStyle = '#8ecae6';\r\n        ctx.beginPath();\r\n        ctx.arc(30, -5, 10, 0, Math.PI * 2);\r\n        ctx.fill();\r\n        ctx.strokeStyle = '#023047';\r\n        ctx.lineWidth = 3;\r\n        ctx.stroke();\r\n\r\n        ctx.fillStyle = '#fb8500';\r\n        ctx.beginPath();\r\n        ctx.roundRect(-20, -40, 30, 20, 5);\r\n        ctx.fill();\r\n        \r\n        ctx.strokeStyle = '#023047';\r\n        ctx.lineWidth = 5;\r\n        ctx.beginPath();\r\n        ctx.moveTo(-5, -40); ctx.lineTo(-5, -55); ctx.lineTo(5, -55);\r\n        ctx.stroke();\r\n\r\n        ctx.fillStyle = '#8ecae6';\r\n        const propAngle = Date.now() \/ 100;\r\n        ctx.save();\r\n        ctx.translate(-65, 0);\r\n        ctx.rotate(propAngle);\r\n        ctx.fillRect(-5, -15, 10, 30);\r\n        ctx.restore();\r\n        \r\n        ctx.restore();\r\n    }\r\n\r\n    function drawSeaMine(x, y, scale) {\r\n        ctx.save();\r\n        ctx.translate(x, y);\r\n        ctx.scale(scale, scale);\r\n        \r\n        ctx.fillStyle = '#455a64';\r\n        ctx.beginPath();\r\n        ctx.arc(0, 0, 30, 0, Math.PI * 2);\r\n        ctx.fill();\r\n        \r\n        ctx.fillStyle = '#cfd8dc';\r\n        for (let i = 0; i &lt; 8; i++) {\r\n            ctx.save();\r\n            ctx.rotate((Math.PI \/ 4) * i);\r\n            ctx.beginPath();\r\n            ctx.moveTo(-5, -30);\r\n            ctx.lineTo(5, -30);\r\n            ctx.lineTo(0, -45);\r\n            ctx.fill();\r\n            ctx.restore();\r\n        }\r\n        \r\n        ctx.fillStyle = (Math.floor(Date.now() \/ 200) % 2 === 0) ? '#ff1744' : '#5c0011';\r\n        ctx.beginPath();\r\n        ctx.arc(0, 0, 8, 0, Math.PI * 2);\r\n        ctx.fill();\r\n        \r\n        ctx.restore();\r\n    }\r\n\r\n    function drawScene() {\r\n        const w = canvas.width \/ (window.devicePixelRatio || 1);\r\n        const h = canvas.height \/ (window.devicePixelRatio || 1);\r\n        \r\n        ctx.clearRect(0, 0, w, h);\r\n\r\n        ctx.fillStyle = 'rgba(255, 255, 255, 0.2)';\r\n        bubbles.forEach(b =&gt; {\r\n            ctx.beginPath();\r\n            ctx.arc(b.x, b.y, b.r, 0, Math.PI * 2);\r\n            ctx.fill();\r\n            b.y -= b.speed;\r\n            if(b.y &lt; -10) b.y = h + 10;\r\n        });\r\n\r\n        let subX = w * 0.2;\r\n        let subY = h * 0.6 + Math.sin(Date.now() \/ 500) * 10;\r\n\r\n        drawSubmarine(subX, subY, 1);\r\n\r\n        if (state.sceneState === 'idle') {\r\n            mineX = w * 0.8 - ((state.maxTime - state.timeLeft) \/ state.maxTime) * (w * 0.4);\r\n            mineY = h * 0.6 + Math.cos(Date.now() \/ 400) * 20;\r\n            drawSeaMine(mineX, mineY, 1);\r\n            \r\n        } else if (state.sceneState === 'fire') {\r\n            \r\n            ctx.strokeStyle = '#00e5ff';\r\n            ctx.lineWidth = 4;\r\n            sonicWaves.forEach(sw =&gt; {\r\n                ctx.beginPath();\r\n                ctx.arc(subX + 60, subY, sw.radius, -Math.PI\/4, Math.PI\/4);\r\n                ctx.stroke();\r\n                sw.radius += 15;\r\n            });\r\n            \r\n            \/\/ Explosion Logic\r\n            if (animPhase === 15) {\r\n                createExplosion(mineX, mineY);\r\n                playSound('explosion');\r\n            }\r\n            \r\n            if (animPhase &gt;= 15) {\r\n                \/\/ Expanding Shockwave Ring\r\n                const ringAlpha = Math.max(0, 1 - (animPhase - 15) * 0.04);\r\n                if (ringAlpha &gt; 0) {\r\n                    ctx.strokeStyle = `rgba(0, 229, 255, ${ringAlpha})`;\r\n                    ctx.lineWidth = 15;\r\n                    ctx.beginPath();\r\n                    ctx.arc(mineX, mineY, (animPhase - 15) * 12, 0, Math.PI * 2);\r\n                    ctx.stroke();\r\n                }\r\n\r\n                \/\/ Draw Flying Particles\r\n                particles.forEach(p =&gt; {\r\n                    ctx.globalAlpha = p.life;\r\n                    ctx.fillStyle = p.color;\r\n                    ctx.beginPath();\r\n                    ctx.arc(p.x, p.y, p.size, 0, Math.PI * 2);\r\n                    ctx.fill();\r\n                    p.x += p.vx;\r\n                    p.y += p.vy;\r\n                    p.life -= p.decay;\r\n                });\r\n                ctx.globalAlpha = 1.0;\r\n                particles = particles.filter(p =&gt; p.life &gt; 0);\r\n            } else {\r\n                drawSeaMine(mineX, mineY, 1); \/\/ Draw normally before wave hits\r\n            }\r\n            animPhase++;\r\n            \r\n        } else if (state.sceneState === 'hit') {\r\n            mineX -= 20; \r\n            drawSeaMine(mineX, mineY, 1);\r\n            \r\n            if (animPhase &gt; 5) {\r\n                ctx.fillStyle = 'rgba(255, 0, 0, 0.5)';\r\n                ctx.fillRect(0, 0, w, h); \r\n            }\r\n            animPhase++;\r\n        }\r\n    }\r\n\r\n    function gameLoop(timestamp) {\r\n        if (!state.isPlaying) return;\r\n        \r\n        if (!state.lastTime) state.lastTime = timestamp;\r\n        const dt = timestamp - state.lastTime;\r\n        state.lastTime = timestamp;\r\n\r\n        if (state.sceneState === 'idle') {\r\n            state.timeLeft -= dt;\r\n            const timerBar = document.getElementById('timer-bar');\r\n            const pct = Math.max(0, (state.timeLeft \/ state.maxTime) * 100);\r\n            timerBar.style.width = `${pct}%`;\r\n            \r\n            if (pct &lt; 30) timerBar.style.backgroundColor = '#ff1744';\r\n            else timerBar.style.backgroundColor = '#00b4d8';\r\n\r\n            if (state.timeLeft &lt;= 0) {\r\n                handleAnswer(-1); \r\n            }\r\n        }\r\n\r\n        drawScene();\r\n        animationId = requestAnimationFrame(gameLoop);\r\n    }\r\n\r\n    \/\/ --- Game Logic ---\r\n    function generateProblem() {\r\n        const hundreds = [100, 200, 300, 400, 500];\r\n        const targetHundred = hundreds[Math.floor(Math.random() * hundreds.length)];\r\n        \r\n        const offset = Math.floor(Math.random() * 5) + 1;\r\n        const sub = targetHundred - offset;\r\n        \r\n        const base = targetHundred + 100 + Math.floor(Math.random() * 300);\r\n        const correct = base - sub;\r\n        \r\n        let wrong1 = correct - (offset * 2); \r\n        let wrong2 = correct - 100; \r\n        let wrong3 = correct + 10; \r\n\r\n        let options = [correct, wrong1, wrong2, wrong3];\r\n        options.sort(() =&gt; Math.random() - 0.5);\r\n\r\n        state.currentProblem = { base, sub, correct, options };\r\n        state.correctIndex = options.indexOf(correct);\r\n\r\n        document.getElementById('math-problem').innerText = `${toBengali(base)} - ${toBengali(sub)} = ?`;\r\n        \r\n        const btns = document.querySelectorAll('.option-btn');\r\n        btns.forEach((btn, idx) =&gt; {\r\n            btn.innerText = toBengali(options[idx]);\r\n            btn.className = 'option-btn'; \r\n        });\r\n\r\n        state.maxTime = Math.max(6000, 15000 - (state.level * 400));\r\n        state.timeLeft = state.maxTime;\r\n        state.lastTime = performance.now();\r\n        state.sceneState = 'idle';\r\n        \r\n        animPhase = 0;\r\n        sonicWaves = [];\r\n        particles = [];\r\n        \r\n        if (Math.random() &gt; 0.5) playSound('sonar');\r\n    }\r\n\r\n    function handleAnswer(selectedIndex) {\r\n        if (state.sceneState !== 'idle') return;\r\n        state.accuracy.total++;\r\n\r\n        const isCorrect = selectedIndex === state.correctIndex;\r\n        const btns = document.querySelectorAll('.option-btn');\r\n        \r\n        if (selectedIndex &gt;= 0) {\r\n            btns[selectedIndex].classList.add(isCorrect ? 'correct' : 'wrong');\r\n        }\r\n\r\n        if (isCorrect) {\r\n            state.sceneState = 'fire';\r\n            state.accuracy.correct++;\r\n            state.score += Math.ceil(state.timeLeft \/ 100);\r\n            state.level++;\r\n            \r\n            playSound('sonic');\r\n            for(let i=0; i&lt;3; i++) {\r\n                setTimeout(() =&gt; sonicWaves.push({radius: 20}), i * 100);\r\n            }\r\n            \r\n            announce(&quot;\u099f\u09be\u09b0\u09cd\u0997\u09c7\u099f \u09a7\u09cd\u09ac\u0982\u09b8 \u09b9\u09df\u09c7\u099b\u09c7!&quot;);\r\n            \r\n            document.getElementById('score-display').innerText = toBengali(state.score);\r\n            document.getElementById('level-display').innerText = toBengali(state.level);\r\n            \r\n            \/\/ Wait slightly longer to let students enjoy the explosion effect\r\n            setTimeout(generateProblem, 2000);\r\n\r\n        } else {\r\n            state.sceneState = 'hit';\r\n            state.lives--;\r\n            updateLivesUI();\r\n            \r\n            playSound('explosion');\r\n            announce(&quot;\u09b8\u09be\u09ac\u09ae\u09c7\u09b0\u09bf\u09a8 \u09a1\u09cd\u09af\u09be\u09ae\u09c7\u099c\u09a1!&quot;);\r\n            \r\n            if (state.correctIndex &gt;= 0) {\r\n                btns[state.correctIndex].classList.add('correct');\r\n            }\r\n\r\n            setTimeout(() =&gt; {\r\n                if (state.lives &gt; 0) {\r\n                    generateProblem();\r\n                } else {\r\n                    endGame();\r\n                }\r\n            }, 2000);\r\n        }\r\n    }\r\n\r\n    function updateLivesUI() {\r\n        let hearts = '';\r\n        for(let i=0; i&lt;state.lives; i++) hearts += '\u2764\ufe0f';\r\n        document.getElementById('lives-display').innerText = hearts || '\ud83d\udca5';\r\n    }\r\n\r\n    function startGame() {\r\n        initAudio();\r\n        initBubbles();\r\n        state.isPlaying = true;\r\n        state.score = 0;\r\n        state.level = 1;\r\n        state.lives = 3;\r\n        state.accuracy = { correct: 0, total: 0 };\r\n        \r\n        updateLivesUI();\r\n        document.getElementById('score-display').innerText = toBengali(state.score);\r\n        document.getElementById('level-display').innerText = toBengali(state.level);\r\n        \r\n        document.querySelectorAll('.screen').forEach(s =&gt; s.classList.remove('active'));\r\n        document.getElementById('game-screen').classList.add('active');\r\n        \r\n        resizeCanvas();\r\n        generateProblem();\r\n        announce(&quot;\u09b8\u09ae\u09c1\u09a6\u09cd\u09b0\u09af\u09be\u09a8 \u09ae\u09bf\u09b6\u09a8\u09c7 \u09b8\u09cd\u09ac\u09be\u0997\u09a4\u09ae\u0964 \u09ae\u09be\u0987\u09a8 \u09a5\u09c7\u0995\u09c7 \u09b8\u09be\u09ac\u09a7\u09be\u09a8\u0964&quot;);\r\n        \r\n        if (!animationId) animationId = requestAnimationFrame(gameLoop);\r\n    }\r\n\r\n    function endGame() {\r\n        state.isPlaying = false;\r\n        cancelAnimationFrame(animationId);\r\n        animationId = null;\r\n        \r\n        document.querySelectorAll('.screen').forEach(s =&gt; s.classList.remove('active'));\r\n        document.getElementById('game-over-screen').classList.add('active');\r\n        document.getElementById('final-score').innerText = toBengali(state.score);\r\n        \r\n        if (window.GameController &amp;&amp; typeof window.GameController.saveScore === 'function') {\r\n            const acc = state.accuracy.total &gt; 0 ? Math.round((state.accuracy.correct \/ state.accuracy.total) * 100) : 0;\r\n            window.GameController.saveScore(state.score, state.level * 10, { level: state.level, accuracy: acc });\r\n        }\r\n    }\r\n\r\n    \/\/ --- Event Listeners ---\r\n    document.getElementById('start-btn').addEventListener('pointerdown', startGame);\r\n    document.getElementById('restart-btn').addEventListener('pointerdown', startGame);\r\n    \r\n    document.querySelectorAll('.option-btn').forEach(btn =&gt; {\r\n        btn.addEventListener('pointerdown', function(e) {\r\n            e.preventDefault();\r\n            const idx = parseInt(this.getAttribute('data-index'));\r\n            handleAnswer(idx);\r\n        });\r\n    });\r\n\r\n    window.addEventListener('resize', resizeCanvas);\r\n    window.addEventListener('resize', initBubbles);\r\n\r\n})();&lt;\/script&gt;&lt;\/body&gt;&lt;\/html&gt;\" sandbox=\"allow-scripts allow-forms allow-same-origin allow-pointer-lock\" allow=\"fullscreen; accelerometer; gyroscope\" allowfullscreen><\/iframe>\n        <\/div>\n    <\/div>\n    <script data-cfasync=\"false\">\n    (function() {\n        var wrap = document.getElementById('qsh-27083-240');\n        var btn  = document.getElementById('fs-btn-qsh-27083-240');\n        if (!wrap || !btn) return;\n        btn.addEventListener('click', function() {\n            if (!document.fullscreenElement) {\n                if (wrap.requestFullscreen) wrap.requestFullscreen();\n                else if (wrap.webkitRequestFullscreen) wrap.webkitRequestFullscreen();\n            } else {\n                if (document.exitFullscreen) document.exitFullscreen();\n            }\n        });\n        document.addEventListener('fullscreenchange', function() {\n            if (document.fullscreenElement === wrap) {\n                btn.classList.add('is-active');\n                btn.querySelector('span').textContent = 'Exit';\n            } else {\n                btn.classList.remove('is-active');\n                btn.querySelector('span').textContent = 'Expand';\n            }\n        });\n    })();\n    <\/script>\n    \n","protected":false},"excerpt":{"rendered":"<p>\u0986\u099c\u0995\u09c7\u09b0 \u0997\u09c7\u09ae\u099f\u09bf \u098f\u0995\u099f\u09c1 \u0986\u09b2\u09be\u09a6\u09be! \u0986\u09ae\u09b0\u09be \u099a\u09b2\u09c7 \u098f\u09b8\u09c7\u099b\u09bf \u0997\u09ad\u09c0\u09b0 \u09b8\u09ae\u09c1\u09a6\u09cd\u09b0\u09c7\u09b0 \u09a8\u09bf\u099a\u09c7, \u0986\u09ae\u09be\u09a6\u09c7\u09b0 \u09b8\u09ae\u09c1\u09a6\u09cd\u09b0\u09af\u09be\u09a8 (Submarine) \u09a8\u09bf\u09df\u09c7\u0964 \u0995\u09bf\u09a8\u09cd\u09a4\u09c1 \u09b9\u09a0\u09be\u09ce \u0995\u09b0\u09c7 \u09b8\u09be\u09ae\u09a8\u09c7 \u0985\u09a8\u09c7\u0995 \u09ac\u09dc \u09ac\u09dc \u09b8\u09be\u09ae\u09c1\u09a6\u09cd\u09b0\u09bf\u0995 \u09ae\u09be\u0987\u09a8 \u0986\u09b0 \u09aa\u09be\u09a5\u09b0 \u09ad\u09c7\u09b8\u09c7 \u0986\u09b8\u099b\u09c7! \u098f\u0997\u09c1\u09b2\u09cb\u0995\u09c7 \u09b8\u09b0\u09be\u09a4\u09c7 \u09b9\u09b2\u09c7 \u09a4\u09cb\u09ae\u09be\u0995\u09c7 \u09b8\u09a8\u09bf\u0995 \u0993\u09df\u09c7\u09ad \u099b\u09c1\u0981\u09dc\u09a4\u09c7 \u09b9\u09ac\u09c7\u0964 \u0986\u09b0 \u09b8\u09a8\u09bf\u0995 \u0993\u09df\u09c7\u09ad \u09ab\u09be\u09df\u09be\u09b0 \u0995\u09b0\u09be\u09b0 \u098f\u0995\u09ae\u09be\u09a4\u09cd\u09b0 \u0989\u09aa\u09be\u09df \u09b9\u09b2\u09cb\u2014\u09ac\u09dc \u09ac\u09dc \u09e9-\u0985\u0999\u09cd\u0995\u09c7\u09b0 \u09ac\u09bf\u09df\u09cb\u0997 \u0996\u09be\u09a4\u09be-\u0995\u09b2\u09ae \u099b\u09be\u09dc\u09be \u09e8 \u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1\u09c7 \u09b8\u09ae\u09be\u09a7\u09be\u09a8 \u0995\u09b0\u09be! \u09ad\u09df \u09aa\u09c7\u09df\u09cb \u09a8\u09be, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[13],"tags":[],"class_list":["post-27083","post","type-post","status-publish","format-standard","hentry","category-mental-math-tricks"],"_links":{"self":[{"href":"https:\/\/qsh.in\/boards\/wbbse\/wp-json\/wp\/v2\/posts\/27083","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/qsh.in\/boards\/wbbse\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/qsh.in\/boards\/wbbse\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/qsh.in\/boards\/wbbse\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/qsh.in\/boards\/wbbse\/wp-json\/wp\/v2\/comments?post=27083"}],"version-history":[{"count":1,"href":"https:\/\/qsh.in\/boards\/wbbse\/wp-json\/wp\/v2\/posts\/27083\/revisions"}],"predecessor-version":[{"id":27084,"href":"https:\/\/qsh.in\/boards\/wbbse\/wp-json\/wp\/v2\/posts\/27083\/revisions\/27084"}],"wp:attachment":[{"href":"https:\/\/qsh.in\/boards\/wbbse\/wp-json\/wp\/v2\/media?parent=27083"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/qsh.in\/boards\/wbbse\/wp-json\/wp\/v2\/categories?post=27083"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/qsh.in\/boards\/wbbse\/wp-json\/wp\/v2\/tags?post=27083"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}