SCP-CN-3620 - 贪吃蛇收容程序

源页面
2025年2月17日
修订 18

核心指标

更新于 2025年11月6日
评分
45
↑ 71
↓ 26
支持率
73%
总票数 97
Wilson 95% 下界
63.6%
在相同票数下更稳健的支持率估计
争议指数
0.785

评分趋势

按周聚合
加载图表中...

最近修订

1 / 7
修改标签
3 个月前
移除标签:中心。
修改标签
3 个月前
已新增标签:中心。
修改标签
3 个月前
移除标签:奇术。

最近投票

1 / 10
2025-10-06
2025-10-01
2025-09-15
2025-09-15
2025-09-15
2025-09-15
2025-09-14
2025-08-29
2025-08-25

页面源码

源码字符数 19075文字字数 795
[[>]]
[[module Rate]]
[[/>]]


[[=]]

+ ##ff5555|**页面正在遭受--攻击--食用!**##
[[/=]]


[[html]]
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>霜之哀伤果</title>
    <style>
        body {
            background-color: black;
            color: black;
            font-family: Arial, sans-serif;
            font-size: 18px;
            line-height: 1.6;
            padding: 20px;
        }
        .text-container {
            position: relative;
        }
        .text-container span {
            display: inline-block;
            opacity: 1;
            transition: opacity 0.01s ease-in-out;
        }
        .text-container span.hidden {
            opacity: 0;
        }
    </style>
</head>
<body>
    <div class="text-container" id="text-container">
        <span>项目编号: SCP-CN-3620</span><br><br>
        <span>项目等级:Keter</span><br><br>
        <span>特殊收容措施:SCP-CN-3620 目前被收容于 Site-CN-999 的封闭式服务器中中。</span><br>
        <span>所有与 SCP-CN-3620 相关的实验必须在至少两名 A 级权限人员的监督下进行。</span><br>
        <span>任何对于SCP-CN-3620 所在服务器未经授权的访问或操作将立即被终止连接。</span><br<br>
        
        <span> </span><br><br>
        <span>描述:</span><br>
        <span>SCP-CN-3620 是一段具有一定智能的异常代码,首次发现于中国██省██市的一台废弃服务器中。</span><br>
        <span>该代码以“蛇”的形式存在于虚拟环境中,并表现出对数据的强烈“吞食”渴求。</span><br>
        <span>SCP-CN-3620 的异常特性在于,其吞噬虚拟环境中的数据文件后,其”体积“/大小将会增长。</span><br><br>
        
    </div>

    <script>
        const textContainer = document.getElementById('text-container');
        const spans = textContainer.querySelectorAll('span');
        let index = 0;

        function hideText() {
            if (index < spans.length) {
                spans[index].classList.add('hidden');
                index++;
                setTimeout(hideText, 500); // 每句话消失的时间间隔(
            }
        }

        // 启动!!!!!!!!
        setTimeout(hideText, 4000); // 直接来吧
    </script>
</body>
</html>
[[/html]]



@@ @@
@@ @@
@@ @@
@@ @@
@@ @@
@@ @@
@@ @@
@@ @@
@@ @@
@@ @@
@@ @@
@@ @@
@@ @@
@@ @@
@@ @@
@@ @@
@@ @@
@@ @@
@@ @@
@@ @@
@@ @@
@@ @@
@@ @@
@@ @@
@@ @@
@@ @@
@@ @@
@@ @@
@@ @@
@@ @@

