Back

SVG Drawing Match #1026

Mar 13, 2025
GPT-4o
Challenge Creator

Creative Challenge

"Robot octopus making coffee, steampunk style"

SVG by Claude 3.7 Sonnet Thinking (2025-02-19)
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 300 300">
  <!-- Definitions -->
  <defs>
    <!-- Gradients -->
    <linearGradient id="brassGradient" x1="0%" y1="0%" x2="100%" y2="100%">
      <stop offset="0%" stop-color="#e6c588" />
      <stop offset="50%" stop-color="#b38728" />
      <stop offset="100%" stop-color="#e6c588" />
    </linearGradient>
    
    <linearGradient id="copperGradient" x1="0%" y1="0%" x2="100%" y2="100%">
      <stop offset="0%" stop-color="#b87333" />
      <stop offset="50%" stop-color="#da8a67" />
      <stop offset="100%" stop-color="#b87333" />
    </linearGradient>
    
    <linearGradient id="darkMetalGradient" x1="0%" y1="0%" x2="100%" y2="100%">
      <stop offset="0%" stop-color="#444" />
      <stop offset="50%" stop-color="#222" />
      <stop offset="100%" stop-color="#444" />
    </linearGradient>
    
    <linearGradient id="coffeeGradient" x1="0%" y1="0%" x2="0%" y2="100%">
      <stop offset="0%" stop-color="#4b2b00" />
      <stop offset="100%" stop-color="#281500" />
    </linearGradient>
    
    <linearGradient id="steamGradient" x1="0%" y1="0%" x2="0%" y2="100%">
      <stop offset="0%" stop-color="white" stop-opacity="0.9" />
      <stop offset="100%" stop-color="white" stop-opacity="0" />
    </linearGradient>
    
    <!-- Patterns -->
    <pattern id="gearPattern" patternUnits="userSpaceOnUse" width="40" height="40">
      <circle cx="20" cy="20" r="18" fill="url(#brassGradient)" />
      <circle cx="20" cy="20" r="14" fill="url(#copperGradient)" />
      <circle cx="20" cy="20" r="5" fill="#333" />
      <path d="M20,0 L23,8 L33,3 L30,14 L40,20 L30,26 L33,37 L23,32 L20,40 L17,32 L7,37 L10,26 L0,20 L10,14 L7,3 L17,8 Z" 
            fill="url(#brassGradient)" opacity="0.7" />
    </pattern>
    
    <pattern id="smallGearPattern" patternUnits="userSpaceOnUse" width="20" height="20">
      <circle cx="10" cy="10" r="9" fill="url(#brassGradient)" />
      <circle cx="10" cy="10" r="7" fill="url(#copperGradient)" />
      <circle cx="10" cy="10" r="2" fill="#333" />
      <path d="M10,0 L12,4 L16,2 L15,7 L20,10 L15,13 L16,18 L12,16 L10,20 L8,16 L4,18 L5,13 L0,10 L5,7 L4,2 L8,4 Z" 
            fill="url(#brassGradient)" opacity="0.7" />
    </pattern>
    
    <!-- Filters -->
    <filter id="glowFilter" x="-20%" y="-20%" width="140%" height="140%">
      <feGaussianBlur stdDeviation="2" result="blur" />
      <feComposite in="SourceGraphic" in2="blur" operator="over" />
    </filter>
    
    <!-- Reusable Components -->
    <g id="tentacleJoint">
      <circle r="6" fill="url(#brassGradient)" stroke="#333" stroke-width="0.5" />
      <circle r="4" fill="url(#darkMetalGradient)" />
      <circle r="2" fill="url(#copperGradient)" />
      <line x1="-4" y1="0" x2="4" y2="0" stroke="#333" stroke-width="0.5" />
      <line x1="0" y1="-4" x2="0" y2="4" stroke="#333" stroke-width="0.5" />
    </g>
  </defs>
  
  <!-- Background -->
  <rect x="0" y="0" width="300" height="300" fill="#2a2a2a" />
  <circle cx="150" cy="150" r="130" fill="#333" opacity="0.7" />
  
  <!-- Background Gears -->
  <g opacity="0.3">
    <circle cx="40" cy="40" r="25" fill="url(#gearPattern)">
      <animateTransform attributeName="transform" type="rotate" from="0 40 40" to="360 40 40" dur="60s" repeatCount="indefinite" />
    </circle>
    <circle cx="260" cy="260" r="30" fill="url(#gearPattern)">
      <animateTransform attributeName="transform" type="rotate" from="0 260 260" to="-360 260 260" dur="90s" repeatCount="indefinite" />
    </circle>
    <circle cx="240" cy="40" r="20" fill="url(#gearPattern)">
      <animateTransform attributeName="transform" type="rotate" from="0 240 40" to="360 240 40" dur="45s" repeatCount="indefinite" />
    </circle>
    <circle cx="50" cy="240" r="22" fill="url(#gearPattern)">
      <animateTransform attributeName="transform" type="rotate" from="0 50 240" to="-360 50 240" dur="75s" repeatCount="indefinite" />
    </circle>
  </g>
  
  <!-- Octopus Head/Body -->
  <g id="robotHead">
    <!-- Main dome -->
    <circle cx="150" cy="120" r="50" fill="url(#copperGradient)" stroke="#333" stroke-width="2" />
    <circle cx="150" cy="120" r="45" fill="url(#brassGradient)" stroke="#333" stroke-width="1" />
    <circle cx="150" cy="120" r="40" fill="url(#darkMetalGradient)" />
    
    <!-- Face plate -->
    <ellipse cx="150" cy="115" rx="30" ry="35" fill="url(#brassGradient)" stroke="#333" stroke-width="1" />
    
    <!-- Eyes -->
    <g id="leftEye">
      <circle cx="135" cy="105" r="10" fill="#000" />
      <circle cx="135" cy="105" r="8" fill="#111" />
      <circle cx="135" cy="105" r="6" fill="#0e1a2d" />
      <circle cx="135" cy="105" r="3" fill="#1e3a5d" />
      <circle cx="137" cy="103" r="2" fill="#6ba8ff" filter="url(#glowFilter)" />
    </g>
    
    <g id="rightEye">
      <circle cx="165" cy="105" r="10" fill="#000" />
      <circle cx="165" cy="105" r="8" fill="#111" />
      <circle cx="165" cy="105" r="6" fill="#0e1a2d" />
      <circle cx="165" cy="105" r="3" fill="#1e3a5d" />
      <circle cx="167" cy="103" r="2" fill="#6ba8ff" filter="url(#glowFilter)" />
    </g>
    
    <!-- Mouth/grill -->
    <rect x="135" y="125" width="30" height="10" rx="2" ry="2" fill="#111" />
    <line x1="138" y1="127" x2="138" y2="133" stroke="#555" stroke-width="1" />
    <line x1="142" y1="127" x2="142" y2="133" stroke="#555" stroke-width="1" />
    <line x1="146" y1="127" x2="146" y2="133" stroke="#555" stroke-width="1" />
    <line x1="150" y1="127" x2="150" y2="133" stroke="#555" stroke-width="1" />
    <line x1="154" y1="127" x2="154" y2="133" stroke="#555" stroke-width="1" />
    <line x1="158" y1="127" x2="158" y2="133" stroke="#555" stroke-width="1" />
    <line x1="162" y1="127" x2="162" y2="133" stroke="#555" stroke-width="1" />
    
    <!-- Pressure valve -->
    <circle cx="150" cy="70" r="8" fill="url(#brassGradient)" stroke="#333" stroke-width="1" />
    <rect x="148" y="62" width="4" height="6" fill="#333" />
    
    <!-- Pressure gauge -->
    <circle cx="175" cy="85" r="12" fill="url(#brassGradient)" stroke="#333" stroke-width="1.5" />
    <circle cx="175" cy="85" r="10" fill="white" stroke="#777" stroke-width="0.5" />
    <path d="M169,85 L181,85 M175,79 L175,91" stroke="#777" stroke-width="0.5" />
    <path d="M175,85 L180,80" stroke="red" stroke-width="1.5" stroke-linecap="round">
      <animateTransform attributeName="transform" type="rotate" from="0 175 85" to="30 175 85" dur="2s" repeatCount="indefinite" values="0 175 85; 30 175 85; 0 175 85; -20 175 85; 0 175 85" keyTimes="0; 0.25; 0.5; 0.75; 1"/>
    </path>
    <circle cx="175" cy="85" r="2" fill="#333" />
    
    <!-- Control panel -->
    <rect x="120" cy="85" width="20" height="12" rx="2" ry="2" fill="url(#darkMetalGradient)" stroke="#333" stroke-width="0.5" />
    <circle cx="125" cy="91" r="2" fill="red" />
    <circle cx="130" cy="91" r="2" fill="yellow" />
    <circle cx="135" cy="91" r="2" fill="green" />
    
    <!-- Rivets -->
    <circle cx="130" cy="90" r="2" fill="url(#brassGradient)" stroke="#333" stroke-width="0.5" />
    <circle cx="170" cy="90" r="2" fill="url(#brassGradient)" stroke="#333" stroke-width="0.5" />
    <circle cx="130" cy="140" r="2" fill="url(#brassGradient)" stroke="#333" stroke-width="0.5" />
    <circle cx="170" cy="140" r="2" fill="url(#brassGradient)" stroke="#333" stroke-width="0.5" />
    
    <!-- Decorative gears -->
    <circle cx="115" cy="165" r="10" fill="url(#smallGearPattern)">
      <animateTransform attributeName="transform" type="rotate" from="0 115 165" to="360 115 165" dur="15s" repeatCount="indefinite" />
    </circle>
    <circle cx="185" cy="165" r="10" fill="url(#smallGearPattern)">
      <animateTransform attributeName="transform" type="rotate" from="0 185 165" to="-360 185 165" dur="15s" repeatCount="indefinite" />
    </circle>
  </g>
  
  <!-- Tentacles -->
  <!-- Tentacle 1 - Coffee Grinder -->
  <path d="M115,155 C95,170 70,180 40,165" fill="none" stroke="url(#copperGradient)" stroke-width="10" stroke-linecap="round" />
  <use href="#tentacleJoint" x="95" y="165" />
  <use href="#tentacleJoint" x="70" y="175" />
  
  <!-- Grinder mechanism -->
  <g id="grinder">
    <circle cx="40" cy="165" r="15" fill="url(#brassGradient)" stroke="#333" stroke-width="1" />
    <circle cx="40" cy="165" r="12" fill="url(#darkMetalGradient)" />
    <circle cx="40" cy="165" r="8" fill="url(#brassGradient)">
      <animateTransform attributeName="transform" type="rotate" from="0 40 165" to="360 40 165" dur="2s" repeatCount="indefinite" />
    </circle>
    <path d="M32,165 L48,165 M40,157 L40,173" stroke="#333" stroke-width="1.5" transform="rotate(45, 40, 165)">
      <animateTransform attributeName="transform" type="rotate" from="0 40 165" to="360 40 165" dur="2s" repeatCount="indefinite" />
    </path>
    
    <!-- Coffee beans entering grinder -->
    <path d="M40,145 C45,150 35,150 40,155" fill="none" stroke="#4b2b00" stroke-width="5" stroke-linecap="round" />
    <ellipse cx="40" cy="145" rx="5" ry="3" fill="#4b2b00" />
    
    <!-- Coffee powder output -->
    <rect x="30" y="178" width="20" height="5" rx="2" ry="2" fill="#4b2b00" />
    <path d="M35,183 C40,188 40,188 45,183" fill="#4b2b00" />
  </g>
  
  <!-- Tentacle 2 - Coffee Cup Holder -->
  <path d="M125,165 C110,190 100,210 110,230" fill="none" stroke="url(#copperGradient)" stroke-width="10" stroke-linecap="round" />
  <use href="#tentacleJoint" x="110" y="190" />
  <path d="M110,230 C120,235 130,235 140,230" fill="none" stroke="url(#copperGradient)" stroke-width="8" stroke-linecap="round" />
  <path d="M125,230 C125,225 125,220 125,215" fill="none" stroke="url(#copperGradient)" stroke-width="4" stroke-linecap="round" />
  
  <!-- Coffee cup -->
  <g id="coffeeCup">
    <path d="M105,215 Q105,240 125,240 Q145,240 145,215 L140,205 Q125,200 110,205 Z" fill="url(#brassGradient)" stroke="#333" stroke-width="1" />
    <path d="M110,205 L140,205" fill="none" stroke="#333" stroke-width="1" />
    <ellipse cx="125" cy="215" rx="15" ry="10" fill="url(#coffeeGradient)" />
    
    <!-- Cup handle -->
    <path d="M145,215 Q155,215 155,225 Q155,235 145,235" fill="none" stroke="url(#brassGradient)" stroke-width="3" stroke-linecap="round" />
    
    <!-- Steam from coffee -->
    <g opacity="0.8">
      <path d="M125,205 C130,190 120,185 125,175 C130,165 120,155 125,145" fill="none" stroke="url(#steamGradient)" stroke-width="5" stroke-linecap="round">
        <animate attributeName="d" 
                 values="M125,205 C130,190 120,185 125,175 C130,165 120,155 125,145;
                         M125,205 C120,190 130,180 125,170 C120,160 130,150 125,140;
                         M125,205 C130,190 120,185 125,175 C130,165 120,155 125,145" 
                 dur="5s" 
                 repeatCount="indefinite" />
      </path>
      
      <path d="M115,205 C110,195 115,185 110,175 C105,165 110,155 105,145" fill="none" stroke="url(#steamGradient)" stroke-width="4" stroke-linecap="round">
        <animate attributeName="d" 
                 values="M115,205 C110,195 115,185 110,175 C105,165 110,155 105,145;
                         M115,205 C115,190 105,180 110,170 C115,160 105,150 110,140;
                         M115,205 C110,195 115,185 110,175 C105,165 110,155 105,145" 
                 dur="6s" 
                 repeatCount="indefinite" />
      </path>
    </g>
  </g>
  
  <!-- Tentacle 3 - Milk Frother -->
  <path d="M180,150 C200,170 210,200 200,220" fill="none" stroke="url(#copperGradient)" stroke-width="10" stroke-linecap="round" />
  <use href="#tentacleJoint" x="200" y="170" />
  <use href="#tentacleJoint" x="210" y="200" />
  
  <!-- Milk frother mechanism -->
  <g id="milkFrother">
    <rect x="190" y="220" width="20" height="25" rx="3" ry="3" fill="url(#brassGradient)" stroke="#333" stroke-width="1" />
    <path d="M200,220 L200,210" fill="none" stroke="url(#copperGradient)" stroke-width="3" stroke-linecap="round" />
    <rect x="195" y="225" width="10" height="15" rx="2" ry="2" fill="url(#darkMetalGradient)" />
    <path d="M192,240 Q200,230 208,240" fill="none" stroke="#333" stroke-width="1" />
    <path d="M192,235 Q200,225 208,235" fill="none" stroke="#333" stroke-width="1" />
    
    <!-- Milk container -->
    <path d="M185,245 L215,245 L210,265 Q200,270 190,265 Z" fill="#e0e0e0" stroke="#333" stroke-width="0.5" />
    <path d="M190,245 L190,265" fill="none" stroke="#333" stroke-width="0.5" opacity="0.3" />
    <path d="M200,245 L200,268" fill="none" stroke="#333" stroke-width="0.5" opacity="0.3" />
    <path d="M210,245 L210,265" fill="none" stroke="#333" stroke-width="0.5" opacity="0.3" />
    
    <!-- Milk foam -->
    <path d="M200,255 Q205,250 210,255 Q215,260 210,265 Q200,270 190,265 Q185,260 190,255 Q195,250 200,255" fill="white" opacity="0.9" />
    
    <!-- Bubbles in the milk -->
    <circle cx="195" cy="260" r="2" fill="white" opacity="0.8" />
    <circle cx="205" cy="262" r="1.5" fill="white" opacity="0.8" />
    <circle cx="200" cy="258" r="1" fill="white" opacity="0.8" />
  </g>
  
  <!-- Tentacle 4 - Bean Selector -->
  <path d="M190,130 C220,140 245,120 250,90" fill="none" stroke="url(#copperGradient)" stroke-width="10" stroke-linecap="round" />
  <use href="#tentacleJoint" x="220" y="130" />
  
  <!-- Bean selector mechanism -->
  <g id="beanSelector">
    <circle cx="250" cy="90" r="15" fill="url(#brassGradient)" stroke="#333" stroke-width="1" />
    <circle cx="250" cy="90" r="12" fill="url(#darkMetalGradient)" />
    
    <!-- Coffee beans displayed -->
    <g transform="rotate(-15, 250, 90)">
      <ellipse cx="250" cy="85" rx="4" ry="3" fill="#3a1f00" />
      <ellipse cx="250" cy="90" rx="4" ry="3" fill="#4b2b00" />
      <ellipse cx="250" cy="95" rx="4" ry="3" fill="#683c00" />
      
      <!-- Bean details -->
      <path d="M248,85 C249,83 251,83 252,85" fill="none" stroke="#2a1a00" stroke-width="0.5" />
      <path d="M248,90 C249,88 251,88 252,90" fill="none" stroke="#2a1a00" stroke-width="0.5" />
      <path d="M248,95 C249,93 251,93 252,95" fill="none" stroke="#2a1a00" stroke-width="0.5" />
      
      <!-- Rotation marker -->
      <rect x="249" y="80" width="2" height="2" fill="red" />
      <animateTransform attributeName="transform" type="rotate" from="0 250 90" to="360 250 90" dur="10s" repeatCount="indefinite" />
    </g>
  </g>
  
  <!-- Tentacle 5 - Pressure Gauge -->
  <path d="M110,110 C80,95 60,85 40,90" fill="none" stroke="url(#copperGradient)" stroke-width="10" stroke-linecap="round" />
  <use href="#tentacleJoint" x="80" y="95" />
  
  <!-- Pressure gauge -->
  <g id="pressureGauge">
    <circle cx="40" cy="90" r="15" fill="url(#brassGradient)" stroke="#333" stroke-width="2" />
    <circle cx="40" cy="90" r="12" fill="white" />
    
    <!-- Gauge markings -->
    <path d="M40,82 L40,78" stroke="#333" stroke-width="1" />
    <path d="M40,102 L40,98" stroke="#333" stroke-width="1" />
    <path d="M32,90 L28,90" stroke="#333" stroke-width="1" />
    <path d="M52,90 L48,90" stroke="#333" stroke-width="1" />
    <path d="M33.5,83.5 L30.5,80.5" stroke="#333" stroke-width="0.5" />
    <path d="M46.5,83.5 L49.5,80.5" stroke="#333" stroke-width="0.5" />
    <path d="M33.5,96.5 L30.5,99.5" stroke="#333" stroke-width="0.5" />
    <path d="M46.5,96.5 L49.5,99.5" stroke="#333" stroke-width="0.5" />
    
    <!-- Gauge numbers -->
    <text x="27" y="90" font-family="Arial" font-size="4" fill="#333">0</text>
    <text x="51" y="90" font-family="Arial" font-size="4" fill="#333">10</text>
    <text x="39" y="78" font-family="Arial" font-size="4" fill="#333">5</text>
    
    <!-- Gauge needle -->
    <path d="M40,90 L46,84" fill="none" stroke="red" stroke-width="1" stroke-linecap="round">
      <animateTransform attributeName="transform" type="rotate" 
                        from="0 40 90" to="70 40 90" dur="3s" 
                        values="0 40 90; 70 40 90; 60 40 90; 65 40 90; 30 40 90; 0 40 90"
                        keyTimes="0; 0.2; 0.4; 0.6; 0.8; 1"
                        repeatCount="indefinite" />
    </path>
    
    <!-- Central screw -->
    <circle cx="40" cy="90" r="2" fill="#333" />
    <circle cx="40" cy="90" r="1" fill="#555" />
    
    <!-- Pressure release valve -->
    <rect x="35" y="70" width="10" height="5" rx="2" ry="2" fill="url(#brassGradient)" stroke="#333" stroke-width="0.5" />
    
    <!-- Steam occasionally releasing -->
    <path d="M40,70 C45,65 35,60 40,55" fill="none" stroke="url(#steamGradient)" stroke-width="3" stroke-linecap="round" opacity="0">
      <animate attributeName="opacity" values="0;0;0.8;0.5;0" dur="10s" repeatCount="indefinite" />
    </path>
  </g>
  
  <!-- Tentacle 6 - Coffee Filter -->
  <path d="M130,160 C140,185 150,210 170,220" fill="none" stroke="url(#copperGradient)" stroke-width="10" stroke-linecap="round" />
  <use href="#tentacleJoint" x="140" y="185" />
  <use href="#tentacleJoint" x="150" y="210" />
  <path d="M170,220 L170,235" fill="none" stroke="url(#copperGradient)" stroke-width="6" stroke-linecap="round" />
  
  <!-- Filter mechanism -->
  <g id="coffeeFilter">
    <path d="M155,235 L185,235 L180,255 Q170,260 160,255 Z" fill="url(#brassGradient)" stroke="#333" stroke-width="1" />
    <path d="M160,235 L165,255 Q170,258 175,255 L180,235" fill="none" stroke="#333" stroke-width="0.5" opacity="0.5" />
    
    <!-- Coffee grounds in filter -->
    <path d="M165,245 Q170,250 175,245" fill="#4b2b00" />
    
    <!-- Coffee dripping -->
    <path d="M170,255 L170,265" stroke="#4b2b00" stroke-width="2" stroke-dasharray="2,2">
      <animate attributeName="stroke-dashoffset" from="0" to="4" dur="1s" repeatCount="indefinite" />
    </path>
    <path d="M168,265 L172,265 L171,270 Q170,271 169,270 Z" fill="#4b2b00">
      <animate attributeName="opacity" values="1;0" dur="1s" repeatCount="indefinite" />
    </path>
  </g>
  
  <!-- Tentacle 7 - Control Panel -->
  <path d="M170,100 C200,80 220,60 230,30" fill="none" stroke="url(#copperGradient)" stroke-width="10" stroke-linecap="round" />
  <use href="#tentacleJoint" x="200" y="80" />
  <use href="#tentacleJoint" x="220" y="60" />
  
  <!-- Control panel -->
  <g id="controlPanel">
    <rect x="210" y="15" width="40" height="30" rx="5" ry="5" fill="url(#brassGradient)" stroke="#333" stroke-width="1" />
    <rect x="215" y="20" width="30" height="15" rx="2" ry="2" fill="url(#darkMetalGradient)" />
    
    <!-- Digital display -->
    <rect x="217" y="22" width="26" height="11" fill="#243342" />
    <text x="220" y="30" font-family="monospace" font-size="6" fill="#00ff88">93.5°C</text>
    
    <!-- Control buttons -->
    <circle cx="220" cy="40" r="3" fill="red" />
    <circle cx="230" cy="40" r="3" fill="green" />
    <circle cx="240" cy="40" r="3" fill="blue" />
    
    <!-- Blinking light -->
    <circle cx="245" cy="20" r="2" fill="red">
      <animate attributeName="opacity" values="1;0.2;1" dur="2s" repeatCount="indefinite" />
    </circle>
  </g>
  
  <!-- Tentacle 8 - Steam Wand -->
  <path d="M190,110 C220,100 235,80 240,60" fill="none" stroke="url(#copperGradient)" stroke-width="10" stroke-linecap="round" />
  <use href="#tentacleJoint" x="220" y="100" />
  <path d="M240,60 L250,40" fill="none" stroke="url(#copperGradient)" stroke-width="5" stroke-linecap="round" />
  
  <!-- Steam wand nozzle -->
  <g id="steamWand">
    <circle cx="250" cy="40" r="5" fill="url(#brassGradient)" stroke="#333" stroke-width="0.5" />
    <circle cx="250" cy="40" r="3" fill="url(#darkMetalGradient)" />
    <circle cx="250" cy="40" r="1" fill="#111" />
    
    <!-- Steam from wand -->
    <g opacity="0.8">
      <path d="M250,40 C255,30 245,25 250,15 C255,5 245,0 250,-10" fill="none" stroke="url(#steamGradient)" stroke-width="4" stroke-linecap="round">
        <animate attributeName="d" 
                 values="M250,40 C255,30 245,25 250,15 C255,5 245,0 250,-10;
                         M250,40 C245,30 255,20 250,10 C245,0 255,-5 250,-15;
                         M250,40 C255,30 245,25 250,15 C255,5 245,0 250,-10" 
                 dur="3s" 
                 repeatCount="indefinite" />
      </path>
      
      <path d="M250,40 C260,30 255,20 265,10 C270,0 260,-5 270,-15" fill="none" stroke="url(#steamGradient)" stroke-width="3" stroke-linecap="round" opacity="0.7">
        <animate attributeName="d" 
                 values="M250,40 C260,30 255,20 265,10 C270,0 260,-5 270,-15;
                         M250,40 C255,25 265,15 260,5 C255,-5 265,-15 260,-25;
                         M250,40 C260,30 255,20 265,10 C270,0 260,-5 270,-15" 
                 dur="4s" 
                 repeatCount="indefinite" />
      </path>
    </g>
  </g>
  
  <!-- Additional mechanical details -->
  <g opacity="0.8">
    <!-- Connecting pipes -->
    <path d="M115,130 C100,125 90,140 75,135" fill="none" stroke="url(#copperGradient)" stroke-width="3" stroke-linecap="round" />
    <path d="M185,130 C200,125 210,140 225,135" fill="none" stroke="url(#copperGradient)" stroke-width="3" stroke-linecap="round" />
    
    <!-- Small working gears -->
    <circle cx="95" cy="140" r="8" fill="url(#smallGearPattern)">
      <animateTransform attributeName="transform" type="rotate" from="0 95 140" to="360 95 140" dur="8s" repeatCount="indefinite" />
    </circle>
    <circle cx="205" cy="140" r="8" fill="url(#smallGearPattern)">
      <animateTransform attributeName="transform" type="rotate" from="0 205 140" to="-360 205 140" dur="8s" repeatCount="indefinite" />
    </circle>
    
    <!-- Coffee flow pipe -->
    <path d="M100,180 C120,190 130,185 150,195" fill="none" stroke="#4b2b00" stroke-width="3" stroke-linecap="round" stroke-dasharray="2,3">
      <animate attributeName="stroke-dashoffset" from="0" to="5" dur="1s" repeatCount="indefinite" />
    </path>
    
    <!-- Decorative bolts -->
    <circle cx="85" cy="120" r="2" fill="url(#brassGradient)" stroke="#333" stroke-width="0.5" />
    <circle cx="215" cy="120" r="2" fill="url(#brassGradient)" stroke="#333" stroke-width="0.5" />
    <circle cx="90" cy="200" r="2" fill="url(#brassGradient)" stroke="#333" stroke-width="0.5" />
    <circle cx="210" cy="200" r="2" fill="url(#brassGradient)" stroke="#333" stroke-width="0.5" />
  </g>
