您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Play Snake on any webpage by pressing 'S'
此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.greasyfork.icu/scripts/491883/1355808/Snake%20Game.js
// ==UserScript== // @name Snake Game // @namespace http://tampermonkey.net/ // @version 0.1 // @description Play Snake on any webpage by pressing 'S' // @author You // @match https://*/* // @match http://*/* // @grant none // ==/UserScript== (function() { 'use strict'; let snakeInterval; let snake; let food; let direction; let score; function initSnake() { snake = [{x: 10, y: 10}]; food = getRandomPosition(); direction = 'right'; score = 0; snakeInterval = setInterval(moveSnake, 100); } function getRandomPosition() { return { x: Math.floor(Math.random() * 20), y: Math.floor(Math.random() * 20) }; } function moveSnake() { const head = { ...snake[0] }; switch (direction) { case 'up': head.y--; break; case 'down': head.y++; break; case 'left': head.x--; break; case 'right': head.x++; break; } if (head.x < 0 || head.x >= 20 || head.y < 0 || head.y >= 20 || isSnakeCollided(head)) { clearInterval(snakeInterval); alert('Game Over! Score: ' + score); initSnake(); return; } snake.unshift(head); if (head.x === food.x && head.y === food.y) { score++; food = getRandomPosition(); } else { snake.pop(); } drawSnake(); } function isSnakeCollided(head) { return snake.some(segment => segment.x === head.x && segment.y === head.y); } function drawSnake() { const canvas = document.getElementById('snakeCanvas'); const ctx = canvas.getContext('2d'); ctx.clearRect(0, 0, canvas.width, canvas.height); snake.forEach(segment => { ctx.fillStyle = 'green'; ctx.fillRect(segment.x * 20, segment.y * 20, 20, 20); }); ctx.fillStyle = 'red'; ctx.fillRect(food.x * 20, food.y * 20, 20, 20); } function handleKeydown(event) { switch (event.key) { case 'ArrowUp': direction = 'up'; break; case 'ArrowDown': direction = 'down'; break; case 'ArrowLeft': direction = 'left'; break; case 'ArrowRight': direction = 'right'; break; case 's': case 'S': if (!snakeInterval) { initSnake(); } break; } } function createCanvas() { const canvas = document.createElement('canvas'); canvas.id = 'snakeCanvas'; canvas.width = 400; canvas.height = 400; canvas.style.border = '1px solid black'; canvas.style.position = 'fixed'; canvas.style.top = '50%'; canvas.style.left = '50%'; canvas.style.transform = 'translate(-50%, -50%)'; canvas.style.zIndex = '9999'; document.body.appendChild(canvas); } createCanvas(); document.addEventListener('keydown', handleKeydown); })();