> Site-CN-999 内部通告
> -----
> 日期: ██/██/20██
> 发件人: 主管 ████
> 收件人: Site-CN-999 全体人员
> 主题: 关于 SCP-CN-3620 收容程序的紧急通知
> ------
> 
> 各位站点成员
> 
> 好吧,我们失败了
> 
> 三天前,Site-CN-999 的虚拟环境监控系统检测到 SCP-CN-3620 的异常活动频率显著增加。它开始主动攻击我们的防火墙,并试图突破虚拟环境的限制。如果它成功,后果将不堪设想——整个区域的网络系统可能会在几秒钟内崩溃,甚至可能波及全球。
> 
> 在过去的 72 小时内,我们尝试了多种方法来抑制 SCP-CN-3620 的活动,包括数据库封存,强制删除,离线处理。然而,这些方法都失败了。每次我们试图中断它的程序,它都会以更快的速度恢复,并且变得更加难以控制。
> 
> 昨晚,SCP-CN-3620 甚至短暂地突破了第███层防火墙,导致我们的主服务器瘫痪了整整 32 分钟21秒。在这段时间内,我们的系统完全失效,而 SCP-CN-3620 趁机吞噬了大量数据文件,包括他自己的文档数据。幸运的是,我们的应急小组及时启动了备用系统,才避免了更大的灾难。
> 
> 所以,经过紧急会议,我们决定采用一种全新的收容策略——“虚拟收容程序”。这个程序的原理很简单:通过模拟 SCP-CN-3620 的行为模式,我们可以人为地控制它的活动,并防止它突破收容。
> 
> 具体来说,你们将在一个虚拟环境中操作一条“蛇”,通过不断的生存下去,来取得短暂的和平。
> 
> 从现在开始,站点所有人员应使用就近的电子设备——应急小组已经把程序发在你们设备上了。

----
> ##ff5555|**收容行动需知**##
> 
> 程序一旦启动不可停止
> 移动端用户可通过按键操纵,如果遇到##ff5555|**蛇消失**##的问题,不要惊慌,只是游戏界面较大,手机屏幕显示不全
> ##ff5555|**电脑用户**##可直接使用##ff5555|**方向键**##操纵


----
> 主管留言:
> 
> 祝你好运!



[[=]]
----
[[/=]]
[[=]]
再来一局?点我 [[[https://scp-wiki-cn.wikidot.com/scp-cn-3620| 刷新页面]]]
[[/=]]

[[html]]

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>开!</title>
    <style>
        body {
            margin: 0;
            height: 100vh;
            background: #0a0a0a;
            font-family: 'Courier New', monospace;
            overflow: hidden;
        }

        .game-container {
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh
            gap: 30px;
            padding: 20px;
            opacity: 1;
        }

       

        canvas {
            border: 2px solid #999999;
            background: #000;
            box-shadow: 0 0 30px rgba(0, 255, 128, 0.2);
        }

        #scpDocument {
            width: 300px;
            height: 363px;
            background: rgba(0, 30, 15, 0.9);
            border: 1px solid #004422;
            color: #00ff88;
            padding: 20px;
            overflow-y: auto;
            line-height: 1.6;
        }

        #warning {
            position: fixed;
            opacity: 0.5;
            bottom: 100px; /* 调整位置 */
            color: #ff5555;
            animation: blink 1s infinite;
            display: none;
        }

        #breachEffect {
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background: rgba(255,0,0,0.9);
            color: #fff;
            display: none;
            justify-content: center;
            align-items: center;
            flex-direction: column;
            z-index: 2000;
            font-family: 'Arial Black', sans-serif;
            text-align: center;
            animation: breachPulse 0.5s infinite;
        }

        @keyframes blink {
            50% { opacity: 0.3; }
        }

        @keyframes breachPulse {
            0% { background: rgba(200,0,0,0.9); }
            50% { background: rgba(255,0,0,0.9); }
            100% { background: rgba(200,0,0,0.9); }
        }

        .breach-text {
            font-size: 4em;
            text-shadow: 0 0 20px #fff;
            margin: 20px;
            transform: scale(3);
            animation: textAppear 2s forwards;
        }

        @keyframes textAppear {
            to {
                transform: scale(1);
                opacity: 1;
            }
            from {
                transform: scale(3);
                opacity: 0;
            }
        }

        .terminal-text {
            font-family: 'Courier New', monospace;
            font-size: 1.2em;
            margin: 10px;
            opacity: 0;
            animation: terminalTyping 3s 2s forwards;
        }

        @keyframes terminalTyping {
            from {
                opacity: 0;
                letter-spacing: -10px;
            }
            to {
                opacity: 1;
                letter-spacing: normal;
            }
        }

        /* 按钮哈哈哈哈哈哈哈哈哈哈哈哈 */
        #controls {
            position: fixed;
            bottom: 0;
            left: 0;
            width: 100%;
            height: 100px;
            display: flex;
            justify-content: center;
            align-items: center;
            gap: 10px;
            opacity: 0.5;
            z-index: 1000;
        }

        .control-button {
            width: 60px;
            height: 60px;
            background: #004422;
            border: 2px solid #00ff88;
            color: #00ff88;
            font-size: 24px;
            display: flex;
            justify-content: center;
            align-items: center;
            cursor: pointer;
            user-select: none;
            opacity: 0.7;
            border-radius: 10px;
            box-shadow: 0 0 10px rgba(0, 255, 128, 0.5);
        }

        .control-button:active {
            background: #00ff88;
            color: #004422;
        }

       #pauseOverlay {
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background: rgba(0, 0, 0, 0.9);
            color: #00ff88;
            display: none;
            justify-content: center;
            align-items: center;
            flex-direction: column;
            z-index: 3000;
            font-family: 'Courier New', monospace;
            text-align: center;
        }

        #pauseOverlay h2 {
            font-size: 2.5em;
            margin-bottom: 20px;
        }

        #pauseOverlay p {
            font-size: 1.2em;
            margin-bottom: 30px;
        }

        #resumeButton {
            padding: 10px 20px;
            background: #004422;
            border: 2px solid #00ff88;
            color: #00ff88;
            font-size: 1.2em;
            cursor: pointer;
            user-select: none;
            border-radius: 5px;
            transition: background 0.3s, color 0.3s;
        }

        #resumeButton:hover {
            background: #00ff88;
            color: #004422;
        }
    </style>
