1<!DOCTYPE html> 2<html lang="en"> 3<head> 4 <!-- Google tag (gtag.js) -->
vendor: 64 bytes, lines 4-5
4 5<script async src="https://www.googletagmanager.com/gtag/js?id=
5G-WNZKJLFHZ7
vendor: 12 bytes, line 5
5"></script>
6<script> 7
vendor: 134 bytes, lines 7-11
7window.dataLayer = window.dataLayer || []; 8 function gtag(){dataLayer.push(arguments);} 9 gtag('js', new Date()); 10 11 gtag('config', '
11G-WNZKJLFHZ7
vendor: 4 bytes, line 11
11');
12</script>
12 13 <!-- Microsoft Clarity -->
14<script type="text/javascript"> 15 (function(c,l,a,r,i,t,y){ 16 c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)}; 17 t=l.createElement(r);t.async=1;t.src="https://www.clarity.ms/tag/"+i; 18 y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y); 19 })(window, document, "clarity", "script", "sz90it2la5"); 20</script>
20 21 <!-- Google AdSense -->
22<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8242212019165496" 23 crossorigin="anonymous"></script>
23 24 25 <meta charset="UTF-8"> 26 <meta name="google-adsense-account" content="ca-pub-8242212019165496"> 27 <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=5.0, user-scalable=yes"> 28 <title>Guess the Jumpshot - NBA Player Challenge Game</title> 29 <meta name="description" content="Test your NBA knowledge by identifying players from their shooting form. Play the ultimate basketball challenge game with 50+ NBA stars and daily challenges."> 30 31 <!-- Fonts --> 32 <link rel="preconnect" href="https://fonts.googleapis.com"> 33 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 34 <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&display=swap" rel="stylesheet"> 35 36 <!-- Magic UI Styles --> 37 <!-- Favicon --> 38 <link rel="icon" type="image/jpeg" href="/images/guess-the-jumpshot-logo.jpeg"> 39 <link rel="shortcut icon" type="image/jpeg" href="/images/guess-the-jumpshot-logo.jpeg"> 40 <link rel="apple-touch-icon" href="/images/guess-the-jumpshot-logo.jpeg"> 41 42 43 44 <link rel="stylesheet" href="magic-ui-styles.css"> 45 <link rel="stylesheet" href="magic-ui-extended.css"> 46 <link rel="stylesheet" href="magic-game-styles.css"> 47 <link rel="stylesheet" href="magic-modal.css"> 48 <link rel="stylesheet" href="magic-comments.css"> 49 <link rel="stylesheet" href="magic-comments-sidebar.css"> 50 <link rel="stylesheet" href="magic-feedback.css"> 51 52 <!-- Mobile H5 Responsive Styles --> 53 <link rel="stylesheet" href="magic-ui-mobile.css"> 54 55 <!-- Lucide Icons --> 56
56<script src="https://unpkg.com/lucide@latest/dist/umd/lucide.js"></script>
56 57 <link rel="canonical" href="https://guess-the-jumpshot.com/"> 58 <!-- Open Graph Meta Tags --> 59 60 <!-- Twitter Card Meta Tags --> 61 <!-- Magic Share Button --> 62 <link rel="stylesheet" href="magic-share-button.css"> 63
63<script type="application/ld+json"> 64 { 65 "@context": "https://schema.org", 66 "@type": "WebSite", 67 "name": "Guess the Jumpshot", 68 "alternateName": "NBA Jumpshot Game", 69 "url": "https://guess-the-jumpshot.com/", 70 "description": "The ultimate NBA player identification game. Test your basketball knowledge by recognizing players from their unique shooting forms.", 71 "potentialAction": { 72 "@type": "SearchAction", 73 "target": { 74 "@type": "EntryPoint", 75 "urlTemplate": "https://guess-the-jumpshot.com/search?q={search_term_string}" 76 }, 77 "query-input": "required name=search_term_string" 78 }, 79 "publisher": { 80 "@type": "Organization", 81 "name": "Guess the Jumpshot", 82 "logo": { 83 "@type": "ImageObject", 84 "url": "https://guess-the-jumpshot.com/images/guess-the-jumpshot-logo.jpeg", 85 "width": 512, 86 "height": 512 87 }, 88 "sameAs": [ 89 "https://x.com/JsonChao", 90 "https://github.com/JsonChao" 91 ] 92 } 93 } 94 </script>
94 95
95<script type="application/ld+json"> 96 { 97 "@context": "https://schema.org", 98 "@type": "VideoGame", 99 "name": "Guess the Jumpshot", 100 "description": "Challenge yourself to identify NBA players by their shooting form in this addictive basketball game.", 101 "url": "https://guess-the-jumpshot.com/", 102 "image": "https://guess-the-jumpshot.com/images/guess-the-jumpshot-logo.jpeg", 103 "genre": ["Sports", "Trivia", "Basketball"], 104 "gameMode": "SinglePlayer", 105 "gamePlatform": "Web Browser", 106 "numberOfPlayers": { 107 "@type": "QuantitativeValue", 108 "value": 1 109 }, 110 "applicationCategory": "Game", 111 "operatingSystem": "Any", 112 "aggregateRating": { 113 "@type": "AggregateRating", 114 "ratingValue": "4.8", 115 "ratingCount": "2847", 116 "bestRating": "5", 117 "worstRating": "1" 118 }, 119 "offers": { 120 "@type": "Offer", 121 "price": "0", 122 "priceCurrency": "USD" 123 }, 124 "publisher": { 125 "@type": "Organization", 126 "name": "Guess the Jumpshot Team" 127 } 128 } 129 </script>
129 130
130<script type="application/ld+json"> 131 { 132 "@context": "https://schema.org", 133 "@type": "BreadcrumbList", 134 "itemListElement": [ 135 { 136 "@type": "ListItem", 137 "position": 1, 138 "name": "Home", 139 "item": "https://guess-the-jumpshot.com/" 140 } 141] 142 } 143 </script>
143 144 145 <!-- Open Graph Meta Tags --> 146 <meta property="og:title" content="Guess the Jumpshot - NBA Player Challenge Game"> 147 <meta property="og:url" content="https://cznull.org/"> 148 <meta property="og:description" content="Can you identify NBA players by their jumpshot? Test your basketball knowledge in this addictive challenge game."> 149 <meta property="og:image" content="https://cznull.org/images/guess-the-jumpshot-logo.jpeg"> 150 <meta property="og:type" content="website"> 151 <meta property="og:site_name" content="Guess the Jumpshot"> 152 153 <!-- Twitter Card Meta Tags --> 154 <meta name="twitter:card" content="summary_large_image"> 155 <meta name="twitter:title" content="Guess the Jumpshot - NBA Player Challenge Game"> 156 <meta name="twitter:description" content="Can you identify NBA players by their jumpshot? Test your basketball knowledge in this addictive challenge game."> 157 <meta name="twitter:image" content="https://cznull.org/images/guess-the-jumpshot-logo.jpeg"> 158</head> 159<body> 160 <!-- Animated Background Orbs --> 161 <div class="magic-orb orb-1"></div> 162 <div class="magic-orb orb-2"></div> 163 <div class="magic-orb orb-3"></div> 164 165 <!-- Magic Navigation --> 166 <nav class="magic-nav" id="magicNav"> 167 <div class="magic-nav-inner"> 168 <div class="magic-nav-content"> 169 <a href="#" class="magic-logo"> 170 <img src="/images/guess-the-jumpshot-logo.jpeg" alt="Guess the Jumpshot Logo" class="magic-logo-icon" style="width: 32px; height: 32px; object-fit: contain;"> 171 <span>Guess the Jumpshot</span> 172 </a> 173 174 <ul class="magic-menu"> 175 <li class="magic-menu-item"> 176 <a href="#home" class="magic-menu-link active"> 177 <i data-lucide="home" size="18"></i> 178 <span>Home</span> 179 </a> 180 </li> 181 <li class="magic-menu-item"> 182 <a href="/leaderboard" class="magic-menu-link"> 183 <i data-lucide="trophy" size="18"></i> 184 <span>Leaderboard</span> 185 </a> 186 </li> 187 <li class="magic-menu-item"> 188 <a href="/blog" class="magic-menu-link"> 189 <i data-lucide="newspaper" size="18"></i> 190 <span>Blog</span> 191 </a> 192 </li> 193 <li class="magic-menu-item"> 194 <a href="#" onclick="openFeedback(); return false;" class="magic-menu-link"> 195 <i data-lucide="message-square" size="18"></i> 196 <span>Feedback</span> 197 </a> 198 </li> 199 </ul> 200 201 <button class="magic-mobile-toggle" id="mobileToggle"> 202 <i data-lucide="menu" size="24"></i> 203 </button> 204 </div> 205 </div> 206 </nav> 207 208 <!-- Magic Hero Section --> 209 <section id="home" class="magic-hero"> 210 <div class="magic-hero-bg"> 211 <div class="magic-grid"></div> 212 </div> 213 214 <div class="magic-hero-content"> 215 <div class="magic-badge"> 216 <div class="magic-badge-icon">â¨</div> 217 <span>#1 NBA Challenge Game</span> 218 </div> 219 220 <h1 class="magic-title"> 221 <span class="magic-title-line">Master the Art of</span> 222 <span class="magic-title-line magic-gradient-text">Guess the Jumpshot</span> 223 </h1> 224 225 <p class="magic-subtitle"> 226 Can you identify NBA superstars just by their signature shooting form? 227 Test your basketball expertise in this ultimate challenge! 228 </p> 229 230 <div class="magic-buttons"> 231 <a href="#game" class="magic-btn magic-btn-primary"> 232 <i data-lucide="play" size="20"></i> 233 <span>Play Now</span> 234 </a> 235 <a href="#how-to-play" class="magic-btn magic-btn-secondary"> 236 <i data-lucide="book-open" size="20"></i>
237 <span>Learn How</span> 238 </a> 239 </div> 240 241 <div class="magic-stats"> 242 <div class="magic-stat-card"> 243 <div class="magic-stat-number">1000+</div> 244 <div class="magic-stat-label">Daily Players</div> 245 </div> 246 <div class="magic-stat-card"> 247 <div class="magic-stat-number">50+</div> 248 <div class="magic-stat-label">NBA Stars</div> 249 </div> 250 <div class="magic-stat-card"> 251 <div class="magic-stat-number">2</div> 252 <div class="magic-stat-label">Game Modes</div> 253 </div> 254 </div> 255 </div> 256 257 <div class="magic-scroll"> 258 <div class="magic-scroll-icon"> 259 <div class="magic-scroll-dot"></div> 260 </div> 261 </div> 262 </section> 263 264 <!-- Game Section --> 265 <section id="game" class="magic-game-section"> 266 <div class="container"> 267 <div class="magic-section-header"> 268 <div class="magic-section-badge"> 269 <i data-lucide="zap" size="16"></i> 270 <span>PLAY NOW</span> 271 </div> 272 <h2 class="magic-section-title">Start Your Challenge</h2> 273 <p class="magic-section-subtitle">Choose your difficulty and test your skills</p> 274 </div> 275 276 <div class="game-with-comments-container"> 277 <div class="magic-game-card"> 278 <div class="magic-difficulty-selector"> 279 <button class="magic-diff-btn active" data-mode="easy"> 280 <i data-lucide="smile" size="24"></i> 281 <span>Easy Mode</span> 282 </button> 283 <button class="magic-diff-btn" data-mode="hard"> 284 <i data-lucide="flame" size="24"></i> 285 <span>Hard Mode</span> 286 </button> 287 </div> 288 289 <div class="magic-game-content"> 290 <div class="magic-video-container"> 291 <video id="game-video" class="magic-game-video" autoplay loop muted playsinline> 292 Your browser does not support the video tag. 293 </video> 294 <div id="loading-indicator" class="magic-loading-overlay" style="display: none;"> 295 <div class="magic-loading"></div> 296 <p>Loading next player...</p> 297 </div> 298 </div> 299 300 <div class="magic-game-controls"> 301 <div class="magic-game-stats"> 302 <div class="magic-stat-item"> 303 <i data-lucide="hash" size="16"></i> 304 <span>Question <span id="current">1</span>/<span id="total">25</span></span> 305 </div> 306 <div class="magic-stat-item"> 307 <i data-lucide="heart" size="16"></i> 308 <span><span id="tries">5</span> tries</span> 309 </div> 310 <div class="magic-stat-item"> 311 <i data-lucide="star" size="16"></i> 312 <span>Score: <span id="current-score">0</span></span> 313 </div> 314 </div> 315 316 <div class="magic-input-group"> 317 <i data-lucide="search" size="20" class="magic-input-icon"></i> 318 <input type="text" id="player-guess" class="magic-input" placeholder="Type player name..." autocomplete="off"> 319 <div id="suggestions" class="magic-suggestions"></div> 320 </div> 321 322 <div id="game-feedback" class="magic-feedback"></div> 323 324 <div class="magic-game-actions"> 325 <button id="submit-guess" class="magic-btn magic-btn-primary"> 326 <i data-lucide="check" size="18"></i> 327 Submit 328 </button> 329 <button id="skip-question" class="magic-btn magic-btn-secondary"> 330 <i data-lucide="skip-forward" size="18"></i> 331 Skip 332 </button> 333 <button id="next-question" class="magic-btn magic-btn-primary" style="display: none;"> 334 Next 335 <i data-lucide="arrow-right" size="18"></i> 336 </button> 337 </div> 338 </div> 339 </div> 340 </div> 341 342 <!-- Comments Sidebar --> 343 <div id="gameSidebarComments"></div> 344 </div> 345 </div> 346 </section> 347 348 <!-- How to Play Section --> 349 <section id="how-to-play" class="magic-how-to-play"> 350 <div class="container"> 351 <div class="magic-section-header"> 352 <div class="magic-section-badge"> 353 <i data-lucide="book-open" size="16"></i>
354 <span>GUIDE</span> 355 </div> 356 <h2 class="magic-section-title">How to Play</h2> 357 <p class="magic-section-subtitle">Master the game in 4 simple steps</p> 358 </div> 359 360 <div class="magic-steps"> 361 <div class="magic-step"> 362 <div class="magic-step-number">1</div> 363 <h3>Watch the Shot</h3> 364 <p>Observe the player's unique shooting form carefully</p> 365 </div> 366 <div class="magic-step"> 367 <div class="magic-step-number">2</div> 368 <h3>Analyze the Form</h3> 369 <p>Look for signature moves and shooting mechanics</p> 370 </div> 371 <div class="magic-step"> 372 <div class="magic-step-number">3</div> 373 <h3>Make Your Guess</h3> 374 <p>Type the player's name and submit your answer</p> 375 </div> 376 <div class="magic-step"> 377 <div class="magic-step-number">4</div> 378 <h3>Score Points</h3> 379 <p>Earn more points for faster correct guesses</p> 380 </div> 381 </div> 382 </div> 383 </section> 384 385 <!-- Features Section --> 386 <section id="features" class="magic-features"> 387 <div class="container"> 388 <div class="magic-section-header"> 389 <div class="magic-section-badge"> 390 <i data-lucide="sparkles" size="16"></i> 391 <span>FEATURES</span> 392 </div> 393 <h2 class="magic-section-title">Why Players Love It</h2> 394 <p class="magic-section-subtitle">Discover what makes our game special</p> 395 </div> 396 397 <div class="magic-features-grid"> 398 <div class="magic-feature-card"> 399 <div class="magic-feature-icon"> 400 <i data-lucide="target" size="32"></i> 401 </div> 402 <h3>Accuracy Challenge</h3> 403 <p>Test your ability to identify players by their unique shooting form</p> 404 </div> 405 <div class="magic-feature-card"> 406 <div class="magic-feature-icon"> 407 <i data-lucide="zap" size="32"></i> 408 </div> 409 <h3>Quick Thinking</h3> 410 <p>Race against time to maximize your score with fast guesses</p> 411 </div> 412 <div class="magic-feature-card"> 413 <div class="magic-feature-icon"> 414 <i data-lucide="trophy" size="32"></i> 415 </div> 416 <h3>Competitive Play</h3> 417 <p>Challenge friends and climb the global leaderboard</p> 418 </div> 419 <div class="magic-feature-card"> 420 <div class="magic-feature-icon"> 421 <i data-lucide="trending-up" size="32"></i> 422 </div> 423 <h3>Track Progress</h3> 424 <p>Monitor your improvement with detailed statistics</p> 425 </div> 426 <div class="magic-feature-card"> 427 <div class="magic-feature-icon"> 428 <i data-lucide="users" size="32"></i> 429 </div> 430 <h3>50+ NBA Stars</h3> 431 <p>Extensive database of current and legendary players</p> 432 </div> 433 <div class="magic-feature-card"> 434 <div class="magic-feature-icon"> 435 <i data-lucide="gamepad-2" size="32"></i> 436 </div> 437 <h3>Multiple Modes</h3> 438 <p>Easy and Hard modes for all skill levels</p> 439 </div> 440 </div> 441 </div> 442 </section> 443 444 <!-- FAQ Section --> 445 <section id="faq" class="magic-faq"> 446 <div class="container"> 447 <div class="magic-section-header"> 448 <div class="magic-section-badge"> 449 <i data-lucide="message-circle" size="16"></i>
450 <span>FAQ</span> 451 </div> 452 <h2 class="magic-section-title">Frequently Asked Questions</h2> 453 <p class="magic-section-subtitle">Everything you need to know</p> 454 </div> 455 456 <div class="magic-faq-grid"> 457 <div class="magic-faq-item"> 458 <h3>What is Guess the Jumpshot?</h3> 459 <p>An exciting basketball game where you identify NBA players by their unique shooting forms.</p> 460 </div> 461 <div class="magic-faq-item"> 462 <h3>How do I play?</h3> 463 <p>Watch the video, identify the player, and type their name. You have 5 attempts per question.</p> 464 </div> 465 <div class="magic-faq-item"> 466 <h3>What's the difference between modes?</h3> 467 <p>Easy mode has clearer angles, while Hard mode features challenging views and faster clips.</p> 468 </div> 469 <div class="magic-faq-item"> 470 <h3>Is it free to play?</h3> 471 <p>Yes! Completely free with no registration required.</p> 472 </div> 473 <div class="magic-faq-item"> 474 <h3>Can I play on mobile?</h3> 475 <p>Absolutely! The game is fully responsive and works on all devices.</p> 476 </div> 477 <div class="magic-faq-item"> 478 <h3>How is scoring calculated?</h3> 479 <p>Points decrease with each attempt: 100, 80, 60, 40, 20. Skip equals 0 points.</p> 480 </div> 481 </div> 482 </div> 483 </section> 484 485 <!-- Footer --> 486 <footer class="magic-footer"> 487 <div class="container"> 488 <div class="magic-footer-content"> 489 <div class="magic-footer-brand"> 490 <div class="magic-logo"> 491 <img src="/images/guess-the-jumpshot-logo.jpeg" alt="Guess the Jumpshot Logo" class="magic-logo-icon" style="width: 32px; height: 32px; object-fit: contain;"> 492 <span>Guess the Jumpshot</span> 493 </div> 494 <p>The ultimate NBA player identification game</p> 495 </div> 496 <div class="magic-footer-links"> 497 <a href="#home">Home</a> 498 <a href="#game">Play Game</a> 499 <a href="/leaderboard">Leaderboard</a> 500 <a href="/blog">Blog</a> 501 <a href="#" onclick="openFeedback(); return false;">Send Feedback</a> 502 <a href="/privacy-policy.html">Privacy</a> 503 <a href="/terms-of-service.html">Terms</a> 504 </div> 505 <div class="magic-footer-social"> 506 <a href="https://x.com/JsonChao" target="_blank" rel="noopener noreferrer" aria-label="Twitter"><i data-lucide="twitter" size="20"></i></a> 507 </div> 508 </div> 509 <div class="magic-footer-bottom"> 510 <p>© 2025 Guess the Jumpshot. All rights reserved. | <a href="/cdn-cgi/l/email-protection#e99a9c9999869b9da98e9c8c9a9ac49d818cc4839c84999a81869dc78a8684"><span class="__cf_email__" data-cfemail="fb888e8b8b94898fbb9c8e9e8888d68f939ed6918e968b8893948fd5989496">[email protected]</span></a></p> 511 </div> 512 513 514 <div class="magic-footer-friendly" style="display: flex; flex-direction: column; align-items: center; gap: 12px; padding: 20px 0; border-top: 1px solid rgba(255,255,255,0.1);"> 515 <h3 style="margin: 0; font-size: 14px; color: rgba(255,255,255,0.75);">Friendly Links</h3> 516 <div style="display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: 8px 16px;"> 517 <a href="https://couple-ai.com/" target="_blank" rel="noopener noreferrer">couple ai</a> 518 <a href="https://removebgvideo.com/" target="_blank" rel="noopener noreferrer">remove bg video</a> 519 <a href="https://wutang-namegenerator.com/" target="_blank" rel="noopener noreferrer">wu tang name generator</a> 520 <a href="https://rule34dle.co/" target="_blank" rel="noopener noreferrer">rule34dle</a> 521 <a href="https://oldenglishfont.org/" target="_blank" rel="noopener noreferrer">old english font generator</a> 522 <a href="https://aiimagecombiner.ai/" target="_blank" rel="noopener noreferrer">ai image combiner</a> 523 <a href="https://volume-shader.net/" target="_blank" rel="noopener noreferrer">volume shader</a> 524 <a href="https://markdown-to-word.com/" target="_blank" rel="noopener noreferrer">markdown to word</a> 525 <a href="https://m3u8-player.app/" target="_blank" rel="noopener noreferrer">
525m3u8 player</a> 526 <a href="https://cznull.org/" target="_blank" rel="noopener noreferrer">cznull</a> 527 <a href="https://pvzfusion.id/" target="_blank" rel="noopener noreferrer">pvz fusion</a> 528 <a href="https://morsecodetranslator.run/" target="_blank" rel="noopener noreferrer">morse code translator</a> 529 <a href="https://string-art-generator.com/blog/string-art-generator-alinedeco" target="_blank" rel="noopener noreferrer">alinedeco</a> 530 <a href="https://exiled-exchange2.com/" target="_blank" rel="noopener noreferrer">exiled exchange 2</a> 531 <a href="https://black-souls.net/" target="_blank" rel="noopener noreferrer">black souls</a> 532 <a href="https://fortnitespritetracker.org/" target="_blank" rel="noopener noreferrer">Fortnite Sprite Tracker</a> 533 <a href="https://matrizdeldestino.app/" target="_blank" rel="noopener noreferrer">matriz del destino</a> 534 <a href="https://volumeshaderbm.net" target="_blank" rel="noopener noreferrer">volume shader bm</a> 535 <a href="https://destinymatrix.app/" target="_blank" rel="noopener noreferrer">destiny matrix</a> 536 <a href="https://astrocartographychart.app/" target="_blank" rel="noopener noreferrer">astrocartography chart</a> 537 <a href="https://ttviewer.org/" target="_blank" rel="noopener noreferrer">tiktok viewer</a> 538 539 <a href="https://kingshot-optimizer.com/" target="_blank" rel="noopener noreferrer">kingshot optimizer</a> 540 <a href="https://soundloadmate.org/" target="_blank" rel="noopener noreferrer">SoundCloud to MP3</a> 541 <a href="https://imagenatexto.app/" target="_blank" rel="noopener noreferrer">imagen a texto</a> 542 <a href="https://vynoa.ai/" target="_blank" rel="noopener noreferrer">vynoa</a> 543 </div> 544 </div> 545 546 <!-- Featured Badges --> 547 <div class="magic-footer-badges" style="display: flex; justify-content: center; align-items: center; gap: 20px; padding: 20px 0; flex-wrap: wrap;"> 548 <a href="https://aistage.net" title="AIStage">AIStage</a> 549 <a title="All The Best AI Tools" href="https://allinai.tools">All in AI Tools</a> 550 <a target="_blank" href="https://goodaitools.com"><img src="https://goodaitools.com/assets/images/badge.png" alt="Good AI Tools" height="54"></a> 551 <a href="https://findly.tools/guess-the-jumpshot?utm_source=guess-the-jumpshot" target="_blank"> 552 <img 553 src="https://findly.tools/badges/findly-tools-badge-light.svg" 554 alt="Featured on findly.tools" 555 width="150" 556 /> 557 </a> 558 <a href="https://startupfa.me/s/guess-the-jumpshot?utm_source=guess-the-jumpshot.com" target="_blank"><img src="https://startupfa.me/badges/featured-badge.webp" alt="Featured on Startup Fame" width="171" height="54" /></a> 559 </div> 560 </div> 561 562 <div style="margin-top: 1rem; padding-top: 1rem; display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: 1rem;"> 563 <a href="https://facelessreels.co/" target="_blank" rel="noopener noreferrer">faceless reels</a> 564 <a href="https://deepnostalgia-ai.com/" target="_blank" rel="noopener noreferrer">deep nostalgia ai</a> 565 </div> 566</footer> 567 568 <!-- Scripts -->
vendor: 113 bytes, lines 568-569
568 569 <script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
569<script src="config.js"></script>
569 570
570<script src="js/supabase-simple.js"></script>
570 571
571<script src="magic-modal.js"></script>
571 572
572<script src="magic-game.js"></script>
572 573
573<script src="magic-comments.js"></script>
573 574
574<script src="magic-feedback.js"></script>
574 575
575<script> 576 window.openFeedback = function() { 577 if (window.magicFeedback) { 578 window.magicFeedback.open(); 579 } 580 }; 581 </script>
581 582
582<script> 583 // Initialize Supabase on page load 584 document.addEventListener('DOMContentLoaded', async () => { 585 if (window.GameDB) { 586 await window.GameDB.loadSupabase(); 587 console.log('Supabase initialized for anonymous game tracking'); 588 } 589 590 // Initialize comments in sidebar mode for game section 591 if (document.getElementById('gameSidebarComments')) { 592 window.gameSidebarComments = new MagicComments('gameSidebarComments', { mode: 'sidebar' }); 593 } 594 }); 595 </script>
595 596 597
597<script> 598 // Initialize Lucide icons 599 lucide.createIcons(); 600 601 // Navbar scroll effect 602 window.addEventListener('scroll', function() { 603 const nav = document.getElementById('magicNav'); 604 if (window.scrollY > 50) { 605 nav.classList.add('scrolled'); 606 } else { 607 nav.classList.remove('scrolled'); 608 } 609 }); 610 611 // Smooth scrolling for navigation links 612 document.querySelectorAll('a[href^="#"]').forEach(anchor => { 613 anchor.addEventListener('click', function (e) { 614 e.preventDefault(); 615 const target = document.querySelector(this.getAttribute('href')); 616 if (target) { 617 target.scrollIntoView({ 618 behavior: 'smooth', 619 block: 'start' 620 }); 621 } 622 }); 623 }); 624 625 // Active navigation link 626 function updateActiveNav() { 627 const navLinks = document.querySelectorAll('.magic-menu-link'); 628 629 // Get all sections that have IDs and are visible in navigation 630 const navSections = ['home', 'game', 'how-to-play', 'features', 'faq']; 631 let current = ''; 632 633 // Special handling for very top of page 634 if (window.scrollY < 100) { 635 current = 'home'; 636 } else { 637 // Check each navigation section 638 for (let sectionId of navSections) { 639 const section = document.getElementById(sectionId); 640 if (section) { 641 const rect = section.getBoundingClientRect(); 642 const sectionTop = section.offsetTop; 643 const sectionHeight = section.offsetHeight; 644 645 // Check if this section is in viewport or we're scrolled into it 646 // Using a more generous detection area 647 if (window.scrollY >= sectionTop - 200 && 648 window.scrollY < sectionTop + sectionHeight - 100) { 649 current = sectionId; 650 break; // Stop at first match 651 } 652 } 653 } 654 655 // If no section matched but we're on the page, keep Home active 656 // This handles gaps between sections 657 if (!current) { 658 // Check if we're in the upper half of the page 659 const pageHeight = document.documentElement.scrollHeight; 660 if (window.scrollY < pageHeight / 2) { 661 current = 'home'; 662 } else { 663 // In lower half, find the closest section above current position 664 for (let i = navSections.length - 1; i >= 0; i--) { 665 const section = document.getElementById(navSections[i]); 666 if (section && section.offsetTop <= window.scrollY + 200) { 667 current = navSections[i]; 668 break; 669 } 670 } 671 // Default to home if nothing else matches 672 if (!current) current = 'home'; 673 } 674 } 675 } 676 677 // Update navigation links - only remove/add active class where needed 678 navLinks.forEach(link => { 679 const href = link.getAttribute('href'); 680 const isHomeLink = href === '#home' || href === '/'; 681 const isCurrentSection = href === `#${current}`; 682 683 if (isHomeLink && current === 'home') { 684 link.classList.add('active'); 685 } else if (isCurrentSection) { 686 link.classList.add('active'); 687 } else { 688 link.classList.remove('active'); 689 } 690 }); 691 } 692 693 // Update on scroll 694 window.addEventListener('scroll', updateActiveNav); 695 696 // Initialize on page load - multiple methods to ensure it works 697 if (document.readyState === 'loading') { 698 document.addEventListener('DOMContentLoaded', updateActiveNav); 699 } else { 700 // DOM is already loaded 701 updateActiveNav(); 702 } 703 704 // Also update after a small delay to ensure everything is rendered 705 setTimeout(updateActiveNav, 100); 706 707 // Update when window fully loads (including all resources) 708 window.addEventListener('load', updateActiveNav); 709 </script>
709 710 <!-- Magic Share Button Script --> 711
711<script src="magic-share-button.js"></script>
711 712 713 714 715 <!-- Enhanced Mobile Interactions Fix --> 716
716<script> 717 (function() { 718 // Wait for DOM and all scripts to load 719 function initializeMobileInteractions() { 720 // Fix Mobile Navigation Toggle 721 const mobileToggle = document.getElementById('mobileToggle'); 722 const nav = document.getElementById('magicNav'); 723 724 if (mobileToggle && nav) { 725 // Remove any existing listeners first 726 const newToggle = mobileToggle.cloneNode(true); 727 mobileToggle.parentNode.replaceChild(newToggle, mobileToggle); 728 729 // Add click listener with proper event handling 730 newToggle.addEventListener('click', function(e) { 731 e.preventDefault(); 732 e.stopPropagation(); 733 nav.classList.toggle('mobile-active'); 734 console.log('Mobile menu toggled'); 735 }, { passive: false }); 736 737 // Add touch listener for better mobile response 738 newToggle.addEventListener('touchstart', function(e) { 739 e.preventDefault(); 740 e.stopPropagation(); 741 nav.classList.toggle('mobile-active'); 742 }, { passive: false }); 743 } 744 745 // Fix Share Button on Mobile 746 setTimeout(function() { 747 const shareBtn = document.getElementById('magicShareBtn'); 748 if (shareBtn) { 749 // Clone to remove existing listeners 750 const newShareBtn = shareBtn.cloneNode(true); 751 shareBtn.parentNode.replaceChild(newShareBtn, shareBtn); 752 753 // Add both click and touch listeners 754 newShareBtn.addEventListener('click', function(e) { 755 e.preventDefault(); 756 e.stopPropagation(); 757 const container = this.closest('.magic-share-container'); 758 if (container) { 759 container.classList.toggle('active'); 760 // Update icon 761 if (container.classList.contains('active')) { 762 this.innerHTML = '<i data-lucide="x" size="24"></i>'; 763 } else { 764 this.innerHTML = '<i data-lucide="share-2" size="24"></i>'; 765 } 766 // Re-initialize Lucide icons 767 if (window.lucide) { 768 window.lucide.createIcons(); 769 } 770 } 771 }); 772 773 // Touch event for mobile 774 newShareBtn.addEventListener('touchstart', function(e) { 775 // Allow click event to fire 776 }, { passive: true }); 777 } 778 779 // Fix share option clicks on mobile 780 document.querySelectorAll('.magic-share-option').forEach(option => { 781 option.addEventListener('touchstart', function(e) { 782 // Allow default behavior for links 783 }, { passive: true }); 784 }); 785 }, 1000); // Wait for share button to be created 786 787 // Close menu on menu link click (mobile) 788 document.querySelectorAll('.magic-menu-link').forEach(link => { 789 link.addEventListener('click', function() { 790 if (nav && nav.classList.contains('mobile-active')) { 791 nav.classList.remove('mobile-active'); 792 } 793 }); 794 }); 795 796 // Re-initialize Lucide icons 797 if (window.lucide) { 798 window.lucide.createIcons(); 799 } 800 } 801 802 // Initialize when DOM is ready 803 if (document.readyState === 'loading') { 804 document.addEventListener('DOMContentLoaded', initializeMobileInteractions); 805 } else { 806 initializeMobileInteractions(); 807 } 808 809 // Also initialize after a delay to catch dynamically added elements 810 setTimeout(initializeMobileInteractions, 500); 811 })(); 812 813 // Share score function (global) 814 async function shareScore(score) { 815 const message = `I just scored ${score} points in Guess the Jumpshot! Can you beat my score?`; 816 817 if (navigator.share) { 818 try { 819 await navigator.share({ 820 title: 'Guess the Jumpshot', 821 text: message, 822 url: window.location.origin 823 }); 824 } catch (err) {
825 console.log('Share cancelled'); 826 } 827 } else { 828 // Fallback - copy to clipboard 829 const textToCopy = `${message} Play at: ${window.location.origin}`; 830 navigator.clipboard.writeText(textToCopy).then(() => { 831 alert('Score copied to clipboard!'); 832 }); 833 } 834 } 835 </script>
835 836
836<script src="/js/mobile-nav-fix.js"></script>
836 837</body> 838</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.