• 24-06-2026, 15:05:08
    #1
    <!DOCTYPE html>
    <html lang="tr">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Mini Agar.io (Botlu)</title>
        <style>
            body {
                margin: 0;
                overflow: hidden;
                background-color: #111;
                font-family: Arial, sans-serif;
            }
            canvas {
                display: block;
            }
            #scoreBoard {
                position: absolute;
                top: 10px;
                left: 10px;
                color: white;
                font-size: 20px;
                font-weight: bold;
                background: rgba(0, 0, 0, 0.5);
                padding: 10px;
                border-radius: 5px;
                pointer-events: none;
            }
            #gameOver {
                display: none;
                position: absolute;
                top: 50%;
                left: 50%;
                transform: translate(-50%, -50%);
                color: white;
                text-align: center;
                background: rgba(0, 0, 0, 0.8);
                padding: 30px;
                border-radius: 10px;
            }
            button {
                padding: 10px 20px;
                font-size: 16px;
                cursor: pointer;
                border: none;
                border-radius: 5px;
                background-color: #28a745;
                color: white;
                font-weight: bold;
            }
        </style>
    </head>
    <body>
    
        <div id="scoreBoard">Skor: <span id="score">10</span></div>
        
        <div id="gameOver">
            <h1>Kaybettin!</h1>
            <p>Botlar seni yuttu.</p>
            <button onclick="restartGame()">Yeniden Başla</button>
        </div>
    
        <canvas id="gameCanvas"></canvas>
    
        <script>
            const canvas = document.getElementById("gameCanvas");
            const ctx = canvas.getContext("2d");
    
            // Ekran boyutunu ayarla
            canvas.width = window.innerWidth;
            canvas.height = window.innerHeight;
    
            // Oyun Dünyası Boyutları (Ekrandan daha büyük bir harita)
            const WORLD_WIDTH = 3000;
            const WORLD_HEIGHT = 3000;
    
            let player;
            let foods = [];
            let bots = [];
            let isGameOver = false;
    
            // Fare Pozisyonu
            let mouse = { x: canvas.width / 2, y: canvas.height / 2 };
    
            window.addEventListener('mousemove', (e) => {
                mouse.x = e.clientX;
                mouse.y = e.clientY;
            });
    
            window.addEventListener('resize', () => {
                canvas.width = window.innerWidth;
                canvas.height = window.innerHeight;
            });
    
            // Rastgele Renk Oluşturucu
            function getRandomColor() {
                const colors = ['#f1c40f', '#e67e22', '#e74c3c', '#3498db', '#9b59b6', '#1abc9c', '#e84393', '#badc58'];
                return colors[Math.floor(Math.random() * colors.length)];
            }
    
            // Oyunu Başlat/Sıfırla
            function init() {
                isGameOver = false;
                document.getElementById("gameOver").style.display = "none";
                
                // Oyuncu Başlangıcı
                player = {
                    x: WORLD_WIDTH / 2,
                    y: WORLD_HEIGHT / 2,
                    radius: 20,
                    color: '#2ecc71',
                    speed: 4
                };
    
                // Yemleri Oluştur
                foods = [];
                for (let i = 0; i < 400; i++) {
                    spawnFood();
                }
    
                // Botları Oluştur
                bots = [];
                for (let i = 0; i < 20; i++) {
                    spawnBot();
                }
            }
    
            function spawnFood() {
                foods.push({
                    x: Math.random() * WORLD_WIDTH,
                    y: Math.random() * WORLD_HEIGHT,
                    radius: 5,
                    color: getRandomColor()
                });
            }
    
            function spawnBot() {
                bots.push({
                    x: Math.random() * WORLD_WIDTH,
                    y: Math.random() * WORLD_HEIGHT,
                    radius: Math.random() * 25 + 10, // 10 ile 35 arası rastgele boyut
                    color: '#e74c3c',
                    // Rastgele hedef yönü
                    targetX: Math.random() * WORLD_WIDTH,
                    targetY: Math.random() * WORLD_HEIGHT,
                    speed: 3
                });
            }
    
            // İki nokta arasındaki mesafe (Çarpışma testi için)
            function getDistance(x1, y1, x2, y2) {
                return Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));
            }
    
            // Güncelleme Mantığı
            function update() {
                if (isGameOver) return;
    
                // --- OYUNCU HAREKETİ ---
                // Kameranın merkezine göre fare açısını hesapla
                let targetX = mouse.x - canvas.width / 2;
                let targetY = mouse.y - canvas.height / 2;
                let angle = Math.atan2(targetY, targetX);
    
                // Oyuncu büyüdükçe hızı yavaşlar
                player.speed = Math.max(1.5, 5 - (player.radius / 100));
    
                // Sadece fare merkezden uzaktaysa hareket et
                if (getDistance(mouse.x, mouse.y, canvas.width/2, canvas.height/2) > 10) {
                    player.x += Math.cos(angle) * player.speed;
                    player.y += Math.sin(angle) * player.speed;
                }
    
                // Sınır kontrolü
                player.x = Math.max(player.radius, Math.min(WORLD_WIDTH - player.radius, player.x));
                player.y = Math.max(player.radius, Math.min(WORLD_HEIGHT - player.radius, player.y));
    
                // --- BOTLARIN HAREKETİ ---
                bots.forEach(bot => {
                    // Bot hedefe yaklaştıysa yeni hedef seç
                    if (getDistance(bot.x, bot.y, bot.targetX, bot.targetY) < 20) {
                        bot.targetX = Math.random() * WORLD_WIDTH;
                        bot.targetY = Math.random() * WORLD_HEIGHT;
                    }
    
                    // Bota en yakın yemi veya küçük oyuncuyu kovalama yapay zekası eklenebilir, 
                    // şimdilik basitlik adına rastgele hedefe gidiyorlar.
                    let botAngle = Math.atan2(bot.targetY - bot.y, bot.targetX - bot.x);
                    bot.speed = Math.max(1, 4.5 - (bot.radius / 100));
                    
                    bot.x += Math.cos(botAngle) * bot.speed;
                    bot.y += Math.sin(botAngle) * bot.speed;
    
                    bot.x = Math.max(bot.radius, Math.min(WORLD_WIDTH - bot.radius, bot.x));
                    bot.y = Math.max(bot.radius, Math.min(WORLD_HEIGHT - bot.radius, bot.y));
                });
    
                // --- ÇARPIŞMALAR VE YEME MANTIĞI ---
    
                // 1. Oyuncunun Yemleri Yemesi
                for (let i = foods.length - 1; i >= 0; i--) {
                    if (getDistance(player.x, player.y, foods[i].x, foods[i].y) < player.radius) {
                        foods.splice(i, 1);
                        player.radius += 0.2; // Büyüme miktarı
                        spawnFood(); // Yeni yem ekle
                    }
                }
    
                // 2. Botların Yemleri Yemesi
                bots.forEach(bot => {
                    for (let i = foods.length - 1; i >= 0; i--) {
                        if (getDistance(bot.x, bot.y, foods[i].x, foods[i].y) < bot.radius) {
                            foods.splice(i, 1);
                            bot.radius += 0.2;
                            spawnFood();
                        }
                    }
                });
    
                // 3. Oyuncu ve Botların Birbirini Yemesi
                for (let i = bots.length - 1; i >= 0; i--) {
                    let bot = bots[i];
                    let dist = getDistance(player.x, player.y, bot.x, bot.y);
    
                    // Oyuncu botu yiyor (%10 daha büyük olmalı kuralı)
                    if (dist < player.radius && player.radius > bot.radius * 1.1) {
                        player.radius += bot.radius * 0.3; // Botun kütlesinin bir kısmını al
                        bots.splice(i, 1);
                        setTimeout(spawnBot, 3000); // 3 saniye sonra yeni bot doğsun
                    } 
                    // Bot oyuncuyu yiyor
                    else if (dist < bot.radius && bot.radius > player.radius * 1.1) {
                        isGameOver = true;
                        document.getElementById("gameOver").style.display = "block";
                    }
                }
    
                // Skor tablosunu güncelle (Kütle = yarıçapın yuvarlanmış hali)
                document.getElementById("score").innerText = Math.round(player.radius);
            }
    
            // Çizim Mantığı
            function draw() {
                // Ekranı temizle
                ctx.clearRect(0, 0, canvas.width, canvas.height);
    
                // Kamera takibi için ekranı oyuncunun merkezine kaydırıyoruz
                ctx.save();
                ctx.translate(canvas.width / 2 - player.x, canvas.height / 2 - player.y);
    
                // Arka plan kılavuz çizgileri (Grid sistemi)
                ctx.strokeStyle = '#222';
                ctx.lineWidth = 1;
                const gridSize = 50;
                for (let x = 0; x < WORLD_WIDTH; x += gridSize) {
                    ctx.beginPath();
                    ctx.moveTo(x, 0);
                    ctx.lineTo(x, WORLD_HEIGHT);
                    ctx.stroke();
                }
                for (let y = 0; y < WORLD_HEIGHT; y += gridSize) {
                    ctx.beginPath();
                    ctx.moveTo(0, y);
                    ctx.lineTo(WORLD_WIDTH, y);
                    ctx.stroke();
                }
    
                // Dünya Sınırlarını Çiz
                ctx.strokeStyle = '#ff0000';
                ctx.lineWidth = 5;
                ctx.strokeRect(0, 0, WORLD_WIDTH, WORLD_HEIGHT);
    
                // Yemleri Çiz
                foods.forEach(food => {
                    ctx.beginPath();
                    ctx.arc(food.x, food.y, food.radius, 0, Math.PI * 2);
                    ctx.fillStyle = food.color;
                    ctx.fill();
                    ctx.closePath();
                });
    
                // Botları Çiz
                bots.forEach(bot => {
                    ctx.beginPath();
                    ctx.arc(bot.x, bot.y, bot.radius, 0, Math.PI * 2);
                    ctx.fillStyle = bot.color;
                    ctx.fill();
                    ctx.closePath();
                    
                    // Bot boyutu yazısı
                    ctx.fillStyle = 'white';
                    ctx.font = '12px Arial';
                    ctx.textAlign = 'center';
                    ctx.fillText(Math.round(bot.radius), bot.x, bot.y + 4);
                });
    
                // Oyuncuyu Çiz (Eğer ölmediyse)
                if (!isGameOver) {
                    ctx.beginPath();
                    ctx.arc(player.x, player.y, player.radius, 0, Math.PI * 2);
                    ctx.fillStyle = player.color;
                    ctx.fill();
                    ctx.closePath();
    
                    // Oyuncu boyutu yazısı
                    ctx.fillStyle = 'white';
                    ctx.font = '14px Arial';
                    ctx.textAlign = 'center';
                    ctx.fillText(Math.round(player.radius), player.x, player.y + 5);
                }
    
                ctx.restore();
            }
    
            // Oyun Döngüsü
            function gameLoop() {
                update();
                draw();
                requestAnimationFrame(gameLoop);
            }
    
            function restartGame() {
                init();
            }
    
            // Oyunu başlat
            init();
            gameLoop();
        </script>
    </body>
    </html>





    Selamlar buyrun agar io yapay zeka ile yapıldı geliştirmek size kalmış iyi forumlar
  • 24-06-2026, 15:09:02
    #2
    ben slıther ıocuym aga
  • 24-06-2026, 15:09:22
    #3
  • 24-06-2026, 15:09:23
    #4
    Dijital Pazarlama Ajansı
    Agar io hilesi gelir mi
  • 24-06-2026, 15:12:45
    #5
    Founder
    Wagner Creative adlı üyeden alıntı: mesajı görüntüle
    Agar io hilesi gelir mi
    Bot hilesinden başka hile yok valla canım sıkılıyor
  • 24-06-2026, 15:17:06
    #6
    Kurumsal PLUS
    Çok basit bi oyun olmasına rağmen çok keyifli. Teşekkürler hocam.
  • 24-06-2026, 15:22:24
    #7
    🚘 R10 Nöbetçi Sigortacı
  • 24-06-2026, 15:22:54
    #8
    <?php
    // Gelişmiş Mini Agar.io - Tek Dosya (Hileler, Sprint, Zoom, Zeki Botlar)
    ?>
    <!DOCTYPE html>
    <html lang="tr">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>VIP Agar.io (Hileli & Gelişmiş)</title>
        <style>
            body { margin: 0; overflow: hidden; background-color: #1a1a1a; font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; user-select: none; }
            canvas { display: block; }
            #uiLayer { position: absolute; top: 0; left: 0; width: 100%; height: 100%; pointer-events: none; }
            
            /* Skor ve Liderlik Tablosu */
            #scoreBoard { position: absolute; top: 15px; left: 15px; color: #fff; font-size: 20px; background: rgba(0, 0, 0, 0.6); padding: 10px 20px; border-radius: 8px; font-weight: bold; border-left: 4px solid #2ecc71; }
            #leaderboard { position: absolute; top: 15px; right: 15px; width: 200px; color: #fff; background: rgba(0, 0, 0, 0.6); padding: 15px; border-radius: 8px; border-top: 4px solid #f1c40f; }
            #leaderboard h3 { margin: 0 0 10px 0; text-align: center; font-size: 18px; color: #f1c40f; border-bottom: 1px solid rgba(255,255,255,0.2); padding-bottom: 5px; }
            #leaderboard ol { margin: 0; padding-left: 25px; font-size: 14px; }
            #leaderboard li { margin-bottom: 5px; }
            .highlight { color: #2ecc71; font-weight: bold; text-shadow: 0 0 5px #2ecc71; }
            
            /* Minimap */
            #minimap-container { position: absolute; bottom: 15px; right: 15px; width: 150px; height: 150px; background: rgba(0,0,0,0.7); border: 2px solid #555; border-radius: 8px; overflow: hidden; }
            #minimap { width: 100%; height: 100%; }
            
            /* Oyun Sonu Ekranı */
            #gameOver { display: none; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); color: white; text-align: center; background: rgba(0, 0, 0, 0.95); padding: 40px; border-radius: 15px; pointer-events: auto; box-shadow: 0 0 30px rgba(231, 76, 60, 0.5); }
            button { padding: 12px 25px; font-size: 18px; cursor: pointer; border: none; border-radius: 5px; background-color: #2ecc71; color: white; font-weight: bold; transition: 0.2s; }
            button:hover { background-color: #27ae60; transform: scale(1.05); }
            
            /* Kontroller & Hileler Bilgisi */
            #controls { position: absolute; bottom: 15px; left: 15px; color: rgba(255,255,255,0.8); font-size: 13px; background: rgba(0,0,0,0.6); padding: 15px; border-radius: 8px; border-left: 4px solid #3498db; }
            #controls span { color: #e74c3c; font-weight: bold; }
        </style>
    </head>
    <body>
    
        <div id="uiLayer">
            <div id="scoreBoard">Kütle: <span id="score" style="color:#2ecc71;">20</span></div>
            <div id="leaderboard">
                <h3>Liderlik Tablosu</h3>
                <ol id="lb-list"></ol>
            </div>
            <div id="minimap-container">
                <canvas id="minimap"></canvas>
            </div>
            <div id="controls">
                <b>🔥 NORMAL KONTROLLER</b><br>
                <b>Fare:</b> Yönlendirme<br>
                <b>Fare Tekerleği:</b> Kamera Zoom<br>
                <b>Boşluk:</b> Bölünme<br>
                <b>W:</b> Yem Fırlatma<br>
                <b>Shift (Basılı Tut):</b> Depar At (Kütle Yakar)<br>
                <hr style="border:1px solid rgba(255,255,255,0.1); margin: 8px 0;">
                <b>👑 SANA ÖZEL HİLELER</b><br>
                <b>1:</b> +50 Kütle Ekle<br>
                <b>2:</b> Fareye Işınlan<br>
                <b>3:</b> Tüm Virüsleri Yut<br>
                <b>4:</b> Botları Dondur & Küçült
            </div>
            <div id="gameOver">
                <h1 style="color:#e74c3c; margin-top:0;">Oyun Bitti!</h1>
                <p>Maalesef yutuldun patron.</p>
                <button onclick="restartGame()">Yeniden Başla</button>
            </div>
        </div>
    
        <canvas id="gameCanvas"></canvas>
    
        <script>
            const canvas = document.getElementById("gameCanvas");
            const ctx = canvas.getContext("2d");
            const minimapCanvas = document.getElementById("minimap");
            const miniCtx = minimapCanvas.getContext("2d");
    
            let width = canvas.width = window.innerWidth;
            let height = canvas.height = window.innerHeight;
            minimapCanvas.width = 150;
            minimapCanvas.height = 150;
    
            const WORLD_SIZE = 4000;
            const colors = ['#f1c40f', '#e67e22', '#e74c3c', '#3498db', '#9b59b6', '#1abc9c', '#ff9ff3', '#00d2d3'];
            const botNames = ['Alfa', 'Beta', 'Gama', 'Delta', 'Pika', 'Zeta', 'Titan', 'Ghost', 'Shadow', 'Ninja', 'Cyber', 'Neon'];
    
            let camera = { x: WORLD_SIZE/2, y: WORLD_SIZE/2, zoom: 1 };
            let manualZoom = 1; // Fare tekerleği zoomu için eklendi
            let mouse = { x: width/2, y: height/2 };
            let isSprinting = false; // Shift tuşu deparı için eklendi
    
            let foods = [];
            let viruses = [];
            let ejectedMasses = [];
            let bots = [];
            let player = { id: 'player', name: 'Sen', color: '#2ecc71', cells: [] };
            let isGameOver = false;
    
            // Rastgele util
            function rand(min, max) { return Math.random() * (max - min) + min; }
            function getRandomColor() { return colors[Math.floor(Math.random() * colors.length)]; }
            function getDist(x1, y1, x2, y2) { return Math.hypot(x2 - x1, y2 - y1); }
    
            window.addEventListener('mousemove', (e) => { mouse.x = e.clientX; mouse.y = e.clientY; });
            window.addEventListener('resize', () => { width = canvas.width = window.innerWidth; height = canvas.height = window.innerHeight; });
    
            // Fare Tekerleği ile Zoom Mekaniği
            window.addEventListener('wheel', (e) => {
                manualZoom += e.deltaY * -0.001;
                manualZoom = Math.min(Math.max(0.3, manualZoom), 2.5); // Zoom sınırları
            });
    
            // --- KLAVYE KONTROLLERİ VE HİLELER ---
            window.addEventListener('keydown', (e) => {
                if (isGameOver) return;
                
                // Sprint (Depar)
                if (e.key === 'Shift') isSprinting = true;
    
                // Normal Yetenekler
                if (e.code === 'Space') splitCells(player);
                if (e.key.toLowerCase() === 'w') ejectMass(player);
    
                // 👑 HİLE 1: Anında Büyüme
                if (e.key === '1') {
                    player.cells.forEach(cell => cell.radius += 50);
                }
                
                // 👑 HİLE 2: Işınlanma
                if (e.key === '2') {
                    let targetX = (mouse.x - width/2) / camera.zoom + camera.x;
                    let targetY = (mouse.y - height/2) / camera.zoom + camera.y;
                    player.cells.forEach(cell => {
                        cell.x = Math.max(cell.radius, Math.min(WORLD_SIZE - cell.radius, targetX));
                        cell.y = Math.max(cell.radius, Math.min(WORLD_SIZE - cell.radius, targetY));
                    });
                }
    
                // 👑 HİLE 3: Virüsleri Yut
                if (e.key === '3') {
                    if (player.cells.length > 0 && viruses.length > 0) {
                        player.cells[0].radius += viruses.length * 4; 
                        viruses = []; // Haritayı temizle
                        for(let i=0; i<25; i++) viruses.push({ x: rand(0, WORLD_SIZE), y: rand(0, WORLD_SIZE), radius: rand(45, 60) }); // Yenilerini spawnla
                    }
                }
    
                // 👑 HİLE 4: Botları Dondur ve Küçült
                if (e.key === '4') {
                    bots.forEach(bot => {
                        bot.cells.forEach(cell => { 
                            cell.radius = 12; 
                            cell.vx = 0; 
                            cell.vy = 0; 
                            cell.targetX = cell.x; // Hedefi sıfırla ki durup kalsınlar
                            cell.targetY = cell.y;
                        });
                    });
                }
            });
    
            window.addEventListener('keyup', (e) => {
                if (e.key === 'Shift') isSprinting = false;
            });
    
            function init() {
                isGameOver = false;
                document.getElementById("gameOver").style.display = "none";
                manualZoom = 1;
                
                player.cells = [{ x: WORLD_SIZE/2, y: WORLD_SIZE/2, radius: 25, vx: 0, vy: 0 }];
                
                foods = []; viruses = []; ejectedMasses = []; bots = [];
                
                for(let i=0; i<1200; i++) foods.push({ x: rand(0, WORLD_SIZE), y: rand(0, WORLD_SIZE), radius: rand(4, 8), color: getRandomColor() });
                for(let i=0; i<25; i++) viruses.push({ x: rand(0, WORLD_SIZE), y: rand(0, WORLD_SIZE), radius: rand(45, 60) });
                for(let i=0; i<18; i++) spawnBot();
            }
    
            function spawnBot() {
                bots.push({
                    id: 'bot_' + Math.random(),
                    name: botNames[Math.floor(Math.random() * botNames.length)],
                    color: getRandomColor(),
                    cells: [{ x: rand(0, WORLD_SIZE), y: rand(0, WORLD_SIZE), radius: rand(20, 70), vx: 0, vy: 0 }]
                });
            }
    
            // --- BÖLÜNME (SPACE) MANTIĞI ---
            function splitCells(entity) {
                let newCells = [];
                entity.cells.forEach(cell => {
                    if (cell.radius > 35 && entity.cells.length < 16) {
                        let halfArea = (Math.PI * cell.radius * cell.radius) / 2;
                        let newRadius = Math.sqrt(halfArea / Math.PI);
                        cell.radius = newRadius;
                        
                        let angle;
                        if (entity === player) {
                            let targetX = (mouse.x - width/2) / camera.zoom + camera.x;
                            let targetY = (mouse.y - height/2) / camera.zoom + camera.y;
                            angle = Math.atan2(targetY - cell.y, targetX - cell.x);
                        } else {
                            // Botlar hedef yönüne bölünür
                            angle = Math.atan2((cell.targetY || 0) - cell.y, (cell.targetX || 0) - cell.x);
                        }
                        
                        newCells.push({
                            x: cell.x, y: cell.y, radius: newRadius,
                            vx: Math.cos(angle) * 35, vy: Math.sin(angle) * 35
                        });
                    }
                });
                entity.cells = entity.cells.concat(newCells);
            }
    
            // --- YEM FIRLATMA (W) MANTIĞI ---
            function ejectMass(entity) {
                entity.cells.forEach(cell => {
                    if (cell.radius > 30) {
                        cell.radius -= 2.5; 
                        
                        let angle;
                        if(entity === player) {
                            let targetX = (mouse.x - width/2) / camera.zoom + camera.x;
                            let targetY = (mouse.y - height/2) / camera.zoom + camera.y;
                            angle = Math.atan2(targetY - cell.y, targetX - cell.x);
                        } else {
                            angle = Math.random() * Math.PI * 2; // Botlar etrafa rastgele yem atar
                        }
                        
                        ejectedMasses.push({
                            x: cell.x + Math.cos(angle) * cell.radius, 
                            y: cell.y + Math.sin(angle) * cell.radius,
                            radius: 12, color: entity.color,
                            vx: Math.cos(angle) * 18, vy: Math.sin(angle) * 18
                        });
                    }
                });
            }
    
            // Virüs Patlama Mantığı
            function popCell(entity, cellIndex) {
                let cell = entity.cells[cellIndex];
                let maxPieces = 10;
                let piecesToCreate = Math.min(maxPieces, 16 - entity.cells.length);
                
                if (piecesToCreate <= 0) return;
    
                let areaPerPiece = (Math.PI * cell.radius * cell.radius) / (piecesToCreate + 1);
                let newRadius = Math.sqrt(areaPerPiece / Math.PI);
                cell.radius = newRadius; 
                
                for(let i=0; i<piecesToCreate; i++) {
                    let angle = Math.random() * Math.PI * 2;
                    entity.cells.push({
                        x: cell.x, y: cell.y, radius: newRadius,
                        vx: Math.cos(angle) * 25, vy: Math.sin(angle) * 25
                    });
                }
            }
    
            function getTotalMass(entity) {
                if(!entity || !entity.cells) return 0;
                return entity.cells.reduce((sum, cell) => sum + (cell.radius * cell.radius), 0);
            }
    
            function update() {
                if (isGameOver) return;
    
                // Fırlatılan yem hareketi
                ejectedMasses.forEach(e => {
                    e.x += e.vx; e.y += e.vy;
                    e.vx *= 0.9; e.vy *= 0.9;
                    e.x = Math.max(e.radius, Math.min(WORLD_SIZE - e.radius, e.x));
                    e.y = Math.max(e.radius, Math.min(WORLD_SIZE - e.radius, e.y));
                });
    
                let allEntities = [player, ...bots];
    
                allEntities.forEach(entity => {
                    // Decay (Zamanla Kütle Kaybı)
                    entity.cells.forEach(cell => {
                        if (cell.radius > 40) cell.radius -= cell.radius * 0.0003;
                    });
    
                    entity.cells.forEach(cell => {
                        cell.x += cell.vx; cell.y += cell.vy;
                        cell.vx *= 0.85; cell.vy *= 0.85;
    
                        let speed = Math.max(1.5, 8 - Math.log(cell.radius));
                        
                        if (entity === player) {
                            // Sprint (Depar) Özelliği - Sadece oyuncu için
                            if (isSprinting && cell.radius > 25) {
                                speed *= 1.6;
                                cell.radius -= 0.08; // Hızlı koşarken kütle kaybeder
                            }
    
                            let targetX = (mouse.x - width/2) / camera.zoom + camera.x;
                            let targetY = (mouse.y - height/2) / camera.zoom + camera.y;
                            let angle = Math.atan2(targetY - cell.y, targetX - cell.x);
                            if(getDist(targetX, targetY, cell.x, cell.y) > 10) {
                                cell.x += Math.cos(angle) * speed;
                                cell.y += Math.sin(angle) * speed;
                            }
                        } else {
                            // Gelişmiş Bot Hareketi ve Yapay Zeka Özellikleri
                            if(!cell.targetX || Math.random() < 0.01) {
                                cell.targetX = rand(0, WORLD_SIZE); cell.targetY = rand(0, WORLD_SIZE);
                            }
                            let angle = Math.atan2(cell.targetY - cell.y, cell.targetX - cell.x);
                            cell.x += Math.cos(angle) * speed;
                            cell.y += Math.sin(angle) * speed;
    
                            // Bot Yapay Zeka: Büyükse rastgele bölünebilir veya yem atabilir
                            if (cell.radius > 70 && Math.random() < 0.001) splitCells(entity);
                            if (cell.radius > 50 && Math.random() < 0.003) ejectMass(entity);
                        }
    
                        cell.x = Math.max(cell.radius, Math.min(WORLD_SIZE - cell.radius, cell.x));
                        cell.y = Math.max(cell.radius, Math.min(WORLD_SIZE - cell.radius, cell.y));
                    });
    
                    // Hücrelerin birbirini itmesi
                    for(let i=0; i<entity.cells.length; i++) {
                        for(let j=i+1; j<entity.cells.length; j++) {
                            let c1 = entity.cells[i], c2 = entity.cells[j];
                            let dist = getDist(c1.x, c1.y, c2.x, c2.y);
                            let minDist = c1.radius + c2.radius;
                            if(dist < minDist && dist > 0) {
                                let overlap = minDist - dist;
                                let dx = (c1.x - c2.x) / dist;
                                let dy = (c1.y - c2.y) / dist;
                                c1.x += dx * overlap * 0.1; c1.y += dy * overlap * 0.1;
                                c2.x -= dx * overlap * 0.1; c2.y -= dy * overlap * 0.1;
                            }
                        }
                    }
    
                    // Yem Yeme
                    entity.cells.forEach(cell => {
                        for (let i = foods.length - 1; i >= 0; i--) {
                            if (getDist(cell.x, cell.y, foods[i].x, foods[i].y) < cell.radius) {
                                cell.radius = Math.sqrt(cell.radius*cell.radius + foods[i].radius*foods[i].radius);
                                foods.splice(i, 1);
                                foods.push({ x: rand(0, WORLD_SIZE), y: rand(0, WORLD_SIZE), radius: rand(4, 8), color: getRandomColor() });
                            }
                        }
                        for (let i = ejectedMasses.length - 1; i >= 0; i--) {
                            if (getDist(cell.x, cell.y, ejectedMasses[i].x, ejectedMasses[i].y) < cell.radius && cell.radius > ejectedMasses[i].radius * 1.1) {
                                if(ejectedMasses[i].color === entity.color) continue; // Kendi attığını yiyemesin (Hızlı birleşmeyi engeller)
                                cell.radius = Math.sqrt(cell.radius*cell.radius + ejectedMasses[i].radius*ejectedMasses[i].radius);
                                ejectedMasses.splice(i, 1);
                            }
                        }
                    });
                });
    
                // Virüs Patlama Kontrolü
                allEntities.forEach(entity => {
                    for (let c = entity.cells.length - 1; c >= 0; c--) {
                        for (let v = viruses.length - 1; v >= 0; v--) {
                            if (getDist(entity.cells[c].x, entity.cells[c].y, viruses[v].x, viruses[v].y) < entity.cells[c].radius) {
                                if (entity.cells[c].radius > viruses[v].radius * 1.15) {
                                    entity.cells[c].radius = Math.sqrt(entity.cells[c].radius**2 + viruses[v].radius**2);
                                    viruses.splice(v, 1);
                                    viruses.push({ x: rand(0, WORLD_SIZE), y: rand(0, WORLD_SIZE), radius: rand(45, 60) });
                                    popCell(entity, c);
                                }
                            }
                        }
                    }
                });
    
                // Varlıkların Birbirini Yemesi
                let allCells = [];
                allEntities.forEach(e => e.cells.forEach(c => allCells.push({ entity: e, cell: c })));
                allCells.sort((a, b) => b.cell.radius - a.cell.radius);
    
                for(let i=0; i<allCells.length; i++) {
                    let eater = allCells[i];
                    if(eater.cell.radius === 0) continue;
    
                    for(let j=i+1; j<allCells.length; j++) {
                        let prey = allCells[j];
                        if(prey.cell.radius === 0 || eater.entity === prey.entity) continue;
    
                        let dist = getDist(eater.cell.x, eater.cell.y, prey.cell.x, prey.cell.y);
                        if(dist < eater.cell.radius && eater.cell.radius > prey.cell.radius * 1.1) {
                            eater.cell.radius = Math.sqrt(eater.cell.radius**2 + prey.cell.radius**2);
                            prey.cell.radius = 0; 
                        }
                    }
                }
    
                allEntities.forEach(e => {
                    e.cells = e.cells.filter(c => c.radius > 0);
                });
    
                bots = bots.filter(b => b.cells.length > 0);
                while(bots.length < 18) spawnBot();
    
                if (player.cells.length === 0) {
                    isGameOver = true;
                    document.getElementById("gameOver").style.display = "block";
                } else {
                    // Kamera Zoom & Takip (Manuel Zoom ile birleştirildi)
                    let centerX = player.cells.reduce((sum, c) => sum + c.x, 0) / player.cells.length;
                    let centerY = player.cells.reduce((sum, c) => sum + c.y, 0) / player.cells.length;
                    let totalPlayerMass = Math.sqrt(getTotalMass(player));
                    
                    camera.x += (centerX - camera.x) * 0.1;
                    camera.y += (centerY - camera.y) * 0.1;
                    
                    // Oyuncu büyüdükçe kamera uzaklaşır, ancak fare tekerleğiyle bunu esnetebiliriz
                    let targetAutoZoom = Math.max(0.3, 1.5 - Math.log10(totalPlayerMass / 20));
                    let finalZoom = targetAutoZoom * manualZoom;
                    camera.zoom += (finalZoom - camera.zoom) * 0.1;
    
                    document.getElementById("score").innerText = Math.round(totalPlayerMass);
                    updateLeaderboard(allEntities);
                    drawMinimap(allEntities);
                }
            }
    
            function updateLeaderboard(entities) {
                let sorted = entities.map(e => ({ name: e.name, mass: getTotalMass(e), isPlayer: e === player }))
                                     .sort((a, b) => b.mass - a.mass)
                                     .slice(0, 10);
                
                let html = "";
                sorted.forEach((e, idx) => {
                    let cl = e.isPlayer ? "class='highlight'" : "";
                    html += `<li ${cl}>${e.name}</li>`;
                });
                document.getElementById("lb-list").innerHTML = html;
            }
    
            function drawMinimap(entities) {
                miniCtx.clearRect(0, 0, 150, 150);
                let scale = 150 / WORLD_SIZE;
    
                miniCtx.fillStyle = 'rgba(46, 204, 113, 0.4)';
                viruses.forEach(v => {
                    miniCtx.beginPath();
                    miniCtx.arc(v.x * scale, v.y * scale, 2, 0, Math.PI*2);
                    miniCtx.fill();
                });
    
                if(player.cells.length > 0) {
                    let px = player.cells[0].x * scale;
                    let py = player.cells[0].y * scale;
                    miniCtx.fillStyle = '#e74c3c';
                    miniCtx.beginPath();
                    miniCtx.arc(px, py, 5, 0, Math.PI*2);
                    miniCtx.fill();
                }
            }
    
            function draw() {
                ctx.fillStyle = "#111";
                ctx.fillRect(0, 0, width, height);
    
                ctx.save();
                ctx.translate(width/2, height/2);
                ctx.scale(camera.zoom, camera.zoom);
                ctx.translate(-camera.x, -camera.y);
    
                // Gelişmiş Arka Plan (Grid)
                ctx.strokeStyle = 'rgba(255, 255, 255, 0.05)';
                ctx.lineWidth = 2;
                let step = 80;
                ctx.beginPath();
                for(let x=0; x<=WORLD_SIZE; x+=step) { ctx.moveTo(x, 0); ctx.lineTo(x, WORLD_SIZE); }
                for(let y=0; y<=WORLD_SIZE; y+=step) { ctx.moveTo(0, y); ctx.lineTo(WORLD_SIZE, y); }
                ctx.stroke();
    
                // Sınırlar
                ctx.strokeStyle = '#e74c3c'; ctx.lineWidth = 15;
                ctx.strokeRect(0, 0, WORLD_SIZE, WORLD_SIZE);
    
                // Yemler
                foods.forEach(f => {
                    ctx.fillStyle = f.color;
                    ctx.beginPath(); ctx.arc(f.x, f.y, f.radius, 0, Math.PI*2); ctx.fill();
                });
    
                // Fırlatılan Yemler
                ejectedMasses.forEach(e => {
                    ctx.fillStyle = e.color;
                    ctx.beginPath(); ctx.arc(e.x, e.y, e.radius, 0, Math.PI*2); ctx.fill();
                    ctx.lineWidth = 2; ctx.strokeStyle = "rgba(0,0,0,0.5)"; ctx.stroke();
                });
    
                // Virüsler
                ctx.fillStyle = 'rgba(46, 204, 113, 0.8)';
                ctx.strokeStyle = '#27ae60';
                ctx.lineWidth = 5;
                viruses.forEach(v => {
                    ctx.beginPath();
                    let spikes = 22;
                    for(let i=0; i<spikes*2; i++) {
                        let r = i % 2 === 0 ? v.radius : v.radius - 6;
                        let angle = (i / (spikes*2)) * Math.PI * 2;
                        ctx.lineTo(v.x + Math.cos(angle)*r, v.y + Math.sin(angle)*r);
                    }
                    ctx.closePath();
                    ctx.fill(); ctx.stroke();
                });
    
                // Oyuncu ve Botlar
                let renderList = [];
                [player, ...bots].forEach(e => e.cells.forEach(c => renderList.push({ entity: e, cell: c })));
                renderList.sort((a, b) => a.cell.radius - b.cell.radius); 
    
                renderList.forEach(item => {
                    let {entity, cell} = item;
                    ctx.beginPath();
                    ctx.arc(cell.x, cell.y, cell.radius, 0, Math.PI*2);
                    ctx.fillStyle = entity.color;
                    
                    if(entity === player) {
                        ctx.shadowBlur = 15;
                        ctx.shadowColor = entity.color;
                    }
                    
                    ctx.fill();
                    ctx.shadowBlur = 0;
                    ctx.lineWidth = 4; ctx.strokeStyle = "rgba(0,0,0,0.4)"; ctx.stroke();
                    
                    if (cell.radius > 20) {
                        ctx.fillStyle = 'white';
                        ctx.font = `bold ${Math.max(12, cell.radius/3.5)}px 'Segoe UI'`;
                        ctx.textAlign = 'center'; ctx.textBaseline = 'middle';
                        
                        // İsim
                        ctx.fillText(entity.name, cell.x, cell.y - (cell.radius * 0.15));
                        
                        // Hücrenin kütlesini de hemen altına yazalım
                        ctx.font = `${Math.max(10, cell.radius/5)}px 'Segoe UI'`;
                        ctx.fillText(Math.round(cell.radius), cell.x, cell.y + (cell.radius * 0.25));
                    }
                });
    
                ctx.restore();
            }
    
            function gameLoop() {
                update();
                draw();
                requestAnimationFrame(gameLoop);
            }
    
            function restartGame() { init(); }
    
            init();
            gameLoop();
        </script>
    </body>
    </html>
    Biraz daha gelişmiş hali buyrun
  • 24-06-2026, 15:28:19
    #9
    ProSunucum adlı üyeden alıntı: mesajı görüntüle
    <?php
    // Gelişmiş Mini Agar.io - Tek Dosya (Hileler, Sprint, Zoom, Zeki Botlar)
    ?>
    <!DOCTYPE html>
    <html lang="tr">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>VIP Agar.io (Hileli & Gelişmiş)</title>
        <style>
            body { margin: 0; overflow: hidden; background-color: #1a1a1a; font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; user-select: none; }
            canvas { display: block; }
            #uiLayer { position: absolute; top: 0; left: 0; width: 100%; height: 100%; pointer-events: none; }
            
            /* Skor ve Liderlik Tablosu */
            #scoreBoard { position: absolute; top: 15px; left: 15px; color: #fff; font-size: 20px; background: rgba(0, 0, 0, 0.6); padding: 10px 20px; border-radius: 8px; font-weight: bold; border-left: 4px solid #2ecc71; }
            #leaderboard { position: absolute; top: 15px; right: 15px; width: 200px; color: #fff; background: rgba(0, 0, 0, 0.6); padding: 15px; border-radius: 8px; border-top: 4px solid #f1c40f; }
            #leaderboard h3 { margin: 0 0 10px 0; text-align: center; font-size: 18px; color: #f1c40f; border-bottom: 1px solid rgba(255,255,255,0.2); padding-bottom: 5px; }
            #leaderboard ol { margin: 0; padding-left: 25px; font-size: 14px; }
            #leaderboard li { margin-bottom: 5px; }
            .highlight { color: #2ecc71; font-weight: bold; text-shadow: 0 0 5px #2ecc71; }
            
            /* Minimap */
            #minimap-container { position: absolute; bottom: 15px; right: 15px; width: 150px; height: 150px; background: rgba(0,0,0,0.7); border: 2px solid #555; border-radius: 8px; overflow: hidden; }
            #minimap { width: 100%; height: 100%; }
            
            /* Oyun Sonu Ekranı */
            #gameOver { display: none; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); color: white; text-align: center; background: rgba(0, 0, 0, 0.95); padding: 40px; border-radius: 15px; pointer-events: auto; box-shadow: 0 0 30px rgba(231, 76, 60, 0.5); }
            button { padding: 12px 25px; font-size: 18px; cursor: pointer; border: none; border-radius: 5px; background-color: #2ecc71; color: white; font-weight: bold; transition: 0.2s; }
            button:hover { background-color: #27ae60; transform: scale(1.05); }
            
            /* Kontroller & Hileler Bilgisi */
            #controls { position: absolute; bottom: 15px; left: 15px; color: rgba(255,255,255,0.8); font-size: 13px; background: rgba(0,0,0,0.6); padding: 15px; border-radius: 8px; border-left: 4px solid #3498db; }
            #controls span { color: #e74c3c; font-weight: bold; }
        </style>
    </head>
    <body>
    
        <div id="uiLayer">
            <div id="scoreBoard">Kütle: <span id="score" style="color:#2ecc71;">20</span></div>
            <div id="leaderboard">
                <h3>Liderlik Tablosu</h3>
                <ol id="lb-list"></ol>
            </div>
            <div id="minimap-container">
                <canvas id="minimap"></canvas>
            </div>
            <div id="controls">
                <b>🔥 NORMAL KONTROLLER</b><br>
                <b>Fare:</b> Yönlendirme<br>
                <b>Fare Tekerleği:</b> Kamera Zoom<br>
                <b>Boşluk:</b> Bölünme<br>
                <b>W:</b> Yem Fırlatma<br>
                <b>Shift (Basılı Tut):</b> Depar At (Kütle Yakar)<br>
                <hr style="border:1px solid rgba(255,255,255,0.1); margin: 8px 0;">
                <b>👑 SANA ÖZEL HİLELER</b><br>
                <b>1:</b> +50 Kütle Ekle<br>
                <b>2:</b> Fareye Işınlan<br>
                <b>3:</b> Tüm Virüsleri Yut<br>
                <b>4:</b> Botları Dondur & Küçült
            </div>
            <div id="gameOver">
                <h1 style="color:#e74c3c; margin-top:0;">Oyun Bitti!</h1>
                <p>Maalesef yutuldun patron.</p>
                <button onclick="restartGame()">Yeniden Başla</button>
            </div>
        </div>
    
        <canvas id="gameCanvas"></canvas>
    
        <script>
            const canvas = document.getElementById("gameCanvas");
            const ctx = canvas.getContext("2d");
            const minimapCanvas = document.getElementById("minimap");
            const miniCtx = minimapCanvas.getContext("2d");
    
            let width = canvas.width = window.innerWidth;
            let height = canvas.height = window.innerHeight;
            minimapCanvas.width = 150;
            minimapCanvas.height = 150;
    
            const WORLD_SIZE = 4000;
            const colors = ['#f1c40f', '#e67e22', '#e74c3c', '#3498db', '#9b59b6', '#1abc9c', '#ff9ff3', '#00d2d3'];
            const botNames = ['Alfa', 'Beta', 'Gama', 'Delta', 'Pika', 'Zeta', 'Titan', 'Ghost', 'Shadow', 'Ninja', 'Cyber', 'Neon'];
    
            let camera = { x: WORLD_SIZE/2, y: WORLD_SIZE/2, zoom: 1 };
            let manualZoom = 1; // Fare tekerleği zoomu için eklendi
            let mouse = { x: width/2, y: height/2 };
            let isSprinting = false; // Shift tuşu deparı için eklendi
    
            let foods = [];
            let viruses = [];
            let ejectedMasses = [];
            let bots = [];
            let player = { id: 'player', name: 'Sen', color: '#2ecc71', cells: [] };
            let isGameOver = false;
    
            // Rastgele util
            function rand(min, max) { return Math.random() * (max - min) + min; }
            function getRandomColor() { return colors[Math.floor(Math.random() * colors.length)]; }
            function getDist(x1, y1, x2, y2) { return Math.hypot(x2 - x1, y2 - y1); }
    
            window.addEventListener('mousemove', (e) => { mouse.x = e.clientX; mouse.y = e.clientY; });
            window.addEventListener('resize', () => { width = canvas.width = window.innerWidth; height = canvas.height = window.innerHeight; });
    
            // Fare Tekerleği ile Zoom Mekaniği
            window.addEventListener('wheel', (e) => {
                manualZoom += e.deltaY * -0.001;
                manualZoom = Math.min(Math.max(0.3, manualZoom), 2.5); // Zoom sınırları
            });
    
            // --- KLAVYE KONTROLLERİ VE HİLELER ---
            window.addEventListener('keydown', (e) => {
                if (isGameOver) return;
                
                // Sprint (Depar)
                if (e.key === 'Shift') isSprinting = true;
    
                // Normal Yetenekler
                if (e.code === 'Space') splitCells(player);
                if (e.key.toLowerCase() === 'w') ejectMass(player);
    
                // 👑 HİLE 1: Anında Büyüme
                if (e.key === '1') {
                    player.cells.forEach(cell => cell.radius += 50);
                }
                
                // 👑 HİLE 2: Işınlanma
                if (e.key === '2') {
                    let targetX = (mouse.x - width/2) / camera.zoom + camera.x;
                    let targetY = (mouse.y - height/2) / camera.zoom + camera.y;
                    player.cells.forEach(cell => {
                        cell.x = Math.max(cell.radius, Math.min(WORLD_SIZE - cell.radius, targetX));
                        cell.y = Math.max(cell.radius, Math.min(WORLD_SIZE - cell.radius, targetY));
                    });
                }
    
                // 👑 HİLE 3: Virüsleri Yut
                if (e.key === '3') {
                    if (player.cells.length > 0 && viruses.length > 0) {
                        player.cells[0].radius += viruses.length * 4;
                        viruses = []; // Haritayı temizle
                        for(let i=0; i<25; i++) viruses.push({ x: rand(0, WORLD_SIZE), y: rand(0, WORLD_SIZE), radius: rand(45, 60) }); // Yenilerini spawnla
                    }
                }
    
                // 👑 HİLE 4: Botları Dondur ve Küçült
                if (e.key === '4') {
                    bots.forEach(bot => {
                        bot.cells.forEach(cell => {
                            cell.radius = 12;
                            cell.vx = 0;
                            cell.vy = 0;
                            cell.targetX = cell.x; // Hedefi sıfırla ki durup kalsınlar
                            cell.targetY = cell.y;
                        });
                    });
                }
            });
    
            window.addEventListener('keyup', (e) => {
                if (e.key === 'Shift') isSprinting = false;
            });
    
            function init() {
                isGameOver = false;
                document.getElementById("gameOver").style.display = "none";
                manualZoom = 1;
                
                player.cells = [{ x: WORLD_SIZE/2, y: WORLD_SIZE/2, radius: 25, vx: 0, vy: 0 }];
                
                foods = []; viruses = []; ejectedMasses = []; bots = [];
                
                for(let i=0; i<1200; i++) foods.push({ x: rand(0, WORLD_SIZE), y: rand(0, WORLD_SIZE), radius: rand(4, 8), color: getRandomColor() });
                for(let i=0; i<25; i++) viruses.push({ x: rand(0, WORLD_SIZE), y: rand(0, WORLD_SIZE), radius: rand(45, 60) });
                for(let i=0; i<18; i++) spawnBot();
            }
    
            function spawnBot() {
                bots.push({
                    id: 'bot_' + Math.random(),
                    name: botNames[Math.floor(Math.random() * botNames.length)],
                    color: getRandomColor(),
                    cells: [{ x: rand(0, WORLD_SIZE), y: rand(0, WORLD_SIZE), radius: rand(20, 70), vx: 0, vy: 0 }]
                });
            }
    
            // --- BÖLÜNME (SPACE) MANTIĞI ---
            function splitCells(entity) {
                let newCells = [];
                entity.cells.forEach(cell => {
                    if (cell.radius > 35 && entity.cells.length < 16) {
                        let halfArea = (Math.PI * cell.radius * cell.radius) / 2;
                        let newRadius = Math.sqrt(halfArea / Math.PI);
                        cell.radius = newRadius;
                        
                        let angle;
                        if (entity === player) {
                            let targetX = (mouse.x - width/2) / camera.zoom + camera.x;
                            let targetY = (mouse.y - height/2) / camera.zoom + camera.y;
                            angle = Math.atan2(targetY - cell.y, targetX - cell.x);
                        } else {
                            // Botlar hedef yönüne bölünür
                            angle = Math.atan2((cell.targetY || 0) - cell.y, (cell.targetX || 0) - cell.x);
                        }
                        
                        newCells.push({
                            x: cell.x, y: cell.y, radius: newRadius,
                            vx: Math.cos(angle) * 35, vy: Math.sin(angle) * 35
                        });
                    }
                });
                entity.cells = entity.cells.concat(newCells);
            }
    
            // --- YEM FIRLATMA (W) MANTIĞI ---
            function ejectMass(entity) {
                entity.cells.forEach(cell => {
                    if (cell.radius > 30) {
                        cell.radius -= 2.5;
                        
                        let angle;
                        if(entity === player) {
                            let targetX = (mouse.x - width/2) / camera.zoom + camera.x;
                            let targetY = (mouse.y - height/2) / camera.zoom + camera.y;
                            angle = Math.atan2(targetY - cell.y, targetX - cell.x);
                        } else {
                            angle = Math.random() * Math.PI * 2; // Botlar etrafa rastgele yem atar
                        }
                        
                        ejectedMasses.push({
                            x: cell.x + Math.cos(angle) * cell.radius,
                            y: cell.y + Math.sin(angle) * cell.radius,
                            radius: 12, color: entity.color,
                            vx: Math.cos(angle) * 18, vy: Math.sin(angle) * 18
                        });
                    }
                });
            }
    
            // Virüs Patlama Mantığı
            function popCell(entity, cellIndex) {
                let cell = entity.cells[cellIndex];
                let maxPieces = 10;
                let piecesToCreate = Math.min(maxPieces, 16 - entity.cells.length);
                
                if (piecesToCreate <= 0) return;
    
                let areaPerPiece = (Math.PI * cell.radius * cell.radius) / (piecesToCreate + 1);
                let newRadius = Math.sqrt(areaPerPiece / Math.PI);
                cell.radius = newRadius;
                
                for(let i=0; i<piecesToCreate; i++) {
                    let angle = Math.random() * Math.PI * 2;
                    entity.cells.push({
                        x: cell.x, y: cell.y, radius: newRadius,
                        vx: Math.cos(angle) * 25, vy: Math.sin(angle) * 25
                    });
                }
            }
    
            function getTotalMass(entity) {
                if(!entity || !entity.cells) return 0;
                return entity.cells.reduce((sum, cell) => sum + (cell.radius * cell.radius), 0);
            }
    
            function update() {
                if (isGameOver) return;
    
                // Fırlatılan yem hareketi
                ejectedMasses.forEach(e => {
                    e.x += e.vx; e.y += e.vy;
                    e.vx *= 0.9; e.vy *= 0.9;
                    e.x = Math.max(e.radius, Math.min(WORLD_SIZE - e.radius, e.x));
                    e.y = Math.max(e.radius, Math.min(WORLD_SIZE - e.radius, e.y));
                });
    
                let allEntities = [player, ...bots];
    
                allEntities.forEach(entity => {
                    // Decay (Zamanla Kütle Kaybı)
                    entity.cells.forEach(cell => {
                        if (cell.radius > 40) cell.radius -= cell.radius * 0.0003;
                    });
    
                    entity.cells.forEach(cell => {
                        cell.x += cell.vx; cell.y += cell.vy;
                        cell.vx *= 0.85; cell.vy *= 0.85;
    
                        let speed = Math.max(1.5, 8 - Math.log(cell.radius));
                        
                        if (entity === player) {
                            // Sprint (Depar) Özelliği - Sadece oyuncu için
                            if (isSprinting && cell.radius > 25) {
                                speed *= 1.6;
                                cell.radius -= 0.08; // Hızlı koşarken kütle kaybeder
                            }
    
                            let targetX = (mouse.x - width/2) / camera.zoom + camera.x;
                            let targetY = (mouse.y - height/2) / camera.zoom + camera.y;
                            let angle = Math.atan2(targetY - cell.y, targetX - cell.x);
                            if(getDist(targetX, targetY, cell.x, cell.y) > 10) {
                                cell.x += Math.cos(angle) * speed;
                                cell.y += Math.sin(angle) * speed;
                            }
                        } else {
                            // Gelişmiş Bot Hareketi ve Yapay Zeka Özellikleri
                            if(!cell.targetX || Math.random() < 0.01) {
                                cell.targetX = rand(0, WORLD_SIZE); cell.targetY = rand(0, WORLD_SIZE);
                            }
                            let angle = Math.atan2(cell.targetY - cell.y, cell.targetX - cell.x);
                            cell.x += Math.cos(angle) * speed;
                            cell.y += Math.sin(angle) * speed;
    
                            // Bot Yapay Zeka: Büyükse rastgele bölünebilir veya yem atabilir
                            if (cell.radius > 70 && Math.random() < 0.001) splitCells(entity);
                            if (cell.radius > 50 && Math.random() < 0.003) ejectMass(entity);
                        }
    
                        cell.x = Math.max(cell.radius, Math.min(WORLD_SIZE - cell.radius, cell.x));
                        cell.y = Math.max(cell.radius, Math.min(WORLD_SIZE - cell.radius, cell.y));
                    });
    
                    // Hücrelerin birbirini itmesi
                    for(let i=0; i<entity.cells.length; i++) {
                        for(let j=i+1; j<entity.cells.length; j++) {
                            let c1 = entity.cells[i], c2 = entity.cells[j];
                            let dist = getDist(c1.x, c1.y, c2.x, c2.y);
                            let minDist = c1.radius + c2.radius;
                            if(dist < minDist && dist > 0) {
                                let overlap = minDist - dist;
                                let dx = (c1.x - c2.x) / dist;
                                let dy = (c1.y - c2.y) / dist;
                                c1.x += dx * overlap * 0.1; c1.y += dy * overlap * 0.1;
                                c2.x -= dx * overlap * 0.1; c2.y -= dy * overlap * 0.1;
                            }
                        }
                    }
    
                    // Yem Yeme
                    entity.cells.forEach(cell => {
                        for (let i = foods.length - 1; i >= 0; i--) {
                            if (getDist(cell.x, cell.y, foods[i].x, foods[i].y) < cell.radius) {
                                cell.radius = Math.sqrt(cell.radius*cell.radius + foods[i].radius*foods[i].radius);
                                foods.splice(i, 1);
                                foods.push({ x: rand(0, WORLD_SIZE), y: rand(0, WORLD_SIZE), radius: rand(4, 8), color: getRandomColor() });
                            }
                        }
                        for (let i = ejectedMasses.length - 1; i >= 0; i--) {
                            if (getDist(cell.x, cell.y, ejectedMasses[i].x, ejectedMasses[i].y) < cell.radius && cell.radius > ejectedMasses[i].radius * 1.1) {
                                if(ejectedMasses[i].color === entity.color) continue; // Kendi attığını yiyemesin (Hızlı birleşmeyi engeller)
                                cell.radius = Math.sqrt(cell.radius*cell.radius + ejectedMasses[i].radius*ejectedMasses[i].radius);
                                ejectedMasses.splice(i, 1);
                            }
                        }
                    });
                });
    
                // Virüs Patlama Kontrolü
                allEntities.forEach(entity => {
                    for (let c = entity.cells.length - 1; c >= 0; c--) {
                        for (let v = viruses.length - 1; v >= 0; v--) {
                            if (getDist(entity.cells[c].x, entity.cells[c].y, viruses[v].x, viruses[v].y) < entity.cells[c].radius) {
                                if (entity.cells[c].radius > viruses[v].radius * 1.15) {
                                    entity.cells[c].radius = Math.sqrt(entity.cells[c].radius**2 + viruses[v].radius**2);
                                    viruses.splice(v, 1);
                                    viruses.push({ x: rand(0, WORLD_SIZE), y: rand(0, WORLD_SIZE), radius: rand(45, 60) });
                                    popCell(entity, c);
                                }
                            }
                        }
                    }
                });
    
                // Varlıkların Birbirini Yemesi
                let allCells = [];
                allEntities.forEach(e => e.cells.forEach(c => allCells.push({ entity: e, cell: c })));
                allCells.sort((a, b) => b.cell.radius - a.cell.radius);
    
                for(let i=0; i<allCells.length; i++) {
                    let eater = allCells[i];
                    if(eater.cell.radius === 0) continue;
    
                    for(let j=i+1; j<allCells.length; j++) {
                        let prey = allCells[j];
                        if(prey.cell.radius === 0 || eater.entity === prey.entity) continue;
    
                        let dist = getDist(eater.cell.x, eater.cell.y, prey.cell.x, prey.cell.y);
                        if(dist < eater.cell.radius && eater.cell.radius > prey.cell.radius * 1.1) {
                            eater.cell.radius = Math.sqrt(eater.cell.radius**2 + prey.cell.radius**2);
                            prey.cell.radius = 0;
                        }
                    }
                }
    
                allEntities.forEach(e => {
                    e.cells = e.cells.filter(c => c.radius > 0);
                });
    
                bots = bots.filter(b => b.cells.length > 0);
                while(bots.length < 18) spawnBot();
    
                if (player.cells.length === 0) {
                    isGameOver = true;
                    document.getElementById("gameOver").style.display = "block";
                } else {
                    // Kamera Zoom & Takip (Manuel Zoom ile birleştirildi)
                    let centerX = player.cells.reduce((sum, c) => sum + c.x, 0) / player.cells.length;
                    let centerY = player.cells.reduce((sum, c) => sum + c.y, 0) / player.cells.length;
                    let totalPlayerMass = Math.sqrt(getTotalMass(player));
                    
                    camera.x += (centerX - camera.x) * 0.1;
                    camera.y += (centerY - camera.y) * 0.1;
                    
                    // Oyuncu büyüdükçe kamera uzaklaşır, ancak fare tekerleğiyle bunu esnetebiliriz
                    let targetAutoZoom = Math.max(0.3, 1.5 - Math.log10(totalPlayerMass / 20));
                    let finalZoom = targetAutoZoom * manualZoom;
                    camera.zoom += (finalZoom - camera.zoom) * 0.1;
    
                    document.getElementById("score").innerText = Math.round(totalPlayerMass);
                    updateLeaderboard(allEntities);
                    drawMinimap(allEntities);
                }
            }
    
            function updateLeaderboard(entities) {
                let sorted = entities.map(e => ({ name: e.name, mass: getTotalMass(e), isPlayer: e === player }))
                                     .sort((a, b) => b.mass - a.mass)
                                     .slice(0, 10);
                
                let html = "";
                sorted.forEach((e, idx) => {
                    let cl = e.isPlayer ? "class='highlight'" : "";
                    html += `<li ${cl}>${e.name}</li>`;
                });
                document.getElementById("lb-list").innerHTML = html;
            }
    
            function drawMinimap(entities) {
                miniCtx.clearRect(0, 0, 150, 150);
                let scale = 150 / WORLD_SIZE;
    
                miniCtx.fillStyle = 'rgba(46, 204, 113, 0.4)';
                viruses.forEach(v => {
                    miniCtx.beginPath();
                    miniCtx.arc(v.x * scale, v.y * scale, 2, 0, Math.PI*2);
                    miniCtx.fill();
                });
    
                if(player.cells.length > 0) {
                    let px = player.cells[0].x * scale;
                    let py = player.cells[0].y * scale;
                    miniCtx.fillStyle = '#e74c3c';
                    miniCtx.beginPath();
                    miniCtx.arc(px, py, 5, 0, Math.PI*2);
                    miniCtx.fill();
                }
            }
    
            function draw() {
                ctx.fillStyle = "#111";
                ctx.fillRect(0, 0, width, height);
    
                ctx.save();
                ctx.translate(width/2, height/2);
                ctx.scale(camera.zoom, camera.zoom);
                ctx.translate(-camera.x, -camera.y);
    
                // Gelişmiş Arka Plan (Grid)
                ctx.strokeStyle = 'rgba(255, 255, 255, 0.05)';
                ctx.lineWidth = 2;
                let step = 80;
                ctx.beginPath();
                for(let x=0; x<=WORLD_SIZE; x+=step) { ctx.moveTo(x, 0); ctx.lineTo(x, WORLD_SIZE); }
                for(let y=0; y<=WORLD_SIZE; y+=step) { ctx.moveTo(0, y); ctx.lineTo(WORLD_SIZE, y); }
                ctx.stroke();
    
                // Sınırlar
                ctx.strokeStyle = '#e74c3c'; ctx.lineWidth = 15;
                ctx.strokeRect(0, 0, WORLD_SIZE, WORLD_SIZE);
    
                // Yemler
                foods.forEach(f => {
                    ctx.fillStyle = f.color;
                    ctx.beginPath(); ctx.arc(f.x, f.y, f.radius, 0, Math.PI*2); ctx.fill();
                });
    
                // Fırlatılan Yemler
                ejectedMasses.forEach(e => {
                    ctx.fillStyle = e.color;
                    ctx.beginPath(); ctx.arc(e.x, e.y, e.radius, 0, Math.PI*2); ctx.fill();
                    ctx.lineWidth = 2; ctx.strokeStyle = "rgba(0,0,0,0.5)"; ctx.stroke();
                });
    
                // Virüsler
                ctx.fillStyle = 'rgba(46, 204, 113, 0.8)';
                ctx.strokeStyle = '#27ae60';
                ctx.lineWidth = 5;
                viruses.forEach(v => {
                    ctx.beginPath();
                    let spikes = 22;
                    for(let i=0; i<spikes*2; i++) {
                        let r = i % 2 === 0 ? v.radius : v.radius - 6;
                        let angle = (i / (spikes*2)) * Math.PI * 2;
                        ctx.lineTo(v.x + Math.cos(angle)*r, v.y + Math.sin(angle)*r);
                    }
                    ctx.closePath();
                    ctx.fill(); ctx.stroke();
                });
    
                // Oyuncu ve Botlar
                let renderList = [];
                [player, ...bots].forEach(e => e.cells.forEach(c => renderList.push({ entity: e, cell: c })));
                renderList.sort((a, b) => a.cell.radius - b.cell.radius);
    
                renderList.forEach(item => {
                    let {entity, cell} = item;
                    ctx.beginPath();
                    ctx.arc(cell.x, cell.y, cell.radius, 0, Math.PI*2);
                    ctx.fillStyle = entity.color;
                    
                    if(entity === player) {
                        ctx.shadowBlur = 15;
                        ctx.shadowColor = entity.color;
                    }
                    
                    ctx.fill();
                    ctx.shadowBlur = 0;
                    ctx.lineWidth = 4; ctx.strokeStyle = "rgba(0,0,0,0.4)"; ctx.stroke();
                    
                    if (cell.radius > 20) {
                        ctx.fillStyle = 'white';
                        ctx.font = `bold ${Math.max(12, cell.radius/3.5)}px 'Segoe UI'`;
                        ctx.textAlign = 'center'; ctx.textBaseline = 'middle';
                        
                        // İsim
                        ctx.fillText(entity.name, cell.x, cell.y - (cell.radius * 0.15));
                        
                        // Hücrenin kütlesini de hemen altına yazalım
                        ctx.font = `${Math.max(10, cell.radius/5)}px 'Segoe UI'`;
                        ctx.fillText(Math.round(cell.radius), cell.x, cell.y + (cell.radius * 0.25));
                    }
                });
    
                ctx.restore();
            }
    
            function gameLoop() {
                update();
                draw();
                requestAnimationFrame(gameLoop);
            }
    
            function restartGame() { init(); }
    
            init();
            gameLoop();
        </script>
    </body>
    </html>
    Biraz daha gelişmiş hali buyrun
    geliştirip kullanın diye verdim zaten 1-2 saniyede çıkan birşey