User prompt
arkaplan anımasyonu olmamış
User prompt
arkaplan da patlayan havayı fişek animasyonu olsun partiküller çıksın her yerden
User prompt
hayvanların komple bütün bedenini çiz
User prompt
hayvanların şeklini tekrardan kodla yazılan hayvanın şekliyle birebir olsun
User prompt
şekiller sadece ekranın ortasında çıksın
User prompt
beyaz asseti kullanma sil onu
User prompt
assetler daha belirgin olsun ve hangi hayvan olduğu ekrana bakılınca anlaşılsın
User prompt
Dog, Cat, Horse, Elephant, Lion, Tiger, Bear, Whale, Dolphin, Monkey, Bat, Deer, Wolf, Fox, Rabbit, Kangaroo, Human.Eagle, Owl, Sparrow, Penguin, Ostrich, Parrot, Pigeon, Hummingbird, Duck, Swan, Crow, Robin, Albatross, Flamingo.Snake, Lizard, Crocodile, Alligator, Turtle, Tortoise, Chameleon, Gecko, Komodo Dragon, Cobra, Python.Frog, Toad, Salamander, Newt, Caecilian, Axolotl.Shark, Salmon, Tuna, Clownfish, Goldfish, Eel, Seahorse, Trout, Cod, Barracuda, Stingray, Manta Ray.Ant, Bee, Butterfly, Moth, Beetle, Fly, Mosquito, Grasshopper, Dragonfly, Ladybug, Cockroach.Spider, Scorpion, Tick, Mite, Tarantula, Black Widow.Crab, Lobster, Shrimp, Prawn, Crayfish, Barnacle, Krill.Snail, Slug, Octopus, Squid, Clam, Oyster, Mussel, Scallop, Nautilus.Earthworm, Leech, Tapeworm, Roundworm. Starfish (Sea Star), Sea Urchin, Sea Cucumber, Sand Dollar.Jellyfish, Coral, Sea Anemone, Hydra.Bath Sponge, Sea Sponge. lütfen bu hayvanlarıda ekle
User prompt
çıkan hayvanın ne olduğu üstte yazmalı ingilizce
User prompt
daha büyük şekiller
User prompt
ekrana çıklayınca assetler rastgele hayvan şekilleri oluştursun
User prompt
toplu bir şekilde çıkacak hale getir
User prompt
şimdi bu eklediğin assetleri ben ekrana tıklayınca rastgele çıkacak hale getir
User prompt
assets bölümüne her rengin bir assetini ekle
User prompt
renkler kodda görünüyor ama ekranda görünmüyor
User prompt
renkleri asset olarak ekle
User prompt
aynı siyah çıkıyor desenler ve şekiller
User prompt
Beyaz, sarı, turuncu, kırmızı, mor, mavi, yeşil, kahverengi, gri, siyah, pembe, bej, turkuaz, lacivert, bordo, altın, gümüş, bronz, mercan, zeytin yeşili, füme, lila, eflatun, krem, ten rengi, haki, camgöbeği, magenta, çivit mavisi, vişne çürüğü, kobalt mavisi, nane yeşili, lavanta lütfen bu renkleri de ekler misin
User prompt
lütfen bütün renkleri ekle
User prompt
sadece siyah renkte çıkıyor
User prompt
sadece siyah renk çıkıyor bütün renkleri ekle
User prompt
rastgele çıkan isimler şekiller le çıksın yazı olarak değil
User prompt
an başta bana tıkla yazan renkli yazılar olsun
User prompt
rastgele desenler birleşerek bir isim yazssın ingilizce rastgele isimler ve canlı renk tonları kullan
User prompt
çok büyük ekranda büsbüyük şekil olsun
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ // Pattern class: a container for a randomly generated pattern at a given position. var Pattern = Container.expand(function () { var self = Container.call(this); // Generate a random pattern on creation // Patterns: single shape, cluster, or overlay function randomColor() { // Expanded palette: all visually distinct, vibrant, and basic colors // Turkish color names: beyaz, sarı, turuncu, kırmızı, mor, mavi, yeşil, kahverengi, gri, siyah, pembe, bej, turkuaz, lacivert, bordo, altın, gümüş, bronz, mercan, zeytin yeşili, füme, lila, eflatun, krem, ten rengi, haki, camgöbeği, magenta, çivit mavisi, vişne çürüğü, kobalt mavisi, nane yeşili, lavanta // Full Turkish color palette, all unique and vibrant, including all requested names var colors = [0xffffff, // beyaz 0xffff00, // sarı 0xffa500, // turuncu 0xff0000, // kırmızı 0x800080, // mor 0x0000ff, // mavi 0x008000, // yeşil 0x8b4513, // kahverengi 0x808080, // gri 0x000000, // siyah 0xffb6c1, // pembe 0xf5f5dc, // bej 0x40e0d0, // turkuaz 0x191970, // lacivert 0x800000, // bordo 0xffd700, // altın 0xc0c0c0, // gümüş 0xcd7f32, // bronz 0xff7f50, // mercan 0x808000, // zeytin yeşili 0x545454, // füme 0xb57edc, // lila 0x8f00ff, // eflatun 0xfffdd0, // krem 0xffdab9, // ten rengi (peachpuff) 0x808000, // haki 0x00ced1, // camgöbeği 0xff00ff, // magenta 0x00416a, // çivit mavisi 0x70193d, // vişne çürüğü 0x0047ab, // kobalt mavisi 0x98ff98, // nane yeşili 0xe6e6fa, // lavanta // Extra vibrant and pastel tones for more variety 0xff5e5b, 0xffc857, 0x4ecdc4, 0x3a86ff, 0xffbe0b, 0xfb5607, 0x8338ec, 0xff006e, 0x06d6a0, 0x00ff00, 0x00ffff, 0xff1493, 0x00bfff, 0x9932cc, 0x8b0000, 0x2e8b57, 0xff6347, 0x9acd32, 0x6495ed, 0xdda0dd, 0xb0e0e6, 0xf5deb3, 0xf0e68c, 0xe9967a, 0x48d1cc, 0x9400d3, 0x00ff7f, 0x7b68ee, 0x6a5acd, 0x5f9ea0, 0x8b008b, 0x556b2f, 0x228b22, 0xd2691e, 0xb22222, 0x00008b, 0x008b8b, 0xb8860b, 0xa9a9a9, 0x006400, 0xbdb76b, 0xff8c00, 0x8fbc8f, 0x483d8b, 0x2f4f4f, 0x696969, 0xfffaf0, 0xdcdcdc, 0xf8f8ff, 0xdaa520, 0xadff2f, 0xf0fff0, 0xff69b4, 0xcd5c5c, 0x4b0082, 0xfffff0, 0xfff0f5, 0xfffacd, 0xadd8e6, 0xf08080, 0xe0ffff, 0xfafad2, 0xd3d3d3, 0x90ee90, 0xffa07a, 0x20b2aa, 0x87cefa, 0x778899, 0xb0c4de, 0xffffe0, 0x32cd32, 0xfaf0e6, 0x66cdaa, 0x0000cd, 0xba55d3, 0x9370db, 0x3cb371, 0x00fa9a, 0xc71585, 0xf5fffa, 0xffe4e1, 0xffe4b5, 0xffdead, 0x000080, 0xfdf5e6, 0x6b8e23, 0xff4500, 0xda70d6, 0xeee8aa, 0x98fb98, 0xafeeee, 0xdb7093, 0xffefd5, 0xcd853f, 0xffc0cb, 0x4169e1, 0xfa8072, 0xf4a460, 0xfff5ee, 0xa0522d, 0x87ceeb, 0x708090, 0xfffafa, 0xd2b48c, 0xd8bfd8, 0xee82ee, 0xf5f5f5, 0x9acd32]; // Simulate a gradient by returning an array of two colors sometimes if (Math.random() < 0.3) { var c1 = colors[Math.floor(Math.random() * colors.length)]; var c2 = colors[Math.floor(Math.random() * colors.length)]; return [c1, c2]; } return colors[Math.floor(Math.random() * colors.length)]; } function randomShape() { // Return 'box' or 'ellipse' return Math.random() < 0.5 ? 'box' : 'ellipse'; } function randomSize() { // Return a size between 120 and 400 px return 120 + Math.floor(Math.random() * 280); } function randomRotation() { // Return a random rotation in radians return Math.random() * Math.PI * 2; } function randomAlpha() { // Return a random alpha between 0.7 and 1 return 0.7 + Math.random() * 0.3; } function randomPatternType() { // 0: single, 1: cluster, 2: overlay var r = Math.random(); if (r < 0.5) return 0; if (r < 0.8) return 1; return 2; } // Generate the pattern function generatePattern() { var type = randomPatternType(); if (type === 0) { // Single shape var w = randomSize(); var h = randomSize(); var shape = randomShape(); var color = randomColor(); if (Array.isArray(color)) { // Simulate a gradient by overlaying two shapes with different colors and alpha var asset1 = self.attachAsset({ shape: shape, width: w, height: h, color: color[0], anchorX: 0.5, anchorY: 0.5, fill: color[0] }, {}); asset1.rotation = randomRotation(); asset1.alpha = randomAlpha(); var asset2 = self.attachAsset({ shape: shape, width: w, height: h, color: color[1], anchorX: 0.5, anchorY: 0.5, fill: color[1] }, {}); asset2.rotation = randomRotation(); asset2.alpha = 0.5 + Math.random() * 0.3; } else { var asset = self.attachAsset({ shape: shape, width: w, height: h, color: color, anchorX: 0.5, anchorY: 0.5, fill: color }, {}); asset.rotation = randomRotation(); asset.alpha = randomAlpha(); } } else if (type === 1) { // Cluster: 3-6 shapes in a circle var count = 3 + Math.floor(Math.random() * 4); var radius = 80 + Math.random() * 120; for (var i = 0; i < count; i++) { var angle = Math.PI * 2 / count * i + Math.random() * 0.3; var w = randomSize() * (0.5 + Math.random() * 0.7); var h = randomSize() * (0.5 + Math.random() * 0.7); var shape = randomShape(); var color = randomColor(); if (Array.isArray(color)) { // Simulate a gradient by overlaying two shapes var asset1 = self.attachAsset({ shape: shape, width: w, height: h, color: color[0], anchorX: 0.5, anchorY: 0.5, fill: color[0] }, {}); asset1.x = Math.cos(angle) * radius; asset1.y = Math.sin(angle) * radius; asset1.rotation = randomRotation(); asset1.alpha = randomAlpha(); var asset2 = self.attachAsset({ shape: shape, width: w, height: h, color: color[1], anchorX: 0.5, anchorY: 0.5, fill: color[1] }, {}); asset2.x = Math.cos(angle) * radius; asset2.y = Math.sin(angle) * radius; asset2.rotation = randomRotation(); asset2.alpha = 0.5 + Math.random() * 0.3; } else { var asset = self.attachAsset({ shape: shape, width: w, height: h, color: color, anchorX: 0.5, anchorY: 0.5, fill: color }, {}); asset.x = Math.cos(angle) * radius; asset.y = Math.sin(angle) * radius; asset.rotation = randomRotation(); asset.alpha = randomAlpha(); } } } else { // Overlay: 2-3 shapes stacked with different rotations var overlays = 2 + Math.floor(Math.random() * 2); for (var j = 0; j < overlays; j++) { var w = randomSize() * (0.7 + Math.random() * 0.5); var h = randomSize() * (0.7 + Math.random() * 0.5); var shape = randomShape(); var color = randomColor(); if (Array.isArray(color)) { var asset1 = self.attachAsset({ shape: shape, width: w, height: h, color: color[0], anchorX: 0.5, anchorY: 0.5, fill: color[0] }, {}); asset1.rotation = randomRotation(); asset1.alpha = 0.5 + Math.random() * 0.5; var asset2 = self.attachAsset({ shape: shape, width: w, height: h, color: color[1], anchorX: 0.5, anchorY: 0.5, fill: color[1] }, {}); asset2.rotation = randomRotation(); asset2.alpha = 0.3 + Math.random() * 0.3; } else { var asset = self.attachAsset({ shape: shape, width: w, height: h, color: color, anchorX: 0.5, anchorY: 0.5, fill: color }, {}); asset.rotation = randomRotation(); asset.alpha = 0.5 + Math.random() * 0.5; } } } } generatePattern(); // Pop-in animation self.scale.set(0.2, 0.2); tween(self.scale, { x: 1, y: 1 }, { duration: 350, easing: tween.elasticOut }); // Sparkle and glow effect: animate alpha and scale for shimmer function sparkleEffect(target) { // Animate alpha up and down for shimmer var _sparkleTween = function sparkleTween() { tween(target, { alpha: 1 }, { duration: 180 + Math.random() * 120, easing: tween.sineIn, onComplete: function onComplete() { tween(target, { alpha: 0.7 + Math.random() * 0.3 }, { duration: 180 + Math.random() * 120, easing: tween.sineOut, onComplete: _sparkleTween }); } }); }; _sparkleTween(); // Animate scale for a pulsing glow var _pulseTween = function pulseTween() { tween(target.scale, { x: 1.08, y: 1.08 }, { duration: 320 + Math.random() * 120, easing: tween.sineIn, onComplete: function onComplete() { tween(target.scale, { x: 1, y: 1 }, { duration: 320 + Math.random() * 120, easing: tween.sineOut, onComplete: _pulseTween }); } }); }; _pulseTween(); } // Apply sparkle effect to all children (shapes) of the pattern for (var i = 0; i < self.children.length; i++) { sparkleEffect(self.children[i]); } return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0xffffff // White background for a clean canvas }); /**** * Game Code ****/ // We'll use the tween plugin for simple pop-in animations. /* We will use only shapes for patterns, with random colors and sizes. No need to predefine assets, as LK will auto-create them as needed. */ // No score, no timer, no GUI overlays // Store the current name and pattern containers var currentNameGroup = null; var currentPatterns = []; // "Tap Me" colorful text at the start var tapMeText = new Text2("Tap Me", { size: 220, fill: 0xFFFFFF, font: "Arial Black" }); tapMeText.anchor.set(0.5, 0.5); tapMeText.x = 2048 / 2; tapMeText.y = 2732 / 2 - 100; tapMeText.alpha = 1; game.addChild(tapMeText); // Animate the "Tap Me" text with color cycling and pulsing var tapMeColors = ["#ff5e5b", "#ffc857", "#4ecdc4", "#3a86ff", "#ffbe0b", "#fb5607", "#8338ec", "#ff006e", "#06d6a0", "#ff0099"]; var tapMeColorIdx = 0; var tapMePulseUp = true; var tapMePulseVal = 1; var tapMePulseSpeed = 0.012; game.update = function () { // Color cycle if (LK.ticks % 18 === 0 && tapMeText && tapMeText.setStyle) { tapMeColorIdx = (tapMeColorIdx + 1) % tapMeColors.length; tapMeText.setStyle({ fill: tapMeColors[tapMeColorIdx] }); } // Pulse if (tapMeText) { if (tapMePulseUp) { tapMePulseVal += tapMePulseSpeed; if (tapMePulseVal > 1.13) tapMePulseUp = false; } else { tapMePulseVal -= tapMePulseSpeed; if (tapMePulseVal < 0.87) tapMePulseUp = true; } tapMeText.scale.set(tapMePulseVal, tapMePulseVal); } }; // Helper: don't allow patterns in the top-left 100x100 px (menu area) function isInMenuArea(x, y) { return x < 100 && y < 100; } // List of fun, random, vibrant names var nameList = ["LUNA", "PIXEL", "NOVA", "SPARK", "BLAZE", "AURA", "VIVID", "ZEST", "GLOW", "TWIST", "DREAM", "FLASH", "PRISM", "BUBBLE", "SHINE", "VIBE", "JAZZ", "BLOSSOM", "BOLT", "WAVE"]; // Helper: pick a random name function getRandomName() { return nameList[Math.floor(Math.random() * nameList.length)]; } // Helper: get a vibrant color for text function getVibrantColor() { var colors = ["#ff5e5b", "#ffc857", "#4ecdc4", "#3a86ff", "#ffbe0b", "#fb5607", "#8338ec", "#ff006e", "#06d6a0", "#ff0099"]; return colors[Math.floor(Math.random() * colors.length)]; } // Create the "Clear" button (Text2 object) var clearBtn = new Text2("Clear", { size: 100, fill: "#222", font: "Arial Black" }); clearBtn.anchor.set(0.5, 0.5); // Place the button at the top right, with margin clearBtn.x = 2048 - 200; clearBtn.y = 120; clearBtn.interactive = true; clearBtn.buttonMode = true; game.addChild(clearBtn); // On tap/click anywhere, show a random color asset at that location (removing the previous one) game.down = function (x, y, obj) { // Don't allow patterns in menu area or on the clear button if (isInMenuArea(x, y)) return; // If tap is on the clear button, ignore (handled separately) var btnBounds = clearBtn.getBounds(); if (x >= clearBtn.x + btnBounds.x && x <= clearBtn.x + btnBounds.x + btnBounds.width && y >= clearBtn.y + btnBounds.y && y <= clearBtn.y + btnBounds.y + btnBounds.height) { return; } // Remove "Tap Me" text if present if (tapMeText) { tapMeText.destroy(); tapMeText = null; } // Remove previous patterns and name if exist if (currentPatterns && currentPatterns.length) { for (var i = 0; i < currentPatterns.length; i++) { currentPatterns[i].destroy(); } currentPatterns = []; } if (currentNameGroup) { currentNameGroup.destroy(); currentNameGroup = null; } // List of all color asset ids var colorAssetIds = ['altin', 'bej', 'bordo', 'bronz', 'camgobegi', 'civit_mavisi', 'eflatun', 'fume', 'gri', 'gumus', 'haki', 'kahverengi', 'kirmizi', 'kobalt_mavisi', 'krem', 'lacivert', 'lavanta', 'lila', 'magenta', 'mavi', 'mercan', 'mor', 'nane_yesili', 'pembe', 'sari', 'siyah', 'ten_rengi', 'turkuaz', 'turuncu', 'visne_curugu', 'yesil', 'zeytin_yesili']; // Animal shape definitions: each is an array of {dx, dy, scale, colorIdx} for each part // For brevity, most animals are represented by a simple body plan: head, body, 2 ears/fins/wings, 2 eyes, tail/limb if needed // For more complex animals, you can expand the part list as needed var animalShapes = [ // Dog [{ dx: 0, dy: 0, scale: 1.1, colorIdx: null }, { dx: 0, dy: 100, scale: 1.4, colorIdx: null }, { dx: -60, dy: -50, scale: 0.6, colorIdx: null }, { dx: 60, dy: -50, scale: 0.6, colorIdx: null }, { dx: -25, dy: 10, scale: 0.22, colorIdx: 2 }, { dx: 25, dy: 10, scale: 0.22, colorIdx: 2 }, { dx: 80, dy: 140, scale: 0.5, colorIdx: null }], // Cat [{ dx: 0, dy: 0, scale: 1.1, colorIdx: null }, { dx: 0, dy: 90, scale: 1.3, colorIdx: null }, { dx: -55, dy: -65, scale: 0.5, colorIdx: null }, { dx: 55, dy: -65, scale: 0.5, colorIdx: null }, { dx: -25, dy: 10, scale: 0.22, colorIdx: 2 }, { dx: 25, dy: 10, scale: 0.22, colorIdx: 2 }, { dx: 70, dy: 120, scale: 0.5, colorIdx: null }], // Horse [{ dx: 0, dy: 0, scale: 1.3, colorIdx: null }, { dx: 0, dy: 120, scale: 1.7, colorIdx: null }, { dx: -70, dy: -80, scale: 0.5, colorIdx: null }, { dx: 70, dy: -80, scale: 0.5, colorIdx: null }, { dx: -30, dy: 30, scale: 0.22, colorIdx: 2 }, { dx: 30, dy: 30, scale: 0.22, colorIdx: 2 }, { dx: 0, dy: 220, scale: 0.7, colorIdx: null }], // Elephant [{ dx: 0, dy: 0, scale: 1.5, colorIdx: null }, { dx: 0, dy: 130, scale: 1.8, colorIdx: null }, { dx: -90, dy: -90, scale: 0.7, colorIdx: null }, { dx: 90, dy: -90, scale: 0.7, colorIdx: null }, { dx: 0, dy: 60, scale: 0.4, colorIdx: null }, { dx: -40, dy: 40, scale: 0.22, colorIdx: 2 }, { dx: 40, dy: 40, scale: 0.22, colorIdx: 2 }], // Lion [{ dx: 0, dy: 0, scale: 1.2, colorIdx: null }, { dx: 0, dy: 110, scale: 1.5, colorIdx: null }, { dx: -60, dy: -70, scale: 0.5, colorIdx: null }, { dx: 60, dy: -70, scale: 0.5, colorIdx: null }, { dx: -25, dy: 20, scale: 0.22, colorIdx: 2 }, { dx: 25, dy: 20, scale: 0.22, colorIdx: 2 }, { dx: 0, dy: 200, scale: 0.6, colorIdx: null }], // Tiger [{ dx: 0, dy: 0, scale: 1.2, colorIdx: null }, { dx: 0, dy: 110, scale: 1.5, colorIdx: null }, { dx: -60, dy: -70, scale: 0.5, colorIdx: null }, { dx: 60, dy: -70, scale: 0.5, colorIdx: null }, { dx: -25, dy: 20, scale: 0.22, colorIdx: 2 }, { dx: 25, dy: 20, scale: 0.22, colorIdx: 2 }, { dx: 0, dy: 200, scale: 0.6, colorIdx: null }], // Bear [{ dx: 0, dy: 0, scale: 1.3, colorIdx: null }, { dx: 0, dy: 120, scale: 1.7, colorIdx: null }, { dx: -70, dy: -80, scale: 0.5, colorIdx: null }, { dx: 70, dy: -80, scale: 0.5, colorIdx: null }, { dx: -30, dy: 30, scale: 0.22, colorIdx: 2 }, { dx: 30, dy: 30, scale: 0.22, colorIdx: 2 }, { dx: 0, dy: 220, scale: 0.7, colorIdx: null }], // Whale [{ dx: 0, dy: 0, scale: 1.5, colorIdx: null }, { dx: 0, dy: 120, scale: 2.0, colorIdx: null }, { dx: -100, dy: 0, scale: 0.7, colorIdx: null }, { dx: 100, dy: 0, scale: 0.7, colorIdx: null }, { dx: 0, dy: 200, scale: 0.5, colorIdx: null }], // Dolphin [{ dx: 0, dy: 0, scale: 1.2, colorIdx: null }, { dx: 0, dy: 100, scale: 1.5, colorIdx: null }, { dx: -60, dy: 0, scale: 0.5, colorIdx: null }, { dx: 60, dy: 0, scale: 0.5, colorIdx: null }, { dx: 0, dy: 180, scale: 0.4, colorIdx: null }], // Monkey [{ dx: 0, dy: 0, scale: 1.1, colorIdx: null }, { dx: 0, dy: 90, scale: 1.3, colorIdx: null }, { dx: -55, dy: -65, scale: 0.5, colorIdx: null }, { dx: 55, dy: -65, scale: 0.5, colorIdx: null }, { dx: -25, dy: 10, scale: 0.22, colorIdx: 2 }, { dx: 25, dy: 10, scale: 0.22, colorIdx: 2 }, { dx: 70, dy: 120, scale: 0.5, colorIdx: null }], // Bat [{ dx: 0, dy: 0, scale: 1.0, colorIdx: null }, { dx: 0, dy: 80, scale: 1.2, colorIdx: null }, { dx: -80, dy: 0, scale: 0.7, colorIdx: null }, { dx: 80, dy: 0, scale: 0.7, colorIdx: null }, { dx: -25, dy: 10, scale: 0.22, colorIdx: 2 }, { dx: 25, dy: 10, scale: 0.22, colorIdx: 2 }], // Deer [{ dx: 0, dy: 0, scale: 1.2, colorIdx: null }, { dx: 0, dy: 110, scale: 1.5, colorIdx: null }, { dx: -60, dy: -70, scale: 0.5, colorIdx: null }, { dx: 60, dy: -70, scale: 0.5, colorIdx: null }, { dx: -25, dy: 20, scale: 0.22, colorIdx: 2 }, { dx: 25, dy: 20, scale: 0.22, colorIdx: 2 }, { dx: 0, dy: 200, scale: 0.6, colorIdx: null }], // Wolf [{ dx: 0, dy: 0, scale: 1.2, colorIdx: null }, { dx: 0, dy: 110, scale: 1.5, colorIdx: null }, { dx: -60, dy: -70, scale: 0.5, colorIdx: null }, { dx: 60, dy: -70, scale: 0.5, colorIdx: null }, { dx: -25, dy: 20, scale: 0.22, colorIdx: 2 }, { dx: 25, dy: 20, scale: 0.22, colorIdx: 2 }, { dx: 0, dy: 200, scale: 0.6, colorIdx: null }], // Fox [{ dx: 0, dy: 0, scale: 1.1, colorIdx: null }, { dx: 0, dy: 90, scale: 1.3, colorIdx: null }, { dx: -55, dy: -65, scale: 0.5, colorIdx: null }, { dx: 55, dy: -65, scale: 0.5, colorIdx: null }, { dx: -25, dy: 10, scale: 0.22, colorIdx: 2 }, { dx: 25, dy: 10, scale: 0.22, colorIdx: 2 }, { dx: 70, dy: 120, scale: 0.5, colorIdx: null }], // Rabbit [{ dx: 0, dy: 0, scale: 1.0, colorIdx: null }, { dx: 0, dy: 90, scale: 1.2, colorIdx: null }, { dx: -30, dy: -90, scale: 0.4, colorIdx: null }, { dx: 30, dy: -90, scale: 0.4, colorIdx: null }, { dx: -18, dy: 10, scale: 0.18, colorIdx: 2 }, { dx: 18, dy: 10, scale: 0.18, colorIdx: 2 }], // Kangaroo [{ dx: 0, dy: 0, scale: 1.2, colorIdx: null }, { dx: 0, dy: 110, scale: 1.5, colorIdx: null }, { dx: -60, dy: -70, scale: 0.5, colorIdx: null }, { dx: 60, dy: -70, scale: 0.5, colorIdx: null }, { dx: -25, dy: 20, scale: 0.22, colorIdx: 2 }, { dx: 25, dy: 20, scale: 0.22, colorIdx: 2 }, { dx: 0, dy: 200, scale: 0.6, colorIdx: null }], // Human [{ dx: 0, dy: 0, scale: 1.1, colorIdx: null }, { dx: 0, dy: 90, scale: 1.3, colorIdx: null }, { dx: -55, dy: -65, scale: 0.5, colorIdx: null }, { dx: 55, dy: -65, scale: 0.5, colorIdx: null }, { dx: -25, dy: 10, scale: 0.22, colorIdx: 2 }, { dx: 25, dy: 10, scale: 0.22, colorIdx: 2 }], // Eagle [{ dx: 0, dy: 40, scale: 1.1, colorIdx: null }, { dx: 0, dy: -60, scale: 0.7, colorIdx: null }, { dx: 0, dy: -90, scale: 0.22, colorIdx: 4 }, { dx: -60, dy: 30, scale: 0.7, colorIdx: null }, { dx: 60, dy: 80, scale: 0.5, colorIdx: null }], // Owl [{ dx: 0, dy: 0, scale: 1.1, colorIdx: null }, { dx: 0, dy: 90, scale: 1.3, colorIdx: null }, { dx: -55, dy: -65, scale: 0.5, colorIdx: null }, { dx: 55, dy: -65, scale: 0.5, colorIdx: null }, { dx: -25, dy: 10, scale: 0.22, colorIdx: 2 }, { dx: 25, dy: 10, scale: 0.22, colorIdx: 2 }], // Sparrow [{ dx: 0, dy: 40, scale: 1.1, colorIdx: null }, { dx: 0, dy: -60, scale: 0.7, colorIdx: null }, { dx: 0, dy: -90, scale: 0.22, colorIdx: 4 }, { dx: -60, dy: 30, scale: 0.7, colorIdx: null }, { dx: 60, dy: 80, scale: 0.5, colorIdx: null }], // Penguin [{ dx: 0, dy: 0, scale: 1.1, colorIdx: null }, { dx: 0, dy: 90, scale: 1.3, colorIdx: null }, { dx: -55, dy: -65, scale: 0.5, colorIdx: null }, { dx: 55, dy: -65, scale: 0.5, colorIdx: null }, { dx: -25, dy: 10, scale: 0.22, colorIdx: 2 }, { dx: 25, dy: 10, scale: 0.22, colorIdx: 2 }], // Ostrich [{ dx: 0, dy: 0, scale: 1.3, colorIdx: null }, { dx: 0, dy: 120, scale: 1.7, colorIdx: null }, { dx: -70, dy: -80, scale: 0.5, colorIdx: null }, { dx: 70, dy: -80, scale: 0.5, colorIdx: null }, { dx: -30, dy: 30, scale: 0.22, colorIdx: 2 }, { dx: 30, dy: 30, scale: 0.22, colorIdx: 2 }], // Parrot [{ dx: 0, dy: 40, scale: 1.1, colorIdx: null }, { dx: 0, dy: -60, scale: 0.7, colorIdx: null }, { dx: 0, dy: -90, scale: 0.22, colorIdx: 4 }, { dx: -60, dy: 30, scale: 0.7, colorIdx: null }, { dx: 60, dy: 80, scale: 0.5, colorIdx: null }], // Pigeon [{ dx: 0, dy: 40, scale: 1.1, colorIdx: null }, { dx: 0, dy: -60, scale: 0.7, colorIdx: null }, { dx: 0, dy: -90, scale: 0.22, colorIdx: 4 }, { dx: -60, dy: 30, scale: 0.7, colorIdx: null }, { dx: 60, dy: 80, scale: 0.5, colorIdx: null }], // Hummingbird [{ dx: 0, dy: 40, scale: 1.1, colorIdx: null }, { dx: 0, dy: -60, scale: 0.7, colorIdx: null }, { dx: 0, dy: -90, scale: 0.22, colorIdx: 4 }, { dx: -60, dy: 30, scale: 0.7, colorIdx: null }, { dx: 60, dy: 80, scale: 0.5, colorIdx: null }], // Duck [{ dx: 0, dy: 40, scale: 1.1, colorIdx: null }, { dx: 0, dy: -60, scale: 0.7, colorIdx: null }, { dx: 0, dy: -90, scale: 0.22, colorIdx: 4 }, { dx: -60, dy: 30, scale: 0.7, colorIdx: null }, { dx: 60, dy: 80, scale: 0.5, colorIdx: null }], // Swan [{ dx: 0, dy: 40, scale: 1.1, colorIdx: null }, { dx: 0, dy: -60, scale: 0.7, colorIdx: null }, { dx: 0, dy: -90, scale: 0.22, colorIdx: 4 }, { dx: -60, dy: 30, scale: 0.7, colorIdx: null }, { dx: 60, dy: 80, scale: 0.5, colorIdx: null }], // Crow [{ dx: 0, dy: 40, scale: 1.1, colorIdx: null }, { dx: 0, dy: -60, scale: 0.7, colorIdx: null }, { dx: 0, dy: -90, scale: 0.22, colorIdx: 4 }, { dx: -60, dy: 30, scale: 0.7, colorIdx: null }, { dx: 60, dy: 80, scale: 0.5, colorIdx: null }], // Robin [{ dx: 0, dy: 40, scale: 1.1, colorIdx: null }, { dx: 0, dy: -60, scale: 0.7, colorIdx: null }, { dx: 0, dy: -90, scale: 0.22, colorIdx: 4 }, { dx: -60, dy: 30, scale: 0.7, colorIdx: null }, { dx: 60, dy: 80, scale: 0.5, colorIdx: null }], // Albatross [{ dx: 0, dy: 40, scale: 1.1, colorIdx: null }, { dx: 0, dy: -60, scale: 0.7, colorIdx: null }, { dx: 0, dy: -90, scale: 0.22, colorIdx: 4 }, { dx: -60, dy: 30, scale: 0.7, colorIdx: null }, { dx: 60, dy: 80, scale: 0.5, colorIdx: null }], // Flamingo [{ dx: 0, dy: 40, scale: 1.1, colorIdx: null }, { dx: 0, dy: -60, scale: 0.7, colorIdx: null }, { dx: 0, dy: -90, scale: 0.22, colorIdx: 4 }, { dx: -60, dy: 30, scale: 0.7, colorIdx: null }, { dx: 60, dy: 80, scale: 0.5, colorIdx: null }], // Snake [{ dx: 0, dy: 0, scale: 1.1, colorIdx: null }, { dx: 0, dy: 90, scale: 1.3, colorIdx: null }, { dx: 0, dy: 180, scale: 1.0, colorIdx: null }, { dx: 0, dy: 270, scale: 0.7, colorIdx: null }, { dx: 0, dy: 360, scale: 0.5, colorIdx: null }], // Lizard [{ dx: 0, dy: 0, scale: 1.1, colorIdx: null }, { dx: 0, dy: 90, scale: 1.3, colorIdx: null }, { dx: -40, dy: 180, scale: 0.5, colorIdx: null }, { dx: 40, dy: 180, scale: 0.5, colorIdx: null }, { dx: 0, dy: 220, scale: 0.7, colorIdx: null }], // Crocodile [{ dx: 0, dy: 0, scale: 1.3, colorIdx: null }, { dx: 0, dy: 120, scale: 1.7, colorIdx: null }, { dx: -70, dy: -80, scale: 0.5, colorIdx: null }, { dx: 70, dy: -80, scale: 0.5, colorIdx: null }, { dx: 0, dy: 220, scale: 0.7, colorIdx: null }], // Alligator [{ dx: 0, dy: 0, scale: 1.3, colorIdx: null }, { dx: 0, dy: 120, scale: 1.7, colorIdx: null }, { dx: -70, dy: -80, scale: 0.5, colorIdx: null }, { dx: 70, dy: -80, scale: 0.5, colorIdx: null }, { dx: 0, dy: 220, scale: 0.7, colorIdx: null }], // Turtle [{ dx: 0, dy: 0, scale: 1.1, colorIdx: null }, { dx: 0, dy: 90, scale: 1.3, colorIdx: null }, { dx: -40, dy: 180, scale: 0.5, colorIdx: null }, { dx: 40, dy: 180, scale: 0.5, colorIdx: null }, { dx: 0, dy: 220, scale: 0.7, colorIdx: null }], // Tortoise [{ dx: 0, dy: 0, scale: 1.1, colorIdx: null }, { dx: 0, dy: 90, scale: 1.3, colorIdx: null }, { dx: -40, dy: 180, scale: 0.5, colorIdx: null }, { dx: 40, dy: 180, scale: 0.5, colorIdx: null }, { dx: 0, dy: 220, scale: 0.7, colorIdx: null }], // Chameleon [{ dx: 0, dy: 0, scale: 1.1, colorIdx: null }, { dx: 0, dy: 90, scale: 1.3, colorIdx: null }, { dx: -40, dy: 180, scale: 0.5, colorIdx: null }, { dx: 40, dy: 180, scale: 0.5, colorIdx: null }, { dx: 0, dy: 220, scale: 0.7, colorIdx: null }], // Gecko [{ dx: 0, dy: 0, scale: 1.1, colorIdx: null }, { dx: 0, dy: 90, scale: 1.3, colorIdx: null }, { dx: -40, dy: 180, scale: 0.5, colorIdx: null }, { dx: 40, dy: 180, scale: 0.5, colorIdx: null }, { dx: 0, dy: 220, scale: 0.7, colorIdx: null }], // Komodo Dragon [{ dx: 0, dy: 0, scale: 1.3, colorIdx: null }, { dx: 0, dy: 120, scale: 1.7, colorIdx: null }, { dx: -70, dy: -80, scale: 0.5, colorIdx: null }, { dx: 70, dy: -80, scale: 0.5, colorIdx: null }, { dx: 0, dy: 220, scale: 0.7, colorIdx: null }], // Cobra [{ dx: 0, dy: 0, scale: 1.1, colorIdx: null }, { dx: 0, dy: 90, scale: 1.3, colorIdx: null }, { dx: 0, dy: 180, scale: 1.0, colorIdx: null }, { dx: 0, dy: 270, scale: 0.7, colorIdx: null }, { dx: 0, dy: 360, scale: 0.5, colorIdx: null }], // Python [{ dx: 0, dy: 0, scale: 1.1, colorIdx: null }, { dx: 0, dy: 90, scale: 1.3, colorIdx: null }, { dx: 0, dy: 180, scale: 1.0, colorIdx: null }, { dx: 0, dy: 270, scale: 0.7, colorIdx: null }, { dx: 0, dy: 360, scale: 0.5, colorIdx: null }], // Frog [{ dx: 0, dy: 0, scale: 1.1, colorIdx: null }, { dx: 0, dy: 90, scale: 1.3, colorIdx: null }, { dx: -40, dy: 180, scale: 0.5, colorIdx: null }, { dx: 40, dy: 180, scale: 0.5, colorIdx: null }, { dx: 0, dy: 220, scale: 0.7, colorIdx: null }], // Toad [{ dx: 0, dy: 0, scale: 1.1, colorIdx: null }, { dx: 0, dy: 90, scale: 1.3, colorIdx: null }, { dx: -40, dy: 180, scale: 0.5, colorIdx: null }, { dx: 40, dy: 180, scale: 0.5, colorIdx: null }, { dx: 0, dy: 220, scale: 0.7, colorIdx: null }], // Salamander [{ dx: 0, dy: 0, scale: 1.1, colorIdx: null }, { dx: 0, dy: 90, scale: 1.3, colorIdx: null }, { dx: 0, dy: 180, scale: 1.0, colorIdx: null }, { dx: 0, dy: 270, scale: 0.7, colorIdx: null }, { dx: 0, dy: 360, scale: 0.5, colorIdx: null }], // Newt [{ dx: 0, dy: 0, scale: 1.1, colorIdx: null }, { dx: 0, dy: 90, scale: 1.3, colorIdx: null }, { dx: 0, dy: 180, scale: 1.0, colorIdx: null }, { dx: 0, dy: 270, scale: 0.7, colorIdx: null }, { dx: 0, dy: 360, scale: 0.5, colorIdx: null }], // Caecilian [{ dx: 0, dy: 0, scale: 1.1, colorIdx: null }, { dx: 0, dy: 90, scale: 1.3, colorIdx: null }, { dx: 0, dy: 180, scale: 1.0, colorIdx: null }, { dx: 0, dy: 270, scale: 0.7, colorIdx: null }, { dx: 0, dy: 360, scale: 0.5, colorIdx: null }], // Axolotl [{ dx: 0, dy: 0, scale: 1.1, colorIdx: null }, { dx: 0, dy: 90, scale: 1.3, colorIdx: null }, { dx: -40, dy: 180, scale: 0.5, colorIdx: null }, { dx: 40, dy: 180, scale: 0.5, colorIdx: null }, { dx: 0, dy: 220, scale: 0.7, colorIdx: null }], // Shark [{ dx: 0, dy: 0, scale: 1.5, colorIdx: null }, { dx: 0, dy: 120, scale: 2.0, colorIdx: null }, { dx: -100, dy: 0, scale: 0.7, colorIdx: null }, { dx: 100, dy: 0, scale: 0.7, colorIdx: null }, { dx: 0, dy: 200, scale: 0.5, colorIdx: null }], // Salmon [{ dx: 0, dy: 0, scale: 1.1, colorIdx: null }, { dx: -80, dy: 0, scale: 0.7, colorIdx: null }, { dx: 0, dy: -60, scale: 0.4, colorIdx: null }, { dx: 40, dy: -10, scale: 0.18, colorIdx: 2 }], // Tuna [{ dx: 0, dy: 0, scale: 1.1, colorIdx: null }, { dx: -80, dy: 0, scale: 0.7, colorIdx: null }, { dx: 0, dy: -60, scale: 0.4, colorIdx: null }, { dx: 40, dy: -10, scale: 0.18, colorIdx: 2 }], // Clownfish [{ dx: 0, dy: 0, scale: 1.1, colorIdx: null }, { dx: -80, dy: 0, scale: 0.7, colorIdx: null }, { dx: 0, dy: -60, scale: 0.4, colorIdx: null }, { dx: 40, dy: -10, scale: 0.18, colorIdx: 2 }], // Goldfish [{ dx: 0, dy: 0, scale: 1.1, colorIdx: null }, { dx: -80, dy: 0, scale: 0.7, colorIdx: null }, { dx: 0, dy: -60, scale: 0.4, colorIdx: null }, { dx: 40, dy: -10, scale: 0.18, colorIdx: 2 }], // Eel [{ dx: 0, dy: 0, scale: 1.1, colorIdx: null }, { dx: 0, dy: 90, scale: 1.3, colorIdx: null }, { dx: 0, dy: 180, scale: 1.0, colorIdx: null }, { dx: 0, dy: 270, scale: 0.7, colorIdx: null }, { dx: 0, dy: 360, scale: 0.5, colorIdx: null }], // Seahorse [{ dx: 0, dy: 0, scale: 1.1, colorIdx: null }, { dx: 0, dy: 90, scale: 1.3, colorIdx: null }, { dx: 0, dy: 180, scale: 1.0, colorIdx: null }, { dx: 0, dy: 270, scale: 0.7, colorIdx: null }, { dx: 0, dy: 360, scale: 0.5, colorIdx: null }], // Trout [{ dx: 0, dy: 0, scale: 1.1, colorIdx: null }, { dx: -80, dy: 0, scale: 0.7, colorIdx: null }, { dx: 0, dy: -60, scale: 0.4, colorIdx: null }, { dx: 40, dy: -10, scale: 0.18, colorIdx: 2 }], // Cod [{ dx: 0, dy: 0, scale: 1.1, colorIdx: null }, { dx: -80, dy: 0, scale: 0.7, colorIdx: null }, { dx: 0, dy: -60, scale: 0.4, colorIdx: null }, { dx: 40, dy: -10, scale: 0.18, colorIdx: 2 }], // Barracuda [{ dx: 0, dy: 0, scale: 1.1, colorIdx: null }, { dx: -80, dy: 0, scale: 0.7, colorIdx: null }, { dx: 0, dy: -60, scale: 0.4, colorIdx: null }, { dx: 40, dy: -10, scale: 0.18, colorIdx: 2 }], // Stingray [{ dx: 0, dy: 0, scale: 1.5, colorIdx: null }, { dx: 0, dy: 120, scale: 2.0, colorIdx: null }, { dx: -100, dy: 0, scale: 0.7, colorIdx: null }, { dx: 100, dy: 0, scale: 0.7, colorIdx: null }, { dx: 0, dy: 200, scale: 0.5, colorIdx: null }], // Manta Ray [{ dx: 0, dy: 0, scale: 1.5, colorIdx: null }, { dx: 0, dy: 120, scale: 2.0, colorIdx: null }, { dx: -100, dy: 0, scale: 0.7, colorIdx: null }, { dx: 100, dy: 0, scale: 0.7, colorIdx: null }, { dx: 0, dy: 200, scale: 0.5, colorIdx: null }], // Ant [{ dx: 0, dy: 0, scale: 0.7, colorIdx: null }, { dx: 0, dy: 40, scale: 0.5, colorIdx: null }, { dx: 0, dy: 80, scale: 0.3, colorIdx: null }], // Bee [{ dx: 0, dy: 0, scale: 0.7, colorIdx: null }, { dx: 0, dy: 40, scale: 0.5, colorIdx: null }, { dx: 0, dy: 80, scale: 0.3, colorIdx: null }], // Butterfly [{ dx: 0, dy: 0, scale: 0.7, colorIdx: null }, { dx: -40, dy: 0, scale: 0.5, colorIdx: null }, { dx: 40, dy: 0, scale: 0.5, colorIdx: null }], // Moth [{ dx: 0, dy: 0, scale: 0.7, colorIdx: null }, { dx: -40, dy: 0, scale: 0.5, colorIdx: null }, { dx: 40, dy: 0, scale: 0.5, colorIdx: null }], // Beetle [{ dx: 0, dy: 0, scale: 0.7, colorIdx: null }, { dx: 0, dy: 40, scale: 0.5, colorIdx: null }, { dx: 0, dy: 80, scale: 0.3, colorIdx: null }], // Fly [{ dx: 0, dy: 0, scale: 0.7, colorIdx: null }, { dx: 0, dy: 40, scale: 0.5, colorIdx: null }, { dx: 0, dy: 80, scale: 0.3, colorIdx: null }], // Mosquito [{ dx: 0, dy: 0, scale: 0.7, colorIdx: null }, { dx: 0, dy: 40, scale: 0.5, colorIdx: null }, { dx: 0, dy: 80, scale: 0.3, colorIdx: null }], // Grasshopper [{ dx: 0, dy: 0, scale: 0.7, colorIdx: null }, { dx: 0, dy: 40, scale: 0.5, colorIdx: null }, { dx: 0, dy: 80, scale: 0.3, colorIdx: null }], // Dragonfly [{ dx: 0, dy: 0, scale: 0.7, colorIdx: null }, { dx: -40, dy: 0, scale: 0.5, colorIdx: null }, { dx: 40, dy: 0, scale: 0.5, colorIdx: null }], // Ladybug [{ dx: 0, dy: 0, scale: 0.7, colorIdx: null }, { dx: 0, dy: 40, scale: 0.5, colorIdx: null }, { dx: 0, dy: 80, scale: 0.3, colorIdx: null }], // Cockroach [{ dx: 0, dy: 0, scale: 0.7, colorIdx: null }, { dx: 0, dy: 40, scale: 0.5, colorIdx: null }, { dx: 0, dy: 80, scale: 0.3, colorIdx: null }], // Spider [{ dx: 0, dy: 0, scale: 0.7, colorIdx: null }, { dx: -30, dy: 30, scale: 0.3, colorIdx: null }, { dx: 30, dy: 30, scale: 0.3, colorIdx: null }], // Scorpion [{ dx: 0, dy: 0, scale: 0.7, colorIdx: null }, { dx: -30, dy: 30, scale: 0.3, colorIdx: null }, { dx: 30, dy: 30, scale: 0.3, colorIdx: null }], // Tick [{ dx: 0, dy: 0, scale: 0.5, colorIdx: null }], // Mite [{ dx: 0, dy: 0, scale: 0.5, colorIdx: null }], // Tarantula [{ dx: 0, dy: 0, scale: 0.7, colorIdx: null }, { dx: -30, dy: 30, scale: 0.3, colorIdx: null }, { dx: 30, dy: 30, scale: 0.3, colorIdx: null }], // Black Widow [{ dx: 0, dy: 0, scale: 0.7, colorIdx: null }, { dx: -30, dy: 30, scale: 0.3, colorIdx: null }, { dx: 30, dy: 30, scale: 0.3, colorIdx: null }], // Crab [{ dx: 0, dy: 0, scale: 0.8, colorIdx: null }, { dx: -40, dy: 0, scale: 0.4, colorIdx: null }, { dx: 40, dy: 0, scale: 0.4, colorIdx: null }], // Lobster [{ dx: 0, dy: 0, scale: 0.8, colorIdx: null }, { dx: -40, dy: 0, scale: 0.4, colorIdx: null }, { dx: 40, dy: 0, scale: 0.4, colorIdx: null }], // Shrimp [{ dx: 0, dy: 0, scale: 0.7, colorIdx: null }, { dx: 0, dy: 40, scale: 0.5, colorIdx: null }], // Prawn [{ dx: 0, dy: 0, scale: 0.7, colorIdx: null }, { dx: 0, dy: 40, scale: 0.5, colorIdx: null }], // Crayfish [{ dx: 0, dy: 0, scale: 0.7, colorIdx: null }, { dx: 0, dy: 40, scale: 0.5, colorIdx: null }], // Barnacle [{ dx: 0, dy: 0, scale: 0.5, colorIdx: null }], // Krill [{ dx: 0, dy: 0, scale: 0.5, colorIdx: null }], // Snail [{ dx: 0, dy: 0, scale: 0.7, colorIdx: null }, { dx: 0, dy: 40, scale: 0.5, colorIdx: null }], // Slug [{ dx: 0, dy: 0, scale: 0.7, colorIdx: null }, { dx: 0, dy: 40, scale: 0.5, colorIdx: null }], // Octopus [{ dx: 0, dy: 0, scale: 0.8, colorIdx: null }, { dx: -40, dy: 40, scale: 0.4, colorIdx: null }, { dx: 40, dy: 40, scale: 0.4, colorIdx: null }], // Squid [{ dx: 0, dy: 0, scale: 0.8, colorIdx: null }, { dx: -40, dy: 40, scale: 0.4, colorIdx: null }, { dx: 40, dy: 40, scale: 0.4, colorIdx: null }], // Clam [{ dx: 0, dy: 0, scale: 0.5, colorIdx: null }], // Oyster [{ dx: 0, dy: 0, scale: 0.5, colorIdx: null }], // Mussel [{ dx: 0, dy: 0, scale: 0.5, colorIdx: null }], // Scallop [{ dx: 0, dy: 0, scale: 0.5, colorIdx: null }], // Nautilus [{ dx: 0, dy: 0, scale: 0.7, colorIdx: null }], // Earthworm [{ dx: 0, dy: 0, scale: 0.7, colorIdx: null }, { dx: 0, dy: 40, scale: 0.5, colorIdx: null }], // Leech [{ dx: 0, dy: 0, scale: 0.5, colorIdx: null }], // Tapeworm [{ dx: 0, dy: 0, scale: 0.5, colorIdx: null }], // Roundworm [{ dx: 0, dy: 0, scale: 0.5, colorIdx: null }], // Starfish (Sea Star) [{ dx: 0, dy: 0, scale: 0.7, colorIdx: null }], // Sea Urchin [{ dx: 0, dy: 0, scale: 0.5, colorIdx: null }], // Sea Cucumber [{ dx: 0, dy: 0, scale: 0.7, colorIdx: null }], // Sand Dollar [{ dx: 0, dy: 0, scale: 0.5, colorIdx: null }], // Jellyfish [{ dx: 0, dy: 0, scale: 0.7, colorIdx: null }, { dx: 0, dy: 40, scale: 0.5, colorIdx: null }], // Coral [{ dx: 0, dy: 0, scale: 0.7, colorIdx: null }], // Sea Anemone [{ dx: 0, dy: 0, scale: 0.7, colorIdx: null }], // Hydra [{ dx: 0, dy: 0, scale: 0.5, colorIdx: null }], // Bath Sponge [{ dx: 0, dy: 0, scale: 0.7, colorIdx: null }], // Sea Sponge [{ dx: 0, dy: 0, scale: 0.7, colorIdx: null }]]; // Animal English names, in the same order as animalShapes var animalEnglishNames = ["Dog", "Cat", "Horse", "Elephant", "Lion", "Tiger", "Bear", "Whale", "Dolphin", "Monkey", "Bat", "Deer", "Wolf", "Fox", "Rabbit", "Kangaroo", "Human", "Eagle", "Owl", "Sparrow", "Penguin", "Ostrich", "Parrot", "Pigeon", "Hummingbird", "Duck", "Swan", "Crow", "Robin", "Albatross", "Flamingo", "Snake", "Lizard", "Crocodile", "Alligator", "Turtle", "Tortoise", "Chameleon", "Gecko", "Komodo Dragon", "Cobra", "Python", "Frog", "Toad", "Salamander", "Newt", "Caecilian", "Axolotl", "Shark", "Salmon", "Tuna", "Clownfish", "Goldfish", "Eel", "Seahorse", "Trout", "Cod", "Barracuda", "Stingray", "Manta Ray", "Ant", "Bee", "Butterfly", "Moth", "Beetle", "Fly", "Mosquito", "Grasshopper", "Dragonfly", "Ladybug", "Cockroach", "Spider", "Scorpion", "Tick", "Mite", "Tarantula", "Black Widow", "Crab", "Lobster", "Shrimp", "Prawn", "Crayfish", "Barnacle", "Krill", "Snail", "Slug", "Octopus", "Squid", "Clam", "Oyster", "Mussel", "Scallop", "Nautilus", "Earthworm", "Leech", "Tapeworm", "Roundworm", "Starfish (Sea Star)", "Sea Urchin", "Sea Cucumber", "Sand Dollar", "Jellyfish", "Coral", "Sea Anemone", "Hydra", "Bath Sponge", "Sea Sponge"]; // Pick a random animal shape and its English name var animalIdx = Math.floor(Math.random() * animalShapes.length); var animal = animalShapes[animalIdx]; var animalName = animalEnglishNames[animalIdx]; // Show the animal name at the top (destroy previous if exists) if (currentNameGroup) { currentNameGroup.destroy(); currentNameGroup = null; } currentNameGroup = new Container(); var nameText = new Text2(animalName, { size: 180, fill: getVibrantColor(), font: "Arial Black" }); nameText.anchor.set(0.5, 0); nameText.x = 2048 / 2; nameText.y = 40; currentNameGroup.addChild(nameText); game.addChild(currentNameGroup); // Pick a random base color for the animal var baseColorIdx = Math.floor(Math.random() * colorAssetIds.length); // Optionally pick a second color for details var detailColorIdx = Math.floor(Math.random() * colorAssetIds.length); // All animals are centered on the screen var centerX = 2048 / 2; var centerY = 2732 / 2 + 100; // visually below the name // Helper for animal part drawing function drawAnimalPart(opts) { // opts: {shape, color, dx, dy, w, h, alpha, z, outline, assetIdOverride} var assetId = opts.assetIdOverride || colorAssetIds[opts.color % colorAssetIds.length]; var asset = LK.getAsset(assetId, { shape: opts.shape, anchorX: 0.5, anchorY: 0.5 }); asset.x = centerX + opts.dx; asset.y = centerY + opts.dy; asset.width = opts.w; asset.height = opts.h; asset.alpha = typeof opts.alpha === "number" ? opts.alpha : 1; if (opts.outline) { asset.lineWidth = opts.outline.width; asset.lineColor = opts.outline.color; } if (typeof opts.z === "number") asset.zIndex = opts.z; game.addChild(asset); currentPatterns.push(asset); return asset; } // Pick a random base color for the animal var baseColorIdx = Math.floor(Math.random() * colorAssetIds.length); var detailColorIdx = Math.floor(Math.random() * colorAssetIds.length); var outline = { width: 8, color: 0x222222 }; var main = baseColorIdx, detail = detailColorIdx; var black = colorAssetIds.indexOf("siyah"); var white = colorAssetIds.indexOf("beyaz") >= 0 ? colorAssetIds.indexOf("beyaz") : black; // Draw the full body of the animal using all defined parts in animalShapes var animalParts = animalShapes[animalIdx]; for (var i = 0; i < animalParts.length; i++) { var part = animalParts[i]; // Default to ellipse for most animal parts, but you could use box for some if desired var shapeType = "ellipse"; // Eyes: always black, smaller, and on top var isEye = typeof part.colorIdx === "number" && part.colorIdx === 2; var colorIdx = isEye ? black : typeof part.colorIdx === "number" ? part.colorIdx : main; var alpha = 1; var z = i + 1; var w = 100 * part.scale; var h = 100 * part.scale; // If this is a tail or limb, make it a bit longer if (i === animalParts.length - 1 && animalParts.length > 4) { h = 140 * part.scale; w = 60 * part.scale; } // Eyes: smaller if (isEye) { w = h = 32 * part.scale; z = 100 + i; } drawAnimalPart({ shape: shapeType, color: colorIdx, dx: part.dx, dy: part.dy, w: w, h: h, alpha: alpha, z: z, outline: outline }); } }; // Handle "Clear" button tap: remove the patterns and name clearBtn.down = function (x, y, obj) { if (currentPatterns && currentPatterns.length) { for (var i = 0; i < currentPatterns.length; i++) { currentPatterns[i].destroy(); } currentPatterns = []; } if (currentNameGroup) { currentNameGroup.destroy(); currentNameGroup = null; } }; // No dragging or move/up handlers needed, as only one name is shown at a time; // Turkish color names: beyaz, sarı, turuncu, kırmızı, mor, mavi, yeşil, kahverengi, gri, siyah, pembe, bej, turkuaz, lacivert, bordo, altın, gümüş, bronz, mercan, zeytin yeşili, füme, lila, eflatun, krem, ten rengi, haki, camgöbeği, magenta, çivit mavisi, vişne çürüğü, kobalt mavisi, nane yeşili, lavanta
===================================================================
--- original.js
+++ change.js
@@ -2750,10 +2750,8 @@
// Pick a random base color for the animal
var baseColorIdx = Math.floor(Math.random() * colorAssetIds.length);
// Optionally pick a second color for details
var detailColorIdx = Math.floor(Math.random() * colorAssetIds.length);
- // Place animal parts using a more accurate, per-animal layout for realism
- // Each animal is drawn with a unique silhouette using ellipses and boxes for body, head, limbs, tail, ears, wings, beak, etc.
// All animals are centered on the screen
var centerX = 2048 / 2;
var centerY = 2732 / 2 + 100; // visually below the name
// Helper for animal part drawing
@@ -2781,256 +2779,51 @@
}
// Pick a random base color for the animal
var baseColorIdx = Math.floor(Math.random() * colorAssetIds.length);
var detailColorIdx = Math.floor(Math.random() * colorAssetIds.length);
- // For each animal, draw a unique silhouette
- // We'll use animalName to select the drawing logic
var outline = {
width: 8,
color: 0x222222
};
var main = baseColorIdx,
detail = detailColorIdx;
var black = colorAssetIds.indexOf("siyah");
var white = colorAssetIds.indexOf("beyaz") >= 0 ? colorAssetIds.indexOf("beyaz") : black;
- function ellipse(dx, dy, w, h, color, alpha, z) {
- return drawAnimalPart({
- shape: "ellipse",
- color: color,
- dx: dx,
- dy: dy,
+ // Draw the full body of the animal using all defined parts in animalShapes
+ var animalParts = animalShapes[animalIdx];
+ for (var i = 0; i < animalParts.length; i++) {
+ var part = animalParts[i];
+ // Default to ellipse for most animal parts, but you could use box for some if desired
+ var shapeType = "ellipse";
+ // Eyes: always black, smaller, and on top
+ var isEye = typeof part.colorIdx === "number" && part.colorIdx === 2;
+ var colorIdx = isEye ? black : typeof part.colorIdx === "number" ? part.colorIdx : main;
+ var alpha = 1;
+ var z = i + 1;
+ var w = 100 * part.scale;
+ var h = 100 * part.scale;
+ // If this is a tail or limb, make it a bit longer
+ if (i === animalParts.length - 1 && animalParts.length > 4) {
+ h = 140 * part.scale;
+ w = 60 * part.scale;
+ }
+ // Eyes: smaller
+ if (isEye) {
+ w = h = 32 * part.scale;
+ z = 100 + i;
+ }
+ drawAnimalPart({
+ shape: shapeType,
+ color: colorIdx,
+ dx: part.dx,
+ dy: part.dy,
w: w,
h: h,
alpha: alpha,
z: z,
outline: outline
});
}
- function box(dx, dy, w, h, color, alpha, z) {
- return drawAnimalPart({
- shape: "box",
- color: color,
- dx: dx,
- dy: dy,
- w: w,
- h: h,
- alpha: alpha,
- z: z,
- outline: outline
- });
- }
- function eye(dx, dy, size, z) {
- return drawAnimalPart({
- shape: "ellipse",
- color: black,
- dx: dx,
- dy: dy,
- w: size,
- h: size,
- alpha: 1,
- z: z,
- outline: outline
- });
- }
- function beak(dx, dy, w, h, z) {
- return drawAnimalPart({
- shape: "ellipse",
- color: colorAssetIds.indexOf("sari"),
- dx: dx,
- dy: dy,
- w: w,
- h: h,
- alpha: 1,
- z: z,
- outline: outline
- });
- }
- // --- Animal-specific drawing logic ---
- if (animalName === "Dog") {
- // Body
- ellipse(0, 120, 260, 180, main, 1, 1);
- // Head
- ellipse(0, 0, 180, 140, main, 1, 2);
- // Ears
- ellipse(-70, -70, 60, 90, detail, 1, 3);
- ellipse(70, -70, 60, 90, detail, 1, 3);
- // Eyes
- eye(-35, 10, 36, 4);
- eye(35, 10, 36, 4);
- // Nose
- ellipse(0, 50, 32, 24, black, 1, 5);
- // Tail
- ellipse(110, 160, 60, 30, detail, 1, 0);
- } else if (animalName === "Cat") {
- ellipse(0, 100, 220, 150, main, 1, 1);
- ellipse(0, 0, 140, 120, main, 1, 2);
- // Ears (triangles, but use ellipses for now)
- ellipse(-60, -70, 50, 70, detail, 1, 3);
- ellipse(60, -70, 50, 70, detail, 1, 3);
- eye(-28, 10, 32, 4);
- eye(28, 10, 32, 4);
- // Nose
- ellipse(0, 40, 20, 16, black, 1, 5);
- // Tail
- ellipse(90, 120, 60, 30, detail, 1, 0);
- } else if (animalName === "Horse") {
- ellipse(0, 140, 260, 180, main, 1, 1);
- ellipse(0, 0, 120, 160, main, 1, 2);
- // Ears
- ellipse(-40, -90, 24, 48, detail, 1, 3);
- ellipse(40, -90, 24, 48, detail, 1, 3);
- // Eyes
- eye(-22, -20, 24, 4);
- eye(22, -20, 24, 4);
- // Muzzle
- ellipse(0, 70, 40, 60, detail, 1, 5);
- // Tail
- ellipse(0, 240, 40, 80, detail, 1, 0);
- } else if (animalName === "Elephant") {
- ellipse(0, 140, 320, 200, main, 1, 1);
- ellipse(0, 0, 200, 160, main, 1, 2);
- // Ears
- ellipse(-100, -40, 90, 120, detail, 1, 3);
- ellipse(100, -40, 90, 120, detail, 1, 3);
- // Eyes
- eye(-40, 10, 28, 4);
- eye(40, 10, 28, 4);
- // Trunk
- ellipse(0, 110, 40, 120, detail, 1, 5);
- // Tusks (white ellipses)
- drawAnimalPart({
- shape: "ellipse",
- color: white,
- dx: -30,
- dy: 110,
- w: 18,
- h: 40,
- alpha: 1,
- z: 6,
- outline: outline
- });
- drawAnimalPart({
- shape: "ellipse",
- color: white,
- dx: 30,
- dy: 110,
- w: 18,
- h: 40,
- alpha: 1,
- z: 6,
- outline: outline
- });
- } else if (animalName === "Lion") {
- // Body
- ellipse(0, 120, 260, 180, main, 1, 1);
- // Head
- ellipse(0, 0, 160, 140, main, 1, 2);
- // Mane
- ellipse(0, 0, 220, 180, detail, 0.7, 0);
- // Ears
- ellipse(-60, -60, 50, 60, detail, 1, 3);
- ellipse(60, -60, 50, 60, detail, 1, 3);
- // Eyes
- eye(-28, 10, 32, 4);
- eye(28, 10, 32, 4);
- // Nose
- ellipse(0, 40, 24, 18, black, 1, 5);
- // Tail
- ellipse(100, 160, 60, 30, detail, 1, 0);
- } else if (animalName === "Tiger") {
- // Body
- ellipse(0, 120, 260, 180, main, 1, 1);
- // Head
- ellipse(0, 0, 160, 140, main, 1, 2);
- // Ears
- ellipse(-60, -60, 50, 60, detail, 1, 3);
- ellipse(60, -60, 50, 60, detail, 1, 3);
- // Eyes
- eye(-28, 10, 32, 4);
- eye(28, 10, 32, 4);
- // Nose
- ellipse(0, 40, 24, 18, black, 1, 5);
- // Tail
- ellipse(100, 160, 60, 30, detail, 1, 0);
- // Stripes (black boxes)
- for (var s = -80; s <= 80; s += 40) {
- box(s, 120, 12, 60, black, 0.7, 6);
- }
- } else if (animalName === "Bear") {
- ellipse(0, 140, 260, 180, main, 1, 1);
- ellipse(0, 0, 160, 140, main, 1, 2);
- ellipse(-60, -60, 60, 60, detail, 1, 3);
- ellipse(60, -60, 60, 60, detail, 1, 3);
- eye(-28, 10, 32, 4);
- eye(28, 10, 32, 4);
- ellipse(0, 40, 32, 24, black, 1, 5);
- ellipse(0, 240, 40, 80, detail, 1, 0);
- } else if (animalName === "Whale") {
- ellipse(0, 160, 340, 180, main, 1, 1);
- ellipse(0, 0, 220, 120, main, 1, 2);
- // Fins
- ellipse(-120, 80, 60, 40, detail, 1, 3);
- ellipse(120, 80, 60, 40, detail, 1, 3);
- // Tail
- ellipse(0, 260, 120, 40, detail, 1, 0);
- // Eye
- eye(-60, 10, 24, 4);
- } else if (animalName === "Dolphin") {
- ellipse(0, 120, 260, 120, main, 1, 1);
- ellipse(0, 0, 160, 80, main, 1, 2);
- // Fins
- ellipse(-80, 60, 40, 24, detail, 1, 3);
- ellipse(80, 60, 40, 24, detail, 1, 3);
- // Tail
- ellipse(0, 200, 80, 30, detail, 1, 0);
- // Eye
- eye(-40, 0, 18, 4);
- } else if (animalName === "Monkey") {
- ellipse(0, 100, 220, 150, main, 1, 1);
- ellipse(0, 0, 140, 120, main, 1, 2);
- ellipse(-60, -60, 50, 70, detail, 1, 3);
- ellipse(60, -60, 50, 70, detail, 1, 3);
- eye(-28, 10, 32, 4);
- eye(28, 10, 32, 4);
- ellipse(0, 40, 32, 24, black, 1, 5);
- ellipse(90, 120, 60, 30, detail, 1, 0);
- } else if (animalName === "Bat") {
- ellipse(0, 80, 180, 80, main, 1, 1);
- ellipse(0, 0, 120, 80, main, 1, 2);
- // Wings
- ellipse(-120, 0, 120, 40, detail, 1, 3);
- ellipse(120, 0, 120, 40, detail, 1, 3);
- eye(-28, 10, 32, 4);
- eye(28, 10, 32, 4);
- } else if (animalName === "Rabbit") {
- ellipse(0, 80, 120, 80, main, 1, 1);
- ellipse(0, 0, 80, 60, main, 1, 2);
- // Ears
- ellipse(-30, -90, 24, 80, detail, 1, 3);
- ellipse(30, -90, 24, 80, detail, 1, 3);
- eye(-18, 10, 18, 4);
- eye(18, 10, 18, 4);
- // Nose
- ellipse(0, 30, 12, 10, black, 1, 5);
- } else if (animalName === "Eagle" || animalName === "Owl" || animalName === "Sparrow" || animalName === "Parrot" || animalName === "Pigeon" || animalName === "Hummingbird" || animalName === "Duck" || animalName === "Swan" || animalName === "Crow" || animalName === "Robin" || animalName === "Albatross" || animalName === "Flamingo") {
- // Bird body
- ellipse(0, 60, 120, 80, main, 1, 1);
- // Head
- ellipse(0, -40, 60, 60, main, 1, 2);
- // Beak
- beak(0, -80, 32, 18, 3);
- // Wings
- ellipse(-60, 40, 60, 30, detail, 1, 4);
- ellipse(60, 40, 60, 30, detail, 1, 4);
- // Eyes
- eye(-16, -50, 14, 5);
- eye(16, -50, 14, 5);
- } else {
- // Fallback: draw as a big ellipse and two eyes
- ellipse(0, 80, 180, 120, main, 1, 1);
- eye(-28, 10, 32, 2);
- eye(28, 10, 32, 2);
- }
};
// Handle "Clear" button tap: remove the patterns and name
clearBtn.down = function (x, y, obj) {
if (currentPatterns && currentPatterns.length) {