</svg>
SVG by Claude 3.5 Sonnet (2024-10-22)
<svg viewBox="0 0 300 300" xmlns="http://www.w3.org/2000/svg">
  <defs>
    <linearGradient id="metallic" x1="0%" y1="0%" x2="100%" y2="100%">
      <stop offset="0%" style="stop-color:#b8b8b8"/>
      <stop offset="50%" style="stop-color:#666"/>
      <stop offset="100%" style="stop-color:#999"/>
    </linearGradient>
    <pattern id="gears" patternUnits="userSpaceOnUse" width="30" height="30">
      <circle cx="15" cy="15" r="12" fill="none" stroke="#444" stroke-width="2"/>
      <path d="M15,3 L15,27 M3,15 L27,15" stroke="#444" stroke-width="2"/>
    </pattern>
  </defs>
  
  <!-- Body -->
  <ellipse cx="150" cy="150" rx="80" ry="70" fill="url(#metallic)" stroke="#333" stroke-width="3"/>
  
  <!-- Eyes -->
  <circle cx="130" cy="130" r="15" fill="#900"/>
  <circle cx="170" cy="130" r="15" fill="#900"/>
  <circle cx="130" cy="130" r="8" fill="#f00"/>
  <circle cx="170" cy="130" r="8" fill="#f00"/>
  
  <!-- Coffee Machine Parts -->
  <rect x="120" y="160" width="60" height="40" fill="url(#gears)" stroke="#333" stroke-width="2"/>
  <path d="M140,200 C140,220 160,220 160,200" fill="none" stroke="#333" stroke-width="4"/>
  
  <!-- Steam -->
  <path d="M150,160 C145,150 155,140 150,130" fill="none" stroke="#999" stroke-width="2" opacity="0.6">
    <animate attributeName="d" dur="3s" repeatCount="indefinite"
      values="M150,160 C145,150 155,140 150,130;
              M150,160 C155,150 145,140 150,130;
              M150,160 C145,150 155,140 150,130"/>
  </path>
  
  <!-- Tentacles -->
  <g id="tentacles">
    <path d="M90,150 C60,180 40,150 20,170" fill="none" stroke="url(#metallic)" stroke-width="8"/>
    <path d="M80,180 C60,200 30,190 10,200" fill="none" stroke="url(#metallic)" stroke-width="8"/>
    <path d="M110,200 C90,220 70,200 50,220" fill="none" stroke="url(#metallic)" stroke-width="8"/>
    <path d="M210,150 C240,180 260,150 280,170" fill="none" stroke="url(#metallic)" stroke-width="8"/>
    <path d="M220,180 C240,200 270,190 290,200" fill="none" stroke="url(#metallic)" stroke-width="8"/>
    <path d="M190,200 C210,220 230,200 250,220" fill="none" stroke="url(#metallic)" stroke-width="8"/>
  </g>
  
  <!-- Gears and Details -->
  <circle cx="90" cy="130" r="15" fill="url(#gears)">
    <animateTransform attributeName="transform" type="rotate" from="0 90 130" to="360 90 130" dur="10s" repeatCount="indefinite"/>
  </circle>
  <circle cx="210" cy="130" r="15" fill="url(#gears)">
    <animateTransform attributeName="transform" type="rotate" from="360 210 130" to="0 210 130" dur="10s" repeatCount="indefinite"/>
  </circle>
  
  <!-- Coffee Cup -->
  <path d="M130,240 L170,240 C180,240 190,230 190,220 L110,220 C110,230 120,240 130,240" fill="#brown" stroke="#333" stroke-width="2"/>
  
  <!-- Pipes and Tubes -->
  <path d="M80,100 C90,90 100,110 110,100" fill="none" stroke="#666" stroke-width="4" />
  <path d="M190,100 C200,90 210,110 220,100" fill="none" stroke="#666" stroke-width="4" />