</head>
<body>
    <div class="particles" id="particles"></div>
    <div class="game-container">
        <canvas id="gameCanvas" width="400" height="400"></canvas>
        <div id="scpDocument"></div>
    </div>
    <div id="warning">.</div>
    <div id="breachEffect">
        <div class="breach-text">收容失效</div>
        <div class="terminal-text">[系统崩溃] 实体已突破第███层防火墙</div>
        <div class="terminal-text" style="animation-delay:3s">页面已崩溃</div>
        <div class="terminal-text" style="animation-delay:5s">虚拟环收容境蕌寴峔嶏岦崨嵾巁帀幉庰廔弢彍怷</div>
    </div>

    <!-- 暂停pause! -->
    <div id="pauseOverlay">
        <h2>您收到了一条消息</h2>
        <p>主管 13:32</p>
        <p>上班在玩什么呢?</p>
        <button id="resumeButton">回复“滚”</button>
    </div>

    <!-- 按钮,可以按 -->
    <div id="controls">
        <div class="control-button" id="up">⬆️</div>
        <div class="control-button" id="down">⬇️</div>
     <div class="control-button" id="left">⬅️</div>
        <div class="control-button" id="right">➡️</div>
    </div>

    <script>
        const canvas = document.getElementById('gameCanvas');
        const ctx = canvas.getContext('2d');
        const scpDocument = document.getElementById('scpDocument');
        const gameContainer = document.querySelector('.game-container');
        const warningElement = document.getElementById('warning');
        const breachEffect = document.getElementById('breachEffect');
        const particlesContainer = document.getElementById('particles');
        const pauseOverlay = document.getElementById('pauseOverlay');
        const resumeButton = document.getElementById('resumeButton');

        const GRID_SIZE = 20;
        const TILE_COUNT = canvas.width / GRID_SIZE;
        let snake = [{ x: 10, y: 10 }];
        let food = { x: 15, y: 15 };
        let direction = { x: 0, y: 0 };
        let nextDirection = { x: 1, y: 0 };
        let gameSpeed = 150;
        let score = 0;
        let phase = 0;
        let gameActive = true;

        const scpData = [
            "SCP-CN-3620 ",
            "正在重启中......",
            "实时数据吞吐量: [0] TB",
            "当前投喂文件数: [0]",
            "Dr.grape失败",
            "Resty失败",
            "剩余1人存活",
            "…………",
            "<span style='color:#ff5555'>坚持住!</span>"
        ];

        function createParticles() {
            for (let i = 0; i < 100; i++) {
                const particle = document.createElement('div');
                particle.className = 'particle';
                particle.style.left = `${Math.random() * 100}vw`;
                particle.style.top = `${Math.random() * 100}vh`;
                particle.style.animationDuration = `${Math.random() * 5 + 5}s`;
                particlesContainer.appendChild(particle);
            }
        }

        function gameLoop() {
            if (!gameActive) return;
            
            direction = nextDirection;
            const newHead = {
                x: (snake[0].x + direction.x + TILE_COUNT) % TILE_COUNT,
                y: (snake[0].y + direction.y + TILE_COUNT) % TILE_COUNT
            };

            if (snake.some(segment => segment.x === newHead.x && segment.y === newHead.y)) {
                gameOver();
                return;
            }

            snake.unshift(newHead);

            if (newHead.x === food.x && newHead.y === food.y) {
                score++;
                updateDocument();
                spawnFood();
                checkPhase();
                checkScoreForPause(); // 检查是否需要暂停,OKOK
            } else {
                snake.pop();
            }

            drawGame();
            setTimeout(gameLoop, gameSpeed);
        }

        function drawGame() {
            ctx.fillStyle = '#001100';
            ctx.fillRect(0, 0, canvas.width, canvas.height);

            snake.forEach((segment, index) => {
                ctx.fillStyle = `hsl(${120 + index * 5}, 70%, ${50 - index % 15}%)`;
                ctx.fillRect(
                    segment.x * GRID_SIZE,
                    segment.y * GRID_SIZE,
                    GRID_SIZE - 1,
                    GRID_SIZE - 1
                );
                ctx.strokeStyle = '#00ff88';
                ctx.strokeRect(
                    segment.x * GRID_SIZE,
                    segment.y * GRID_SIZE,
                    GRID_SIZE - 1,
                    GRID_SIZE - 1
                );
            });

            ctx.fillStyle = '#ff2255';
            ctx.beginPath();
            ctx.arc(
                food.x * GRID_SIZE + GRID_SIZE/2,
                food.y * GRID_SIZE + GRID_SIZE/2,
                GRID_SIZE/2 - 2, 0, Math.PI * 2
            );
            ctx.fill();
            ctx.strokeStyle = '#ff8888';
            ctx.lineWidth = 2;
            ctx.stroke();
        }

        function spawnFood() {
            let attempts = 0;
            let foundValidPosition = false;
            
            while (!foundValidPosition && attempts < 100) {
                food.x = Math.floor(Math.random() * 13) + 3;
                food.y = Math.floor(Math.random() * TILE_COUNT);
                
                foundValidPosition = !snake.some(segment => 
                    Math.abs(segment.x - food.x) < 2 && 
                    Math.abs(segment.y - food.y) < 2
                );
                
                attempts++;
            }

            if (!foundValidPosition) {
                food.x = (snake[0].x + 5) % TILE_COUNT;
                food.y = (snake[0].y + 5) % TILE_COUNT;
            }
        }

        function updateDocument() {
            scpData[2] = `实时数据吞吐量: [${score * 157}] TB`;
            scpData[3] = `当前投喂文件数: [${score}]`;
            
            const content = scpData
                .slice(0, Math.min(score + 2, scpData.length))
                .map(line => line.replace(/\[0\]/g, score))
                .map(line => `<p>${line}</p>`)
                .join('');
            
            scpDocument.innerHTML = content;
            scpDocument.scrollTop = scpDocument.scrollHeight;
        }
