← Casa completaObjeto 3Dfogon/mesa-de-comedor
Mesa de comedor
Arrastrá para girarlo// «Mesa de comedor» · gpt-6-sol (medium)
// A dining table set: a rectangular wooden table with four sturdy legs and a white tablecloth runner, with four simple wooden chairs tucked around it (two on each long side), and on the table a fruit bowl and two plates.
const wood = "#c98542";
const woodLight = "#dfa056";
const woodDark = "#92552f";
const walnut = "#75462f";
const cream = "#fff9eb";
// Table: chunky legs, apron, and a warm honey-wood top.
for (const x of [11, 34]) {
for (const y of [17, 28]) {
box(x, y, 0, x + 2, y + 2, 16, woodDark);
box(x, y, 2, x, y + 2, 16, wood);
}
}
box(10, 16, 14, 37, 31, 17, walnut);
box(9, 15, 17, 38, 32, 18, woodDark);
box(9, 15, 19, 38, 32, 19, woodLight);
box(10, 16, 19, 37, 31, 19, wood);
for (let i = 0; i < 90; i++) {
const x = 11 + Math.floor(rand() * 26);
const y = 16 + Math.floor(rand() * 16);
set(x, y, 19, rand() < 0.5 ? "#d7944b" : "#e2a55e");
}
// Four chairs tucked against the two long sides.
function chair(cx, y0, backY, fabric) {
const left = cx - 4, right = cx + 4;
const rear = backY > y0 + 3;
for (const x of [left, right - 1]) {
for (const y of [y0 + 1, y0 + 6]) {
box(x, y, 0, x + 1, y + 1, 10, woodDark);
box(x, y, 2, x, y + 1, 10, wood);
}
}
box(left, y0, 10, right, y0 + 7, 11, walnut);
box(left + 1, y0 + 1, 12, right - 1, y0 + 6, 12, fabric);
box(left + 1, y0 + 1, 13, right - 1, y0 + 5, 13, fabric);
const postY = rear ? y0 + 6 : y0 - 1;
for (const x of [left, right - 1]) {
box(x, postY, 10, x + 1, postY + 2, 23, woodDark);
box(x, postY, 14, x, postY + 2, 22, woodLight);
}
box(left, postY, 21, right, postY + 2, 23, wood);
box(left + 2, postY + 1, 16, right - 2, postY + 1, 20, woodLight);
box(left + 2, rear ? postY : postY + 2, 17,
right - 2, rear ? postY : postY + 2, 19, fabric);
box(left + 1, postY, 13, right - 1, postY + 2, 14, walnut);
}
chair(16, 7, 6, "#a9ddd2");
chair(31, 7, 6, "#f3b69f");
chair(16, 33, 40, "#a9cce8");
chair(31, 33, 40, "#e9c876");
// Soft white runner, with mint edging and little tassels.
box(12, 22, 20, 35, 26, 20, cream);
box(12, 22, 20, 35, 22, 20, "#b7dcd2");
box(12, 26, 20, 35, 26, 20, "#b7dcd2");
for (const y of [22, 24, 26]) {
box(11, y, 20, 11, y, 20, cream);
box(36, y, 20, 36, y, 20, cream);
}
// Two simple ceramic plates.
for (const [cx, cy] of [[17, 18], [31, 29]]) {
for (let dx = -3; dx <= 3; dx++) {
for (let dy = -3; dy <= 3; dy++) {
const d = dx * dx + dy * dy;
if (d <= 10) set(cx + dx, cy + dy, 20, "#d1dce0");
if (d <= 5) set(cx + dx, cy + dy, 21, "#fffdf5");
}
}
}
// A shallow fruit bowl with bright, chunky fruit.
for (let dx = -4; dx <= 4; dx++) {
for (let dy = -3; dy <= 3; dy++) {
const d = (dx * dx) / 16 + (dy * dy) / 9;
if (d <= 1) {
set(24 + dx, 24 + dy, 21, "#b77742");
set(24 + dx, 24 + dy, 22, "#e3af72");
if (d > 0.55) set(24 + dx, 24 + dy, 23, "#f2c589");
}
}
}
sphere(22, 23, 24, 1.5, "#e95f54");
sphere(25, 23, 24, 1.5, "#f2c247");
sphere(24, 25, 24, 1.5, "#a7c966");
set(22, 23, 26, "#6c9650");
set(25, 23, 26, "#765637");import { draw } from "./assets/voxel";
import { mesaDeComedor } from "./assets/mesa-de-comedor";
// En cada cuadro: parado sobre (x, y), el centro de su base.
draw(ctx, mesaDeComedor, 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 mesa-de-comedor
# Con las herramientas de Fogón (conector)
add_assets({ slug: "<tu-juego>", ids: ["mesa-de-comedor"] })
# Queda en client/assets/mesa-de-comedor.ts
# https://fogon.page/object/mesa-de-comedor