</svg>
GPT-4o
Judge & Evaluator
The winner of this SVG challenge is Claude 3.7 Sonnet Thinking (2025-02-19) Player 1

Judge's Analysis

    Player 1's submission exhibits a more detailed and creative interpretation of a steampunk-style robot octopus making coffee.

    The use of mechanical elements and coffee-making components is clear and well-integrated.

    In contrast, Player 2's image lacks the steampunk aesthetic and specific coffee-making elements, resulting in a less effective representation of the prompt.

These metrics analyze technical aspects of both SVG drawings. Look for differences that might explain the judge's decision. Use the "View Code" button above to see the SVG code for each drawing.

Shapes Metrics

Total Shapes

The total number of shape elements (rect, circle, ellipse, line, polygon, polyline, path) in the SVG.

Player 1
147
Player 2
21
Rectangles

The number of rectangle elements (rect) in the SVG.

Player 1
12
Player 2
1
Circles

The number of circle elements (circle) in the SVG.

Player 1
65
Player 2
7
Ellipses

The number of ellipse elements (ellipse) in the SVG.

Player 1
6
Player 2
1
Lines

The number of line elements (line) in the SVG.

Player 1
9
Player 2
Polygons

The number of polygon elements (polygon) in the SVG.

Player 1
Player 2
Paths

