Skills Plugins MCP Prompt Model 博客 我的中心

Cosmic keystrokes

Full Prompt

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <script src="https://cdn.tailwindcss.com"></script>
  <title>Side-Scrolling Typing Game</title>
</head>
<body class="bg-gray-900 text-white">
  <div class="fixed top-4 right-4 text-2xl">Score: <span id="score">0</span></div>
  <div id="game" class="h-screen w-screen overflow-hidden relative">
    <div id="player" class="absolute bottom-10 left-10 w-8 h-8 bg-blue-500"></div>
  </div>
  <div id="word-input" class="fixed top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 bg-white text-black p-4 rounded hidden">
    <input type="text" id="typed-word" class="border border-gray-300 rounded px-2 py-1 mb-2 w-full">
    <button id="submit-word" class="bg-blue-500 text-white px-4 py-2 rounded">Submit</button>
  </div>
  <script>
    const words = ['ability', 'able', 'about', 'above', 'accept', 'according', 'account', 'across', 'action', 'activity', 'actually', 'address', 'administration', 'admit', 'adult', 'affect', 'after', 'again', 'against', 'agency', 'agent', 'ago', 'agree', 'agreement', 'ahead', 'air', 'all', 'allow', 'almost', 'alone', 'along', 'already', 'also', 'although', 'always', 'American', 'among', 'amount', 'analysis', 'and', 'animal', 'another', 'answer', 'any', 'anyone', 'anything', 'appear', 'apply', 'approach', 'area', 'argue', 'arm', 'around', 'arrive', 'art', 'article', 'artist', 'as', 'ask', 'assume', 'at', 'attack', 'attention', 'attorney', 'audience', 'author', 'authority', 'available', 'avoid', 'away', 'baby', 'back', 'bad', 'bag', 'ball', 'bank', 'bar', 'base', 'be', 'beat', 'beautiful', 'because', 'become', 'bed', 'before', 'begin', 'behavior', 'behind', 'believe', 'benefit', 'best', 'better', 'between', 'beyond', 'big', 'bill', 'billion', 'bit', 'black', 'blood', 'blue', 'board', 'body', 'book', 'born', 'both', 'box', 'boy', 'break', 'bring', 'brother', 'budget', 'build', 'building', 'business', 'but', 'buy', 'by', 'call', 'camera', 'campaign'];

    let score = 0;
    let currentWord;
    let startTime;

    const game = document.getElementById('game');
    const player = document.getElementById('player');
    const wordInput = document.getElementById('word-input');
    const typedWord = document.getElementById('typed-word');
    const submitWord = document.getElementById('submit-word');
    const scoreDisplay = document.getElementById('score');

    let playerX = 10;
    let playerY = game.offsetHeight - 50;
    const speed = 5;

    function placeWord() {
      const word = document.createElement('div');
      word.textContent = words[Math.floor(Math.random() * words.length)];
      word.className = 'absolute text-2xl';
      word.style.left = `${game.offsetWidth + 10}px`;
      word.style.top = `${Math.random() * (game.offsetHeight - 50)}px`;
      game.appendChild(word);
      return word;
    }

    function checkCollision(word) {
      const playerRect = player.getBoundingClientRect();
      const wordRect = word.getBoundingClientRect();
      return !(
        playerRect.right < wordRect.left ||
        playerRect.left > wordRect.right ||
        playerRect.bottom < wordRect.top ||
        playerRect.top > wordRect.bottom
      );
    }

    function startInput(word) {
      currentWord = word.textContent;
      wordInput.style.display = 'block';
      typedWord.value = '';
      typedWord.focus();
      startTime = Date.now();
    }

    function endInput() {
      wordInput.style.display = 'none';
      const endTime = Date.now();
      const elapsedTime = endTime - startTime;
      const timeBonus = Math.max(2000 - elapsedTime, 0);
      score += Math.round(1000 + timeBonus);
      scoreDisplay.textContent = score;
    }

    function checkInput() {
      if (typedWord.value === currentWord) {
        endInput();
      }
    }

    function gameLoop() {
      playerY = Math.max(0, Math.min(playerY, game.offsetHeight - player.offsetHeight));
      playerX = Math.max(0, Math.min(playerX, game.offsetWidth - player.offsetWidth));
      player.style.top = `${playerY}px`;
      player.style.left = `${playerX}px`;

      const words = Array.from(document.querySelectorAll('#game > div:not(#player)'));
      words.forEach(word => {
        const currentLeft = parseInt(word.style.left);
        word.style.left = `${currentLeft - speed}px`;
        if (checkCollision(word)) {
          startInput(word);
        }
        if (currentLeft < -word.offsetWidth) {
          word.remove();
        }
      });

      if (Math.random() < 0.01) {
        placeWord();
      }

      requestAnimationFrame(gameLoop);
    }

    document.addEventListener('keydown', e => {
      if (e.key === 'w') playerY -= speed;
      if (e.key === 'a') playerX -= speed;
      if (e.key === 's') playerY += speed;
      if (e.key === 'd') playerX += speed;
    });

    typedWord.addEventListener('input', checkInput);
    submitWord.addEventListener('click', checkInput);

    gameLoop();
  </script>
