您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
плохое настроение? сыграйте в меня!
// ==UserScript== // @name Snake Game! // @version 3.6 // @description плохое настроение? сыграйте в меня! // @autor Minish // @namespace drawaria.snake.game // @match drawaria.online // @grant none // ==/UserScript== (function() { 'use strict'; // Create the game canvas const canvas = document.createElement('canvas'); canvas.width = 800; // Increased width canvas.height = 600; // Increased height document.body.appendChild(canvas); const ctx = canvas.getContext('2d'); // Load images const appleImage = new Image(); appleImage.src = 'https://w7.pngwing.com/pngs/381/179/png-transparent-apple-green-apple-green-apple-food-granny-smith-asian-pear-thumbnail.png'; // Transparent background apple const goldenAppleImage = new Image(); goldenAppleImage.src = 'https://w7.pngwing.com/pngs/534/248/png-transparent-minecraft-computer-icons-golden-apple-golden-orange-fruit-apple-thumbnail.png'; // Transparent background golden apple const backgroundImage = new Image(); backgroundImage.src = 'https://avatars.mds.yandex.net/i?id=d7ddea51bc660760175ae06837721008ec22c13e3c0bd198-10786048-images-thumbs&n=13'; // Указанная текстура фона // Game variables const box = 40; // Increased size of apples const initialPosition = { x: 9 * box, y: 9 * box }; // Initial spawn position let snake = [initialPosition]; // Start with initial snake position let direction = null; let apple = spawnApple(); let goldenApple = null; // Variable for golden apple let score = 0; let skins = ['green', 'blue', 'red', 'yellow', 'purple']; let currentSkin = 0; // Index for the current skin let isPaused = false; // Game pause state let appleCount = 0; // Count of regular apples collected // Load sound const soundEffect = new Audio('https://www.myinstants.com/en/instant/snake-game-food-65186/?utm_source=copy&utm_medium=share'); // URL to sound effect // Create skin selection section const shopContainer = document.createElement('div'); shopContainer.style.margin = '20px'; shopContainer.style.textAlign = 'center'; shopContainer.style.backgroundColor = 'lightgray'; shopContainer.style.padding = '10px'; shopContainer.style.borderRadius = '5px'; const title = document.createElement('h2'); title.innerHTML = 'Shop - Choose Your Skin'; shopContainer.appendChild(title); skins.forEach((color, index) => { const button = document.createElement('button'); button.innerHTML = `Buy ${color} Skin`; button.style.margin = '5px'; button.onclick = () => { currentSkin = index; // Change skin index }; shopContainer.appendChild(button); }); document.body.appendChild(shopContainer); // Control the snake with arrow keys document.addEventListener('keydown', (event) => { if (event.key === 'ArrowUp' && direction !== 'DOWN') { direction = 'UP'; soundEffect.play(); // Play sound on key press } else if (event.key === 'ArrowDown' && direction !== 'UP') { direction = 'DOWN'; soundEffect.play(); // Play sound on key press } else if (event.key === 'ArrowLeft' && direction !== 'RIGHT') { direction = 'LEFT'; soundEffect.play(); // Play sound on key press } else if (event.key === 'ArrowRight' && direction !== 'LEFT') { direction = 'RIGHT'; soundEffect.play(); // Play sound on key press } else if (event.key === ' ') { isPaused = !isPaused; // Toggle pause on space soundEffect.play(); // Play sound on key press } }); // Game loop function game() { if (!isPaused) { ctx.clearRect(0, 0, canvas.width, canvas.height); // Clear the canvas for redrawing // Draw the background texture ctx.drawImage(backgroundImage, 0, 0, canvas.width, canvas.height); // Draw the snake for (let i = 0; i < snake.length; i++) { ctx.fillStyle = (i === 0) ? skins[currentSkin] : 'lightgreen'; // Change head color based on current skin ctx.fillRect(snake[i].x, snake[i].y, box, box); ctx.strokeStyle = 'darkgreen'; ctx.strokeRect(snake[i].x, snake[i].y, box, box); } // Draw the apple ctx.drawImage(appleImage, apple.x, apple.y, box, box); // Draw the golden apple if it exists if (goldenApple) { ctx.drawImage(goldenAppleImage, goldenApple.x, goldenApple.y, box, box); } // Move the snake let snakeX = snake[0].x; let snakeY = snake[0].y; if (direction === 'LEFT') snakeX -= box; if (direction === 'UP') snakeY -= box; if (direction === 'RIGHT') snakeX += box; if (direction === 'DOWN') snakeY += box; // Check if the snake eats the apple if (snakeX === apple.x && snakeY === apple.y) { score++; appleCount++; // Increment apple count apple = spawnApple(); // Spawn a new apple // Check if the apple count reached 100 if (appleCount === 100) { goldenApple = spawnGoldenApple(); // Spawn golden apple } } else { snake.pop(); } // Check if the snake eats the golden apple if (goldenApple && snakeX === goldenApple.x && snakeY === goldenApple.y) { score += 500; // Add 500 points for golden apple goldenApple = null; // Remove golden apple after eaten appleCount = 0; // Reset apple count after golden apple } // Add the new head const newHead = { x: snakeX, y: snakeY }; // Check for collisions with walls or itself if (collision(newHead, snake) || snakeX < 0 || snakeX >= canvas.width || snakeY < 0 || snakeY >= canvas.height) { alert('Game Over! Your score: ' + score + '. Click OK to respawn.'); teleportToSpawn(); // Teleport to spawn } else { snake.unshift(newHead); } ctx.fillStyle = 'black'; ctx.font = '20px Arial'; ctx.fillText('Score: ' + score, box, box); ctx.fillText('Apples Collected: ' + appleCount, box, box + 20); // Display collected apples } else { ctx.fillStyle = 'black'; ctx.font = '30px Arial'; ctx.fillText('Game Paused', canvas.width / 2 - 70, canvas.height / 2); } } // Check for collision with the snake itself function collision(head, array) { for (let i = 0; i < array.length; i++) { if (head.x === array[i].x && head.y === array[i].y) { return true; } } return false; } // Teleport to spawn position function teleportToSpawn() { snake = [initialPosition]; // Reset snake to spawn position direction = null; // Reset direction apple = spawnApple(); // Spawn a new apple goldenApple = null; // Remove golden apple if it exists appleCount = 0; // Reset apple count } // Function to spawn apple in a valid location function spawnApple() { let newApple; let isValidPosition = false; while (!isValidPosition) { newApple = { x: Math.floor(Math.random() * (canvas.width / box)) * box, y: Math.floor(Math.random() * (canvas.height / box)) * box }; // Check if the apple spawns on the snake isValidPosition = !collision(newApple, snake); } return newApple; } // Function to spawn golden apple in a valid location function spawnGoldenApple() { let newGoldenApple; let isValidPosition = false; while (!isValidPosition) { newGoldenApple = { x: Math.floor(Math.random() * (canvas.width / box)) * box, y: Math.floor(Math.random() * (canvas.height / box)) * box }; // Check if the golden apple spawns on the snake or regular apple isValidPosition = !collision(newGoldenApple, snake) && !(newGoldenApple.x === apple.x && newGoldenApple.y === apple.y); } return newGoldenApple; } // Start the game loop setInterval(game, 100); })();