{"id":13,"date":"2025-09-03T10:56:32","date_gmt":"2025-09-03T10:56:32","guid":{"rendered":"https:\/\/ibbireels.online\/?page_id=13"},"modified":"2025-09-10T07:32:20","modified_gmt":"2025-09-10T07:32:20","slug":"home","status":"publish","type":"page","link":"https:\/\/ibbireels.online\/","title":{"rendered":"Home"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"13\" class=\"elementor elementor-13\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5d89854 e-flex e-con-boxed e-con e-parent\" data-id=\"5d89854\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-b50d87f elementor-widget__width-initial elementor-widget elementor-widget-html\" data-id=\"b50d87f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<h2 style=\"text-align:center; color:#ffffff; font-family:Arial, sans-serif; font-size:28px; margin-bottom:12px;\">\n  \ud83d\ude80 Space Shooter Game\n<\/h2>\n\n<p style=\"text-align:center; font-size:16px; color:#cccccc; max-width:600px; margin:0 auto; line-height:1.6;\">\n  Get ready for an intergalactic battle in the <strong>Space Shooter Game<\/strong>!<br>\n  Control your spaceship, destroy incoming enemies, and survive as long as you can.<br><br>\n  <strong style=\"color:#ffffff;\">Controls:<\/strong><br>\n  \ud83d\udcbb On Desktop: Use <b style=\"color:#00e6e6;\">Arrow Up<\/b> \/ <b style=\"color:#00e6e6;\">Arrow Down<\/b> to move &amp; <b style=\"color:#00e6e6;\">Spacebar<\/b> to shoot<br>\n  \ud83d\udcf1 On Mobile: Tap the <b style=\"color:#00e6e6;\">left side<\/b> of the screen to move and the <b style=\"color:#00e6e6;\">right side<\/b> to shoot\n<\/p>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-ceaf1d5 e-flex e-con-boxed e-con e-parent\" data-id=\"ceaf1d5\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-50beb52 elementor-widget__width-initial elementor-widget elementor-widget-html\" data-id=\"50beb52\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<style>\n  canvas#gameCanvas {\n    background: #111;\n    border: 3px solid #333;\n    border-radius: 6px;\n    display: block;\n    margin: 15px auto;\n    width: 100%;\n    max-width: 600px;\n    height: auto;\n    touch-action: none; \/* stops page scroll while touching *\/\n  }\n<\/style>\n\n<canvas id=\"gameCanvas\" width=\"600\" height=\"400\"><\/canvas>\n\n<script>\n(function(){\n  const canvas = document.getElementById(\"gameCanvas\");\n  const ctx = canvas.getContext(\"2d\");\n\n  const player = { x: 50, y: 180, w: 20, h: 40, bullets: [] };\n  let enemies = [];\n  let score = 0;\n  let gameOver = false;\n  let frame = 0;\n\n  function drawPlayer() {\n    ctx.fillStyle = \"cyan\";\n    ctx.fillRect(player.x, player.y, player.w, player.h);\n  }\n  function drawBullets() {\n    ctx.fillStyle = \"yellow\";\n    for (let b of player.bullets) ctx.fillRect(b.x, b.y, b.w, b.h);\n  }\n  function drawEnemies() {\n    ctx.fillStyle = \"red\";\n    for (let e of enemies) ctx.fillRect(e.x, e.y, e.w, e.h);\n  }\n  function spawnEnemy() {\n    const size = 30;\n    enemies.push({ x: 600, y: Math.random() * 370, w: size, h: size });\n  }\n\n  function update() {\n    frame++;\n    if (frame % 90 === 0) spawnEnemy();\n\n    \/\/ move bullets\n    for (let b of player.bullets) b.x += 6;\n    player.bullets = player.bullets.filter(b => b.x < 600);\n\n    \/\/ move enemies\n    for (let e of enemies) e.x -= 3;\n    enemies = enemies.filter(e => e.x + e.w > 0);\n\n    \/\/ collision\n    for (let i = enemies.length-1; i >= 0; i--) {\n      let e = enemies[i];\n      for (let j = player.bullets.length-1; j >= 0; j--) {\n        let b = player.bullets[j];\n        if (b.x < e.x + e.w && b.x + b.w > e.x &&\n            b.y < e.y + e.h && b.y + b.h > e.y) {\n          enemies.splice(i,1);\n          player.bullets.splice(j,1);\n          score += 10;\n          break;\n        }\n      }\n      if (e.x < player.x+player.w && e.x+e.w > player.x &&\n          e.y < player.y+player.h && e.y+e.h > player.y) {\n        gameOver = true;\n      }\n    }\n  }\n\n  function draw() {\n    ctx.clearRect(0,0,600,400);\n    drawPlayer();\n    drawBullets();\n    drawEnemies();\n    ctx.fillStyle=\"white\";\n    ctx.font=\"16px Arial\";\n    ctx.fillText(\"Score: \" + score, 10, 20);\n    if (gameOver) {\n      ctx.fillText(\"Game Over - Tap to Restart\", 200, 200);\n    }\n  }\n\n  function shoot() {\n    if (!gameOver) {\n      player.bullets.push({ x: player.x+player.w, y: player.y+player.h\/2-3, w: 10, h: 6 });\n    } else {\n      \/\/ reset\n      enemies = [];\n      player.bullets = [];\n      score = 0; frame = 0; gameOver = false;\n      player.y = 180;\n    }\n  }\n\n  \/\/ Keyboard (desktop)\n  window.addEventListener(\"keydown\", e=>{\n    if (e.code===\"ArrowUp\") player.y -= 20;\n    if (e.code===\"ArrowDown\") player.y += 20;\n    if (e.code===\"Space\") shoot();\n  });\n\n  \/\/ Touch (mobile)\n  canvas.addEventListener(\"touchstart\", e=>{\n    const touch = e.touches[0];\n    const rect = canvas.getBoundingClientRect();\n    const y = (touch.clientY - rect.top) * (400\/rect.height);\n\n    if (touch.clientX < rect.width\/2) {\n      \/\/ left side = move\n      if (y < player.y) player.y -= 30;\n      else player.y += 30;\n    } else {\n      \/\/ right side = shoot\n      shoot();\n    }\n  });\n\n  function loop() {\n    if (!gameOver) update();\n    draw();\n    requestAnimationFrame(loop);\n  }\n  loop();\n})();\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-2518cdd e-flex e-con-boxed e-con e-parent\" data-id=\"2518cdd\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-22c789b elementor-widget__width-initial elementor-widget elementor-widget-html\" data-id=\"22c789b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<div style=\"background:#000; padding:25px; border-radius:10px; text-align:center; max-width:700px; margin:0 auto 20px;\">\n  \n  <h1 style=\"color:#ffffff; font-family:Arial, sans-serif; font-size:34px; margin-bottom:15px;\">\n    \ud83e\udd96 Dino Runner Adventure\n  <\/h1>\n\n  <p style=\"font-size:17px; line-height:1.6; color:#e6e6e6; margin:0 auto 15px;\">\n    Welcome to the classic <strong>Dino Runner Game<\/strong> \u2013 the same fun you play when \n    Google Chrome is offline, now available directly on our site! \ud83d\ude80<br><br>\n    Your mission is simple: guide the little Dino across the desert, \n    avoid obstacles like cacti and birds, and see how long you can survive. \n    The longer you last, the higher your score climbs. It\u2019s endless, fast-paced, \n    and super addictive! \ud83d\udd25\n  <\/p>\n\n  <p style=\"font-size:16px; color:#cccccc; margin:0 auto 15px;\">\n    <strong style=\"color:#ffffff;\">\ud83c\udfae How to Play:<\/strong><br>\n    \ud83d\udcbb <b>On Desktop:<\/b> Press <b style=\"color:#00e6e6;\">Spacebar<\/b> or <b style=\"color:#00e6e6;\">Arrow Up<\/b> to jump over obstacles.<br>\n    \ud83d\udcf1 <b>On Mobile:<\/b> Tap anywhere on the screen to make the Dino jump.<br>\n    \ud83c\udf1f <span style=\"color:#00e6e6;\">Tip: The speed increases as you progress, so stay sharp!<\/span>\n  <\/p>\n\n  <p style=\"font-size:16px; color:#00e6e6; margin-top:15px;\">\n    \ud83d\udc49 Try to beat your high score and challenge your friends!\n  <\/p>\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-c983d62 e-flex e-con-boxed e-con e-parent\" data-id=\"c983d62\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5e75f9f elementor-widget__width-initial elementor-widget elementor-widget-html\" data-id=\"5e75f9f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- Dino Runner Game (Responsive for WordPress Page) -->\n<style>\n  .dino-game-wrap {\n    display:flex;\n    justify-content:center;\n    align-items:center;\n    width:100%;\n    margin:15px 0;\n  }\n  #dinoCanvas {\n    background: linear-gradient(#f3f3f3, #e9e9e9);\n    border: 3px solid #333;\n    border-radius: 6px;\n    width: 100%;        \/* responsive width *\/\n    height: auto;       \/* maintain aspect ratio *\/\n    max-width: 600px;   \/* limit size on big screens *\/\n    touch-action: manipulation;\n  }\n  .instructions {\n    text-align:center;\n    font-family: Arial, sans-serif;\n    font-size: 14px;\n    margin-top:8px;\n    color:#333;\n  }\n<\/style>\n\n<div class=\"dino-game-wrap\">\n  <canvas id=\"dinoCanvas\" width=\"600\" height=\"200\"><\/canvas>\n<\/div>\n<div class=\"instructions\">Tap screen or press <b>Space<\/b> to jump!<\/div>\n\n<script>\n(function(){\n  const canvas = document.getElementById('dinoCanvas');\n  const ctx = canvas.getContext('2d');\n  let W = canvas.width, H = canvas.height;\n\n  \/\/ Resize for mobile view\n  function resizeCanvas(){\n    const scale = Math.min(window.innerWidth*0.9, 600);\n    canvas.style.width = scale + \"px\";\n    canvas.style.height = (scale\/3) + \"px\";\n  }\n  window.addEventListener(\"resize\", resizeCanvas);\n  resizeCanvas();\n\n  \/\/ Game variables\n  let running = true, score = 0, speed = 4, spawnTimer = 0, frame = 0;\n  const dino = {x:60,y:H-40,w:40,h:40,vy:0,gravity:0.9,jumpForce:-13,grounded:true};\n  let obstacles = [];\n\n  function rand(min,max){return Math.random()*(max-min)+min;}\n  function spawnObstacle(){\n    const h=Math.random()<0.5?28:44,w=h===28?16:26;\n    obstacles.push({x:W+10,y:H-h-8,w:w,h:h});\n  }\n  function jump(){ if(dino.grounded){dino.vy=dino.jumpForce;dino.grounded=false;} }\n  function resetGame(){score=0;speed=4;obstacles=[];running=true;dino.y=H-dino.h-8;dino.vy=0;dino.grounded=true;loop();}\n  window.addEventListener('keydown',e=>{if(e.code==='Space'||e.code==='ArrowUp'){e.preventDefault();running?jump():resetGame();}});\n  canvas.addEventListener('pointerdown',()=>{running?jump():resetGame();});\n\n  function collide(a,b){return a.x<b.x+b.w&&a.x+a.w>b.x&&a.y<b.y+b.h&&a.y+a.h>b.y;}\n  function drawGround(){ctx.fillStyle='#333';ctx.fillRect(0,H-8,W,8);}\n  function drawDino(){ctx.fillStyle='#111';ctx.fillRect(dino.x,dino.y,dino.w,dino.h);ctx.fillStyle='#fff';ctx.fillRect(dino.x+dino.w-12,dino.y+8,4,4);}\n  function drawObstacle(o){ctx.fillStyle='#2a6f2a';ctx.fillRect(o.x,o.y,o.w,o.h);}\n  function drawScore(){ctx.fillStyle='#222';ctx.font='14px Arial';ctx.fillText('Score: '+Math.floor(score),10,20);\n    if(!running){ctx.fillStyle='rgba(0,0,0,0.6)';ctx.fillRect(W\/2-120,H\/2-30,240,60);ctx.fillStyle='#fff';ctx.textAlign='center';ctx.fillText('Game Over - Tap to Restart',W\/2,H\/2);ctx.textAlign='left';}}\n  function update(){\n    frame++; if(!running)return;\n    dino.vy+=dino.gravity;dino.y+=dino.vy;\n    if(dino.y>=H-dino.h-8){dino.y=H-dino.h-8;dino.vy=0;dino.grounded=true;}\n    for(let i=obstacles.length-1;i>=0;i--){obstacles[i].x-=speed;if(obstacles[i].x+obstacles[i].w<-50)obstacles.splice(i,1);if(collide(dino,obstacles[i]))running=false;}\n    spawnTimer--;if(spawnTimer<=0){spawnObstacle();spawnTimer=rand(60,120);}\n    score+=0.1;if(frame%500===0)speed+=0.5;\n  }\n  function draw(){ctx.clearRect(0,0,W,H);ctx.fillStyle='#f3f3f3';ctx.fillRect(0,0,W,H-32);drawGround();obstacles.forEach(drawObstacle);drawDino();drawScore();}\n  function loop(){update();draw();if(running)requestAnimationFrame(loop);}\n  dino.y=H-dino.h-8;loop();\n})();\n<\/script>    \t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-22cfb60 e-flex e-con-boxed e-con e-parent\" data-id=\"22cfb60\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-05c14f5 elementor-widget__width-initial elementor-widget elementor-widget-html\" data-id=\"05c14f5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- Game Info Section -->\n<section style=\"max-width:720px;margin:20px auto;padding:16px;background:#0f172a;border-radius:12px;color:#e2e8f0;font-family:system-ui,Segoe UI,Roboto,Arial;\">\n\n  <h2 style=\"font-size:1.8rem;margin-bottom:12px;color:#22d3ee;text-align:center;\">\n    \ud83d\udc1f Flappy Fish \u2014 Rupees Challenge\n  <\/h2>\n\n  <p style=\"font-size:1rem;line-height:1.6;margin-bottom:14px;text-align:center;\">\n    Guide your fish through the ocean and avoid crashing into the walls. \n    For every wall you pass, you earn <strong>rupees equal to your score<\/strong>. \n    Stay focused, keep swimming, and see how many rupees you can collect!\n  <\/p>\n\n  <div style=\"background:#1e293b;padding:14px;border-radius:10px;\">\n    <h3 style=\"margin-top:0;margin-bottom:10px;color:#38bdf8;\">\ud83c\udfae How to Play<\/h3>\n    <ul style=\"margin:0;padding-left:20px;line-height:1.6;\">\n      <li><span style=\"color:#22d3ee;\">Desktop:<\/span> Press <strong>Spacebar<\/strong> to swim upward.<\/li>\n      <li><span style=\"color:#22d3ee;\">Mobile:<\/span> Tap anywhere on the screen to swim upward.<\/li>\n      <li>Avoid hitting the pipes or falling out of the water.<\/li>\n      <li>Each pipe you pass = +1 Rupee \ud83d\udcb0<\/li>\n    <\/ul>\n  <\/div>\n\n  <p style=\"font-size:0.9rem;margin-top:14px;opacity:0.8;text-align:center;\">\n    Tip: Timing your taps is the key to swimming far and winning more rupees!\n  <\/p>\n<\/section>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-2ca3166 e-flex e-con-boxed e-con e-parent\" data-id=\"2ca3166\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d39e82e elementor-widget__width-initial elementor-widget elementor-widget-html\" data-id=\"d39e82e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!DOCTYPE html><html lang=\"en\">\n<head>\n  <meta charset=\"utf-8\" \/>\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no\" \/>\n  <title>Flappy Fish \u2014 Rupees Game<\/title>\n  <meta name=\"description\" content=\"Flappy Fish \u2014 mobile-friendly HTML5 game. Earn rupees equal to your score. Tap or press Space to swim.\" \/>\n  <style>\n    :root{--bg:#0b1224;--accent:#22d3ee}\n    html,body{height:100%;margin:0;background:linear-gradient(180deg,#071026 0%,var(--bg) 100%);font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial;color:#fff}\n    .wrap{max-width:520px;margin:14px auto;padding:12px}\n    .hud{display:flex;justify-content:space-between;align-items:center;padding:8px 10px;background:rgba(255,255,255,0.03);border-radius:10px;margin-bottom:10px;font-weight:700}\n    .canvas-wrap{background:#062a46;border-radius:12px;overflow:hidden;aspect-ratio:9\/16}\n    canvas{display:block;width:100%;height:100%}\n    .hint{font-size:13px;opacity:.85}\n    @media (max-width:420px){.wrap{margin:8px;padding:8px}}\n  <\/style>\n<\/head>\n<body>\n  <div class=\"wrap\">\n    <div class=\"hud\">\n      <div class=\"label\">Rupees: <span id=\"score\">0<\/span><\/div>\n      <div class=\"hint\">Tap screen or press <strong>Space<\/strong> to swim<\/div>\n    <\/div><div class=\"canvas-wrap\">\n  <canvas id=\"game\"><\/canvas>\n<\/div>\n\n  <\/div>  <script>\n  (function(){\n    const canvas = document.getElementById('game');\n    const ctx = canvas.getContext('2d');\n    const scoreEl = document.getElementById('score');\n    const container = canvas.parentElement;\n\n    let dpr = Math.min(window.devicePixelRatio || 1, 2);\n    function resize(){\n      const rect = container.getBoundingClientRect();\n      dpr = Math.min(window.devicePixelRatio || 1, 2);\n      canvas.width = Math.round(rect.width * dpr);\n      canvas.height = Math.round(rect.height * dpr);\n      ctx.setTransform(dpr,0,0,dpr,0,0);\n    }\n    window.addEventListener('resize', resize);\n    resize();\n\n    \/\/ Game vars\n    let cw = () => canvas.width \/ dpr;\n    let ch = () => canvas.height \/ dpr;\n\n    const world = { gravity: 1400, gap: 140, speed: 220, spawnInterval: 1400, pipeW: 52 };\n\n    let player, pipes, score, running, started, gameOver, spawnTimer;\n\n    function newPlayer(){\n      return {\n        x: Math.round(cw() * 0.22),\n        y: Math.round(ch() * 0.5),\n        size: Math.round(Math.max(12, cw() * 0.045)),\n        vy: 0,\n        rot: 0\n      };\n    }\n\n    function reset(){\n      pipes = [];\n      score = 0; scoreEl.textContent = score;\n      player = newPlayer();\n      running = false; started = false; gameOver = false; spawnTimer = 0;\n    }\n\n    function start(){ running = true; started = true; gameOver = false; spawnTimer = 0; }\n    function flap(){ if(!started) start(); if(!gameOver) player.vy = -420; }\n    function die(){ gameOver = true; running = false; }\n\n    \/\/ Input: pointerdown -> flap or restart\n    canvas.addEventListener('pointerdown', ()=>{\n      if(gameOver){ reset(); }\n      flap();\n    });\n    window.addEventListener('keydown', (e)=>{ if(e.code === 'Space'){ e.preventDefault(); if(gameOver){ reset(); } flap(); } });\n\n    function spawnPipe(){\n      const minTop = 40;\n      const maxTop = Math.max(ch() - 40 - world.gap, 80);\n      const top = Math.floor(Math.random() * (maxTop - minTop + 1)) + minTop;\n      pipes.push({ x: Math.round(cw() + 10), w: world.pipeW, top: top, passed: false });\n    }\n\n    function update(dt){\n      if(!running || gameOver) return;\n      spawnTimer += dt;\n      if(spawnTimer >= world.spawnInterval){ spawnPipe(); spawnTimer = 0; }\n\n      const speedPx = world.speed * (dt\/1000);\n      for(const p of pipes) p.x -= speedPx;\n      while(pipes.length && pipes[0].x + pipes[0].w < -20) pipes.shift();\n\n      \/\/ physics\n      player.vy += world.gravity * (dt\/1000);\n      player.y += player.vy * (dt\/1000);\n      player.rot = Math.atan2(player.vy, 500);\n\n      \/\/ collisions & score\n      for(const p of pipes){\n        const gapTop = p.top - world.gap\/2;\n        const gapBottom = p.top + world.gap\/2;\n        const s = player.size;\n        const inX = (player.x + s\/2 > p.x) && (player.x - s\/2 < p.x + p.w);\n        const hit = inX && (player.y - s\/2 < gapTop || player.y + s\/2 > gapBottom);\n        if(hit){ die(); break; }\n        if(!p.passed && (p.x + p.w) < (player.x - s\/2)){\n          p.passed = true; score++; scoreEl.textContent = score;\n        }\n      }\n\n      \/\/ bounds\n      if(player.y + player.size\/2 > ch() || player.y - player.size\/2 < 0) die();\n    }\n\n    function drawFish(x,y,size,rot){\n      ctx.save(); ctx.translate(x,y); ctx.rotate(rot);\n      \/\/ body\n      ctx.fillStyle = '#3b82f6';\n      ctx.beginPath(); ctx.ellipse(0,0,size,size*0.6,0,0,Math.PI*2); ctx.fill();\n      \/\/ tail\n      ctx.fillStyle = '#2563eb';\n      ctx.beginPath(); ctx.moveTo(-size,0); ctx.lineTo(-size-12,-12); ctx.lineTo(-size-12,12); ctx.closePath(); ctx.fill();\n      \/\/ eye\n      ctx.fillStyle = '#fff'; ctx.beginPath(); ctx.arc(size*0.38,-size*0.12,Math.max(2, size*0.12),0,Math.PI*2); ctx.fill();\n      ctx.fillStyle = '#000'; ctx.beginPath(); ctx.arc(size*0.38,-size*0.12,Math.max(1, size*0.06),0,Math.PI*2); ctx.fill();\n      ctx.restore();\n    }\n\n    function draw(){\n      const W = cw(), H = ch();\n      \/\/ background\n      const g = ctx.createLinearGradient(0,0,0,H);\n      g.addColorStop(0,'#0ea5e9'); g.addColorStop(1,'#062a46');\n      ctx.fillStyle = g; ctx.fillRect(0,0,W,H);\n\n      \/\/ pipes\n      ctx.fillStyle = '#16a34a';\n      for(const p of pipes){\n        ctx.fillRect(p.x, 0, p.w, p.top - world.gap\/2);\n        ctx.fillRect(p.x, p.top + world.gap\/2, p.w, H - (p.top + world.gap\/2));\n      }\n\n      \/\/ fish\n      drawFish(player.x, player.y, player.size, player.rot);\n\n      \/\/ rupees display inside canvas (small)\n      ctx.fillStyle = 'rgba(255,255,255,0.9)';\n      ctx.font = Math.max(14, Math.round(W*0.06)) + 'px sans-serif';\n      ctx.textAlign = 'center';\n      ctx.fillText(score + ' \u20b9', W\/2, Math.round(Math.max(28, W*0.06)));\n\n      \/\/ start \/ gameover texts\n      if(!started){\n        ctx.fillStyle = 'rgba(255,255,255,0.95)'; ctx.font = Math.max(14, Math.round(W*0.045)) + 'px sans-serif';\n        ctx.fillText('Tap or press Space to start', W\/2, H*0.55);\n      }\n      if(gameOver){\n        ctx.fillStyle = 'rgba(0,0,0,0.6)'; ctx.fillRect(W*0.12, H*0.38, W*0.76, H*0.2);\n        ctx.fillStyle = '#fff'; ctx.font = Math.max(16, Math.round(W*0.065)) + 'px sans-serif'; ctx.fillText('Game Over - Tap to restart', W\/2, H*0.5);\n        ctx.font = Math.max(12, Math.round(W*0.045)) + 'px sans-serif'; ctx.fillText('You won ' + score + ' rupees', W\/2, H*0.6);\n      }\n    }\n\n    \/\/ main loop\n    let last = 0;\n    function loop(ts){\n      if(!last) last = ts; const dt = ts - last; last = ts;\n      update(dt);\n      draw();\n      requestAnimationFrame(loop);\n    }\n\n    \/\/ ensure sizes and initial state\n    reset();\n    \/\/ reposition player after first resize\n    window.setTimeout(()=>{ resize(); player = newPlayer(); }, 40);\n\n    requestAnimationFrame(loop);\n  })();\n  <\/script><\/body>\n<\/html>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>\ud83d\ude80 Space Shooter Game Get ready for an intergalactic battle in the Space Shooter Game! Control your spaceship, destroy incoming enemies, and survive as long as you can. Controls: \ud83d\udcbb On Desktop: Use Arrow Up \/ Arrow Down to move &amp; Spacebar to shoot \ud83d\udcf1 On Mobile: Tap the left side of the screen to [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"open","ping_status":"closed","template":"frontpage.php","meta":{"footnotes":""},"class_list":["post-13","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/ibbireels.online\/index.php?rest_route=\/wp\/v2\/pages\/13","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ibbireels.online\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/ibbireels.online\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/ibbireels.online\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ibbireels.online\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=13"}],"version-history":[{"count":150,"href":"https:\/\/ibbireels.online\/index.php?rest_route=\/wp\/v2\/pages\/13\/revisions"}],"predecessor-version":[{"id":224,"href":"https:\/\/ibbireels.online\/index.php?rest_route=\/wp\/v2\/pages\/13\/revisions\/224"}],"wp:attachment":[{"href":"https:\/\/ibbireels.online\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=13"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}