</body>
</html>

Full Prompt · #101619

Source: public cases from PrompterHub (prompterhub.cn); prompts and images belong to their original authors.

Side-Scrolling Ty…","genre":"工具","url":"https://deepseekmodel.com/en/prompts-detail?id=101619"}</script> <script> // ─── Prompt 详情页交互:复制 ─── (function () { var page = document.getElementById('sdPage'); if (!page) return; var T = page.dataset; function flash(btn, text) { var orig = btn.dataset.origLabel; if (orig === undefined) { orig = btn.textContent; btn.dataset.origLabel = orig; } btn.textContent = text; window.setTimeout(function () { btn.textContent = orig; }, 1500); } page.addEventListener('click', function (e) { var btn = e.target.closest('[data-copy]'); if (!btn) return; var src = document.querySelector(btn.dataset.copy); if (!src || !navigator.clipboard) return; navigator.clipboard.writeText(src.textContent).then(function () { flash(btn, T.tCopied || 'Copied'); }); }); })(); </script> <!-- ─── CTA Banner ─── --> </main> <div class="cta-banner reveal"> <h2 data-i18n="cta_title">每日精选 Skill 推荐,免费送到你邮箱</h2> <p data-i18n="cta_desc">输入邮箱,每天接收一个精选 AI Agent 技能推荐。完全免费,持续更新。</p> <div class="cta-form"> <input type="email" data-i18n-placeholder="cta_placeholder" placeholder="输入邮箱,获取每日技能推荐" id="ctaEmail" inputmode="email" autocomplete="email"> <div class="cta-captcha"> <span class="cta-captcha-label" data-i18n="captcha_label">验证码</span> <span class="cta-captcha-q" id="ctaCaptchaQuestion">--</span> <input type="text" id="ctaCaptcha" inputmode="numeric" autocomplete="off" maxlength="6" data-i18n-placeholder="captcha_placeholder" placeholder="请输入计算结果"> </div> <button onclick="handleSubscribe()" data-i18n="cta_btn">免费订阅</button> </div> <p style="font-size:0.72rem;color:var(--text-muted);margin-top:0.8rem;" data-i18n="cta_confirm_note">提交后我们会发送一封确认邮件,点击邮件里的链接才会开始收信。</p> <p style="font-size:0.72rem;color:var(--text-muted);margin-top:0.35rem;" data-i18n="cta_spam">完全免费,取消任意时间。我们不会发送垃圾邮件。</p> </div> <!-- ─── Footer ─── --> <footer> <!-- ─── 友情链接 ─── --> <style> .friend-links { max-width: 760px; margin: 0 auto 2rem; text-align: center; padding: 0 1rem; } .friend-links h3 { font-family: 'Be Vietnam Pro', 'Noto Sans SC', sans-serif; font-size: 1rem; font-weight: 600; color: var(--text); margin-bottom: 0.9rem; } .friend-links .links { display: flex; flex-wrap: wrap; gap: 0.5rem; justify-content: center; } .friend-links a { display: inline-flex; align-items: center; gap: 0.3rem; padding: 0.4rem 0.9rem; border-radius: 50px; border: 1px solid var(--border); background: var(--bg-card); color: var(--text-dim); font-size: 0.76rem; text-decoration: none; transition: all 0.2s; max-width: 240px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .friend-links a:hover { color: var(--accent); border-color: var(--accent); background: var(--accent-light); } </style> <div class="friend-links"> <h3 data-i18n="friend_links_title">友情链接</h3> <div class="links"> <a href="https://axutongxue.com.cn/" target="_blank" rel="noopener" title="https://axutongxue.com.cn/">阿虚同学的储物间</a> <a href="https://deepseekmodel.com/" target="_blank" rel="noopener" title="https://deepseekmodel.com/">DeepseekModel | AI Agent Skills 市场 | 2000 精选技能 + 技能链编排</a> </div> </div> <div class="footer-links"> <a href="/en/skills" data-i18n="footer_skills">Skills</a> <a href="/en/plugins" data-i18n="footer_plugins">Plugins</a> <a href="/en/mcp" data-i18n="footer_mcp">MCP</a> <a href="/en/model" data-i18n="footer_model">Model</a> <a href="/en/blog" data-i18n="footer_blog">博客</a> <a href="/en/about" data-i18n="footer_about">关于</a> </div> <p data-i18n="footer_text">DeepseekModel 是一个第三方开源 AI Agent Skills 市场。每一个 Skill 都经过精心挑选,让 AI 真正拥有灵魂。</p> <p style="margin-top:0.35rem;"> <span data-i18n="footer_contact">联系</span>: <a href="mailto:tourisian@163.com" style="color:var(--text-dim);text-decoration:none;">tourisian@163.com</a> / <a href="mailto:grllq458@gmail.com" style="color:var(--text-dim);text-decoration:none;">grllq458@gmail.com</a> </p> <p style="margin-top:0.7rem;font-size:0.74rem;color:var(--text-muted);line-height:1.85;max-width:820px;margin-left:auto;margin-right:auto;" data-i18n="footer_source_note">本站部分 Skill 内容来源于公开渠道、认证企业或由用户自主发布,使用前请注意识别相关风险,内容版权归原作者所有。</p> <p style="margin-top:0.25rem;font-size:0.74rem;color:var(--text-muted);line-height:1.85;max-width:820px;margin-left:auto;margin-right:auto;" data-i18n="footer_infringement">侵权处理:如 Skill 涉及版权问题,请发送邮件至 tourisain@163.com,我们将在收到通知后及时核实并予以下架处理。</p> <p style="margin-top:0.5rem;font-size:0.8rem;color:var(--text-muted);"> DeepseekModel © 2026 </p> </footer> <!-- ─── 右下角悬浮操作:返回顶部 + 开发者邮箱 ─── --> <style> .side-fab { position: fixed; right: 1.1rem; bottom: 1.4rem; z-index: 60; display: flex; flex-direction: column; align-items: flex-end; gap: 0.6rem; } .fab { width: 42px; height: 42px; border-radius: 50%; border: 1px solid var(--border); background: var(--bg-card); color: var(--text-dim); cursor: pointer; padding: 0; display: inline-flex; align-items: center; justify-content: center; box-shadow: var(--shadow-md, 0 6px 20px rgba(16, 24, 40, 0.12)); transition: opacity 0.25s, transform 0.2s, border-color 0.2s, color 0.2s; } .fab:hover { border-color: var(--accent); color: var(--accent); transform: translateY(-2px); } #fabTop { opacity: 0; pointer-events: none; transform: translateY(8px); } #fabTop.show { opacity: 1; pointer-events: auto; transform: translateY(0); } /* id 选择器优先级高于 .fab:hover,悬停上移需在此显式声明 */ #fabTop.show:hover { transform: translateY(-2px); } .fab-mail-wrap { position: relative; } /* 悬停 / 点击展开的开发者联系卡:邮箱 + 公众号二维码(贴着按钮下沿向上生长,避免超出视口) */ .fab-tip { position: absolute; right: 52px; bottom: 0; width: 168px; box-sizing: border-box; padding: 0.7rem 0.7rem 0.75rem; text-align: center; background: var(--bg-card); border: 1px solid var(--border); border-radius: 16px; box-shadow: var(--shadow-md, 0 6px 20px rgba(16, 24, 40, 0.12)); transform-origin: bottom right; transform: translateX(6px) scale(0.96); opacity: 0; pointer-events: none; transition: opacity 0.22s, transform 0.22s; } .fab-mail-wrap:hover .fab-tip, .fab-mail-wrap.show .fab-tip { opacity: 1; pointer-events: auto; transform: translateX(0) scale(1); } .fab-tip-mail { display: block; font-size: 0.72rem; font-family: 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, monospace; color: var(--text); text-decoration: none; word-break: break-all; } .fab-tip-mail:hover { color: var(--accent); } .fab-tip-hr { height: 1px; margin: 0.6rem 0; background: var(--border); } .fab-tip-cap { margin: 0 0 0.5rem; font-size: 0.72rem; line-height: 1.4; color: var(--text-dim); } .fab-tip-qr { display: block; width: 100%; height: auto; border-radius: 10px; border: 1px solid var(--border); background: #fff; } @media (max-width: 640px) { .side-fab { right: 0.8rem; bottom: 1rem; gap: 0.5rem; } .fab { width: 38px; height: 38px; } .fab-tip { right: 46px; width: 152px; } } </style> <div class="side-fab"> <button type="button" class="fab" id="fabTop" aria-label="返回顶部" title="返回顶部"> <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 19V5"/><path d="M5 12l7-7 7 7"/></svg> </button> <div class="fab-mail-wrap" id="fabMail"> <button type="button" class="fab" id="fabMailBtn" aria-label="联系开发者" title="联系开发者"> <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M21 11.5a8.38 8.38 0 0 1-.9 3.8 8.5 8.5 0 0 1-7.6 4.7 8.38 8.38 0 0 1-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 0 1-.9-3.8 8.5 8.5 0 0 1 4.7-7.6 8.38 8.38 0 0 1 3.8-.9h.5a8.48 8.48 0 0 1 8 8v.5z"/></svg> </button> <div class="fab-tip" role="dialog" aria-label="开发者联系方式"> <a class="fab-tip-mail" href="mailto:tourisain@163.com">tourisain@163.com</a> <div class="fab-tip-hr"></div> <p class="fab-tip-cap">公众号 · TURU指南</p> <img class="fab-tip-qr" src="/assets/turu-qr.jpg" width="152" height="152" alt="微信公众号 TURU指南 二维码" loading="lazy" decoding="async"> </div> </div> </div> <script> // ─── Mobile Menu ─── function toggleMobileMenu() { document.getElementById('navToggle').classList.toggle('open'); document.getElementById('mobileMenu').classList.toggle('open'); document.body.style.overflow = document.getElementById('mobileMenu').classList.contains('open') ? 'hidden' : ''; } function closeMobileMenu() { document.getElementById('navToggle').classList.remove('open'); document.getElementById('mobileMenu').classList.remove('open'); document.body.style.overflow = ''; } // ─── Nav scroll effect ─── // 性能:rAF 节流 + 仅在状态翻转时写 DOM,避免滚动期每个 scroll 事件都触发一次样式重算 var nav = document.getElementById('navbar'); var navScrolled = false, navTicking = false; window.addEventListener('scroll', function() { if (navTicking) return; navTicking = true; requestAnimationFrame(function() { var s = window.scrollY > 50; if (s !== navScrolled) { navScrolled = s; nav.classList.toggle('scrolled', s); } navTicking = false; }); }, { passive: true }); // ─── Scroll Reveal ─── var observer = new IntersectionObserver(function(entries) { entries.forEach(function(entry) { if (entry.isIntersecting) entry.target.classList.add('visible'); }); }, { threshold: 0.1, rootMargin: '0px 0px -30px 0px' }); document.querySelectorAll('.reveal').forEach(function(el) { observer.observe(el); }); // ─── FAQ Accordion ─── function toggleFaq(el) { var card = el.parentElement; var isOpen = card.classList.contains('open'); document.querySelectorAll('.faq-card').forEach(function(c) { c.classList.remove('open'); }); if (!isOpen) card.classList.add('open'); } // ─── Subscribe ─── var ctaCaptchaLoaded = false; function refreshSubscribeCaptcha() { var q = document.getElementById('ctaCaptchaQuestion'); if (!q) return; ctaCaptchaLoaded = true; q.title = t('captcha_refresh'); q.textContent = '...'; fetch('/api/captcha.php?action=generate', { credentials: 'same-origin' }) .then(function(r) { return r.json(); }) .then(function(d) { q.textContent = d.success ? d.question : t('captcha_refresh'); }) .catch(function() { q.textContent = t('captcha_refresh'); }); } // 懒加载:只有访客真要订阅时才签发验证码。 // 若在页面加载时就调用,会给每个匿名访客都签发会话 Cookie(破坏页面公共缓存) // 并白白消耗验证码签发限流额度。 (function() { var em = document.getElementById('ctaEmail'); var q = document.getElementById('ctaCaptchaQuestion'); var cap = document.getElementById('ctaCaptcha'); if (!em || !q || !cap) return; q.textContent = t('captcha_refresh'); q.addEventListener('click', refreshSubscribeCaptcha); [em, cap].forEach(function(el) { el.addEventListener('focus', function() { if (!ctaCaptchaLoaded) refreshSubscribeCaptcha(); }, { once: true }); }); })(); async function handleSubscribe() { var email = document.getElementById('ctaEmail').value.trim(); var capEl = document.getElementById('ctaCaptcha'); var captcha = capEl ? capEl.value.trim() : ''; if (!email) { alert(t('subscribe_empty')); return; } if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)) { alert(t('subscribe_invalid')); return; } if (!captcha) { alert(t('subscribe_need_captcha')); refreshSubscribeCaptcha(); return; } var btn = document.querySelector('.cta-form button'); btn.disabled = true; btn.textContent = t('subscribe_submitting'); try { var res = await fetch('/api/subscribe.php', { method: 'POST', headers: { 'Content-Type': 'application/json' }, credentials: 'same-origin', body: JSON.stringify({ email: email, captcha: captcha }) }); var data = await res.json(); if (data.success) { document.getElementById('ctaEmail').value = ''; alert(data.message || t('subscribe_success')); } else { alert(data.message || t('subscribe_fail')); } } catch (e) { alert(t('subscribe_network')); } finally { if (capEl) capEl.value = ''; refreshSubscribeCaptcha(); // 验证码一次性使用,无论成败都换一题 btn.disabled = false; btn.textContent = t('cta_btn'); } } // ─── Visitor Counter(仅后台统计,不公开展示;静默上报,避免影响页面渲染)─── (function() { var p = location.pathname + location.search; fetch('/api/counter.php?page=' + encodeURIComponent(p), { method: 'POST' }).catch(function() {}); })(); // ─── 百度收录主动推送(加速中文页收录)─── (function() { var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(bp, s); })(); // ─── 右下角:返回顶部 + 开发者邮箱 ─── (function() { var topBtn = document.getElementById('fabTop'); if (topBtn) { var ticking = false; function syncFab() { var show = window.scrollY > 320; if (show !== topBtn.classList.contains('show')) topBtn.classList.toggle('show', show); ticking = false; } window.addEventListener('scroll', function() { if (ticking) return; ticking = true; requestAnimationFrame(syncFab); }, { passive: true }); topBtn.addEventListener('click', function() { window.scrollTo({ top: 0, behavior: 'smooth' }); }); syncFab(); } var mailWrap = document.getElementById('fabMail'); var mailBtn = document.getElementById('fabMailBtn'); if (mailWrap && mailBtn) { mailBtn.addEventListener('click', function(e) { e.preventDefault(); mailWrap.classList.toggle('show'); }); document.addEventListener('click', function(e) { if (!mailWrap.contains(e.target)) mailWrap.classList.remove('show'); }); } })(); // footer 在 header 脚本之后才解析,这里再应用一次语言(覆盖 footer 内所有 data-i18n) applyLanguage(); </script> </body> </html>