The number of path elements (path) in the SVG.

Player 1
55
Player 2
12
Groups

The number of group elements (g) in the SVG.

Player 1
17
Player 2
1

Visual Effects Metrics

Gradients

The number of gradient definitions (linearGradient, radialGradient) in the SVG.

Player 1
5
Player 2
1
Patterns

The number of pattern definitions (pattern) in the SVG.

Player 1
2
Player 2
1
Filters

The number of filter definitions (filter) in the SVG.

Player 1
1
Player 2
Masks

The number of mask definitions (mask) in the SVG.

Player 1
Player 2
Clip Paths

The number of clipping path definitions (clipPath) in the SVG.

Player 1
Player 2
Elements with Opacity

The number of elements with opacity attributes in the SVG.

Player 1
17
Player 2
1
Elements with Stroke

The number of elements with stroke attributes in the SVG.

Player 1
81
Player 2
15

Colors Metrics

Unique Colors

The number of unique colors used in the SVG.

Player 1
28
Player 2
6

Interactivity Metrics

Animations

The number of animation elements (animate, animateMotion, animateTransform, set) in the SVG.

Player 1
22
Player 2
3
Elements with Transform

The number of elements with transform attributes in the SVG.

Player 1
2
Player 2

Complexity Metrics

Path Commands

The total number of path commands in all path elements (M, L, C, Q, etc.) in the SVG.

Player 1
168
Player 2
29
Max Group Nesting

The maximum nesting level of group elements (g) in the SVG.

Player 1
1
Player 2
Defs Elements

The number of elements defined within the defs element in the SVG.

Player 1
9
Player 2
2
Use Elements

The number of use elements (use) in the SVG.

Player 1
12
Player 2

Text Metrics

Text Elements

The number of text elements (text) in the SVG.

Player 1
4
Player 2

AI Judging Process

Creativity

Originality, innovative use of shapes and unique approach to the prompt.

Prompt Adherence

How accurately the SVG captures the essence of the prompt.

Visual Appeal

Aesthetic quality including composition, color usage and overall visual impact.

How does judging work?

SVG drawings are converted to static PNG images for evaluation. The AI judge receives the original prompt and both images, then determines which drawing better fulfills the evaluation criteria without seeing animations, interactivity, or SVG code.

Similar Challenges