fogón

← Piratas y marObjeto 3Dfogon/cartel-x-marca-el-lugar

Cartel de X marca el lugar

de fogonCC06129 bloques
Cartel de X marca el lugarArrastrá para girarlo
// «Cartel de X marca el lugar» · gpt-6-sol (medium)
// A crooked wooden sign stuck in a small sand mound, painted with a big red X and a skull, with a small shovel leaning on it.

// Low, sunlit sand mound.
ellipsoid(24, 24, 0, 17, 14, 5, "#d8ac68");
ellipsoid(18, 23, 0, 9, 10, 3, "#e5bc78");
ellipsoid(32, 26, 0, 8, 8, 3, "#e2b773");

forEach((x, y, z, color) => {
  if (color === "#d8ac68" || color === "#e5bc78" || color === "#e2b773") {
    if (!get(x, y, z + 1)) {
      set(x, y, z, rand() < 0.22 ? "#f5d596" : "#ecc682");
    } else if (rand() < 0.045) {
      set(x, y, z, "#c99b59");
    }
  }
});

// Crooked post, sunk into the mound.
line(23, 23, 3, 27, 23, 39, 2, "#704027");
line(22, 21, 6, 26, 21, 38, 1, "#a96b3d");
line(24, 20, 8, 27, 20, 36, 0, "#d19355");
for (let z = 9; z < 37; z += 7) {
  set(23 + Math.floor((z - 4) / 9), 20, z, "#704027");
}

// Three thick, slightly tilted wooden planks.
// Every row shifts right a little toward the top.
const tilt = z => Math.floor((z - 22) / 5);
for (let z = 22; z <= 36; z++) {
  const shift = tilt(z);
  const seam = z === 26 || z === 31;
  const wood = seam ? "#754126" :
    z >= 32 ? "#ad7042" : z >= 27 ? "#b77b48" : "#a8693e";

  for (let x = 10 + shift; x <= 40 + shift; x++) {
    box(x, 17, z, x, 21, z, wood);
    if (!seam) {
      set(x, 17, z, rand() < 0.13 ? "#ce9256" : wood);
      if (rand() < 0.055) set(x, 16, z, "#d69b5c");
    }
  }
  set(10 + shift, 16, z, "#704027");
  set(40 + shift, 16, z, "#704027");
}

// Chunky sunlit top edge and worn lower edge.
for (let x = 12; x <= 42; x++) set(x, 16, 36, "#dc9d5b");
for (let x = 10; x <= 40; x++) set(x, 16, 22, "#804929");

function paint(x, z, color, y = 16) {
  set(x + tilt(z), y, z, color);
}

// A large, hand-painted red X.
for (let z = 25; z <= 34; z++) {
  const t = (z - 25) / 9;
  const left = Math.round(15 + 11 * t);
  const right = Math.round(26 - 11 * t);
  for (let dx = -1; dx <= 1; dx++) {
    paint(left + dx, z, "#c6322c");
    paint(right + dx, z, "#c6322c");
  }
  paint(left, z, "#ed5140", 15);
  paint(right, z, "#ed5140", 15);
}
paint(15, 24, "#c6322c");
paint(26, 24, "#c6322c");

// Cheerful white skull painted beside the X.
for (let z = 29; z <= 33; z++) {
  const lo = z === 33 ? 33 : 31;
  const hi = z === 33 ? 37 : 39;
  for (let x = lo; x <= hi; x++) paint(x, z, "#fff1d1");
}
for (let z = 26; z <= 28; z++) {
  for (let x = 33; x <= 37; x++) paint(x, z, "#fff1d1");
}
paint(33, 30, "#332d2a", 15);
paint(34, 30, "#332d2a", 15);
paint(37, 30, "#332d2a", 15);
paint(38, 30, "#332d2a", 15);
paint(35, 28, "#332d2a", 15);
paint(36, 28, "#332d2a", 15);
for (let x = 34; x <= 36; x++) paint(x, 26, "#8b7561", 15);

// Big brass nail heads at the plank corners.
for (const z of [24, 29, 34]) {
  for (const x of [13, 39]) {
    paint(x, z, "#8c5b29", 15);
    paint(x, z + 1, "#f4ce70", 15);
  }
}

// A few pebbles and a glint of pirate gold in the sand.
box(14, 13, 2, 16, 14, 3, "#b88e62");
set(15, 12, 3, "#e4c39a");
box(31, 12, 2, 34, 13, 2, "#bd925f");
box(19, 12, 2, 21, 12, 3, "#c48a31");
box(20, 11, 3, 21, 11, 3, "#ffe078");
set(22, 13, 2, "#f5cf67");

// Small shovel leaning against the sign, in front of its right edge.
// Broad pointed steel blade.
for (let z = 4; z <= 11; z++) {
  const cx = z < 7 ? 40 : z < 10 ? 41 : 42;
  const half = z === 4 ? 0 : z <= 8 ? 2 : 1;
  box(cx - half, 13, z, cx + half, 15, z, "#64727a");
  box(cx - half, 12, z, cx + half, 12, z,
      z < 6 ? "#a5bac0" : "#899da4");
  if (half > 0) set(cx - half, 11, z, "#cfdbd2");
}
line(41, 14, 11, 43, 14, 26, 1, "#75492e");
line(41, 12, 12, 43, 12, 25, 0, "#c18a52");

// Open D-shaped grip, with a bright upper rim.
box(41, 13, 26, 42, 14, 29, "#70462f");
box(46, 13, 26, 46, 14, 29, "#70462f");
box(42, 13, 30, 45, 14, 31, "#70462f");
box(43, 12, 30, 45, 12, 30, "#d79b59");
box(42, 13, 25, 45, 14, 26, "#98613a");