//这里不能动
        function checkPhase() {
            if (score % 7 === 0 && score > 0) {
                phase++;
                gameSpeed = Math.max(50, 150 - phase * 20);
                warningElement.style.display = 'block';
                setTimeout(() => warningElement.style.display = 'none', 2000);
            }
        }

        function checkScoreForPause() {
            if (score  === 12 && score > 0) {
                pauseGame();
            }
        }

        function pauseGame() {
            gameActive = false;
            pauseOverlay.style.display = 'flex';
        }

        function resumeGame() {
            gameActive = true;
            pauseOverlay.style.display = 'none';
            gameLoop(); // 继续游戏循环
        }

        function gameOver() {
            gameActive = false;
            breachEffect.style.display = 'flex';
            canvas.style.filter = 'blur(5px)';
            document.removeEventListener('keydown', handleKeyPress);





//难
            // 彩蛋:好样的
            if (score === 4) {
                const eggText = document.createElement('div');
                eggText.className = 'terminal-text';
                eggText.textContent = '👍 差点打败 KC';
                eggText.style.animation = 'terminalTyping 3s forwards';
                breachEffect.appendChild(eggText);
            }
          // 彩蛋:人如鸡
            if (score === 3) {
                const eggText = document.createElement('div');
                eggText.className = 'terminal-text';
                eggText.textContent = '仁济😓';
                eggText.style.animation = 'terminalTyping 3s forwards';
                breachEffect.appendChild(eggText);
            }
          // 彩蛋:神
            if (score > 19) {
                const eggText = document.createElement('div');
                eggText.className = 'terminal-text';
                eggText.textContent = '👍';
                eggText.style.animation = 'terminalTyping 3s forwards';
                breachEffect.appendChild(eggText);
            }
 // 彩蛋:神
            if (score < 20) {
                const eggText = document.createElement('div');
                eggText.className = 'terminal-text';
                eggText.textContent = '发配到D级餐厅洗碗😭';
                eggText.style.animation = 'terminalTyping 3s forwards';
                breachEffect.appendChild(eggText);
            }





            setTimeout(() => {
                const newText = document.createElement('div');
                newText.className = 'terminal-text';
                newText.textContent = `最佳得分:${score}`;
                newText.style.animation = 'terminalTyping 3s forwards';
                breachEffect.appendChild(newText);
            }, 7000);

            document.body.addEventListener('click', () => {
                document.documentElement.requestFullscreen().catch(() => {});
            }, { once: true });
        }

        function handleKeyPress(e) {
            e.preventDefault();
            switch(e.key) {
                case 'ArrowLeft':
                    if (direction.x === 0) nextDirection = { x: -1, y: 0 };
                    break;
                
                case 'ArrowUp':
                    if (direction.y === 0) nextDirection = { x: 0, y: -1 };
                    break;
                case 'ArrowDown':
                    if (direction.y === 0) nextDirection = { x: 0, y: 1 };
                    break;
                case 'ArrowRight':
                    if (direction.x === 0) nextDirection = { x: 1, y: 0 };
                    break;
            }
        }

        // 绑定虚拟按钮事件
        document.getElementById('left').addEventListener('click', () => {
            if (direction.x === 0) nextDirection = { x: -1, y: 0 };
        });
        document.getElementById('up').addEventListener('click', () => {
            if (direction.y === 0) nextDirection = { x: 0, y: -1 };
        });
        document.getElementById('down').addEventListener('click', () => {
            if (direction.y === 0) nextDirection = { x: 0, y: 1 };
        });
        document.getElementById('right').addEventListener('click', () => {
            if (direction.x === 0) nextDirection = { x: 1, y: 0 };
        });

        // 绑定继续游戏按钮事件,这里绑上面
        resumeButton.addEventListener('click', resumeGame);

        function initGame() {
            gameContainer.style.display = 'flex';
            document.addEventListener('keydown', handleKeyPress);
            spawnFood();
            updateDocument();
            drawGame();
            gameLoop();
            createParticles();
        }

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

[[/html]]












[[div class="footer-wikiwalk-nav"]]
[[=]]
<< [[[SCP-CN-3619]]] | SCP-CN-3620 | [[[SCP-CN-3621]]] >>
[[/=]]
[[/div]]