← GranjaObjeto 3Dfogon/huerta
Huerta
Arrastrá para girarlo// «Huerta» · gpt-6-sol (medium)
// A rectangular vegetable garden plot: a raised wooden frame filled with dark brown soil, three neat rows: orange carrot tops with feathery green leaves, round green cabbages, and red tomatoes on small staked plants with green leaves, plus a little wooden sign on a stick at the front corner.
// A cheerful raised vegetable garden, viewed from the front (-y).
const grass = ["#72bd43", "#7fc94c", "#88ce55", "#65ae3b"];
const soil = ["#493022", "#553624", "#60402a", "#6b482e"];
const wood = ["#966038", "#aa7042", "#bc8050"];
// Grass beneath the plot.
box(3, 4, 0, 44, 44, 1, grass[0]);
for (let x = 3; x <= 44; x++) {
for (let y = 4; y <= 44; y++) {
if (rand() < 0.34) set(x, y, 1, grass[1 + Math.floor(rand() * 3)]);
}
}
// Solid bed and rich, slightly uneven soil.
box(5, 6, 1, 42, 42, 4, wood[0]);
box(7, 8, 4, 40, 39, 6, soil[0]);
for (let x = 7; x <= 40; x++) {
for (let y = 8; y <= 39; y++) {
set(x, y, 6, soil[Math.floor(rand() * soil.length)]);
if (rand() < 0.085) set(x, y, 7, soil[2]);
}
}
// Raised wooden planks. The pale top edges catch the sunshine.
for (const z of [2, 4, 6]) {
const c = z === 6 ? wood[2] : wood[1];
box(5, 5, z, 42, 7, z + 1, c);
box(5, 40, z, 42, 42, z + 1, c);
box(5, 8, z, 7, 39, z + 1, c);
box(40, 8, z, 42, 39, z + 1, c);
}
for (const x of [5, 42]) for (const y of [5, 42]) {
box(x, y, 1, x + 1, y + 1, 8, "#855331");
box(x, y, 8, x + 1, y + 1, 8, "#d49a61");
}
// Little nail heads on the front plank.
for (const x of [9, 20, 31, 39]) set(x, 5, 5, "#dec3a0");
// Carrot row: orange shoulders peek out, topped with feathery greens.
for (const y of [11, 16, 22, 27, 33, 38]) {
const x = 13;
ellipsoid(x, y, 7, 2, 2, 2, "#f38424");
set(x, y - 2, 7, "#ffac37");
box(x, y, 9, x, y, 11, "#378d37");
for (const [dx, dy, dz] of [
[-2, 0, 11], [2, 0, 12], [0, -2, 12], [0, 2, 11],
[-2, -1, 13], [2, 1, 13], [-1, 1, 14], [1, -1, 14]
]) {
line(x, y, 10, x + dx, y + dy, dz, 0, "#45a646");
set(x + dx, y + dy, dz, "#64c454");
}
set(x, y, 14, "#82d762");
}
// Cabbages: round heads with layered outer leaves.
for (const y of [11, 18, 25, 32, 38]) {
const x = 24;
ellipsoid(x, y, 9, 3, 3, 3, "#55a943");
ellipsoid(x, y - 1, 10, 2, 2, 2, "#76c959");
for (const dx of [-3, 3]) {
ellipsoid(x + dx, y, 8, 1, 2, 2, "#429341");
}
set(x - 1, y - 2, 11, "#9ade70");
set(x, y - 2, 12, "#a2df76");
line(x - 2, y - 2, 8, x, y - 3, 10, 0, "#3e923d");
line(x + 2, y - 2, 8, x, y - 3, 10, 0, "#3e923d");
}
// Tomato row: slim wooden stakes, branching vines, and bright fruit.
for (const y of [11, 20, 29, 38]) {
const x = 35;
box(x, y, 6, x, y, 17, "#a97848");
set(x, y, 17, "#d3a16b");
line(x - 1, y, 7, x - 1, y, 15, 0, "#438e37");
for (const [dx, dy, z] of [[-2, -1, 10], [2, -1, 12], [-2, 1, 14]]) {
line(x - 1, y, z - 2, x + dx, y + dy, z, 0, "#43943c");
set(x + dx - 1, y + dy, z, "#60b74c");
set(x + dx + 1, y + dy, z, "#65bd50");
set(x + dx, y + dy - 1, z + 1, "#7bcc5b");
const tx = x + dx, ty = y + dy - 1;
sphere(tx, ty, z - 2, 1, "#e34130");
set(tx, ty - 1, z - 2, "#fa6240");
set(tx, ty, z, "#328b38");
}
}
// Small sign at the front corner, facing the viewer.
box(8, 3, 1, 9, 4, 13, "#946037");
box(6, 2, 12, 16, 3, 17, "#bd8750");
box(6, 1, 12, 16, 1, 12, "#e4ad6e");
box(6, 1, 17, 16, 1, 17, "#e4ad6e");
for (const x of [6, 16]) box(x, 1, 13, x, 1, 16, "#e4ad6e");
// A simple carrot emblem.
box(10, 1, 14, 12, 1, 15, "#f78b2b");
set(11, 1, 13, "#f78b2b");
set(11, 1, 16, "#55aa42");
set(10, 1, 17, "#55aa42");
set(12, 1, 17, "#55aa42");import { draw } from "./assets/voxel";
import { huerta } from "./assets/huerta";
// En cada cuadro: parado sobre (x, y), el centro de su base.
draw(ctx, huerta, x, y, { size: 64, angle: 0, t: performance.now() / 1000 });
// size: lo que mide en px su lado más largo
// angle: giro sobre el piso, en radianes
// t: segundos; si se mueve, se anima solo con eso# En una terminal, en la carpeta del juego
fogon assets add huerta
# Con las herramientas de Fogón (conector)
add_assets({ slug: "<tu-juego>", ids: ["huerta"] })
# Queda en client/assets/huerta.ts
# https://fogon.page/object/huerta