← Casa completaObjeto 3Dfogon/cocina-con-horno
Cocina con horno
Arrastrá para girarlo// «Cocina con horno» · gpt-6-sol (medium)
// A kitchen stove: a white box with four black gas burners on top with dark grey grates, a row of round knobs on the front panel, and a big oven door below with a dark glass window and a chrome bar handle. A red pot on one burner.
const white = "#f5f3ee";
const cream = "#fffdf7";
const shadow = "#d5d7d5";
const chrome = "#c5d0d2";
const dark = "#30383e";
// Feet and the solid stove body.
for (const x of [10, 35]) {
for (const y of [13, 34]) box(x, y, 0, x + 3, y + 3, 3, "#555b5c");
}
box(7, 10, 3, 40, 39, 31, white);
box(7, 10, 3, 7, 39, 30, "#e3e5e1");
box(8, 10, 4, 39, 10, 30, "#e9e9e5");
box(8, 39, 4, 39, 39, 30, shadow);
box(8, 10, 3, 39, 39, 4, "#d9dcda");
// Gentle speckles on the enamel sides.
for (let y = 12; y < 39; y++) {
for (let z = 7; z < 29; z++) {
if (rand() < 0.025) set(7, y, z, "#eceeea");
}
}
// Chunky cooktop with a light rim and a shallow inset surface.
box(6, 9, 31, 41, 40, 32, cream);
box(7, 10, 33, 40, 39, 33, "#dce0df");
box(8, 11, 33, 39, 38, 33, "#f4f5f1");
box(6, 9, 31, 41, 9, 31, "#cbd1d1");
box(7, 39, 34, 40, 40, 35, "#e2e4e0");
// Four burners and their sturdy square grates.
const burners = [
[15, 18], [32, 18],
[15, 31], [32, 31]
];
for (const [x, y] of burners) {
cylinder(x, y, 34, 4, 1, "#292f32");
cylinder(x, y, 35, 2, 1, "#50585b");
cylinder(x, y, 36, 1, 1, "#242a2d");
const grate = "#555d60";
line(x - 6, y - 5, 35, x + 6, y - 5, 35, 0, grate);
line(x - 6, y + 5, 35, x + 6, y + 5, 35, 0, grate);
line(x - 5, y - 6, 35, x - 5, y + 6, 35, 0, grate);
line(x + 5, y - 6, 35, x + 5, y + 6, 35, 0, grate);
for (const dx of [-5, 5]) {
line(x + dx, y, 35, x + Math.sign(dx) * 2, y, 35, 0, "#687174");
}
}
// Front control panel.
box(7, 8, 24, 40, 9, 30, "#e8eae7");
box(7, 8, 30, 40, 8, 30, cream);
box(7, 8, 24, 40, 8, 24, "#c8cecc");
for (const x of [11, 19, 29, 37]) {
cylinder(x, 6, 27, 2, 2, "#aeb8b9", "y");
sphere(x, 5, 27, 2, "#edf0ec");
set(x, 3, 28, "#707b7b"); // Pointer on the knob.
set(x, 8, 30, "#858e8e"); // Small setting mark.
}
// Oven door, with a thick white frame and dark glass.
box(8, 7, 3, 39, 8, 23, "#e3e6e3");
box(9, 6, 5, 38, 6, 22, cream);
box(10, 5, 7, 37, 5, 20, chrome);
box(12, 4, 9, 35, 5, 18, "#27343c");
box(13, 3, 10, 34, 3, 17, "#344750");
box(14, 2, 16, 21, 2, 17, "#698087");
box(15, 2, 14, 17, 2, 15, "#82989a");
box(29, 2, 10, 32, 2, 10, "#495d65");
box(10, 5, 7, 37, 5, 7, "#aeb8b9");
box(10, 5, 19, 37, 5, 20, "#b7c1c1");
// Chrome bar handle and its chunky mounts.
box(13, 4, 20, 15, 6, 22, "#909e9f");
box(32, 4, 20, 34, 6, 22, "#909e9f");
line(13, 3, 22, 34, 3, 22, 1, chrome);
line(14, 2, 23, 33, 2, 23, 0, "#f0f5f2");
// Flickering blue flames beneath the back-left pot.
part("blueFlames", [15, 31, 36]);
for (const [dx, dy] of [
[-3, 0], [3, 0], [0, -3], [0, 3],
[-2, -2], [2, -2], [-2, 2], [2, 2]
]) {
set(15 + dx, 31 + dy, 36, "#278dff");
set(15 + dx, 31 + dy, 37, "#72e8ff");
if (Math.abs(dx) + Math.abs(dy) === 3)
set(15 + dx, 31 + dy, 38, "#a4f5ff");
}
animate("blueFlames", {
type: "colors",
palette: ["#2179ef", "#319dff", "#66d8ff", "#a7f4ff"],
pattern: "flicker",
glow: 0.8
});
part("body");
// A cheerful red pot with a lid and two easy-to-read handles.
cylinder(15, 31, 39, 5, 4, "#d94b45");
cylinder(15, 31, 38, 4, 1, "#a93737");
for (let z = 39; z <= 42; z++) {
for (let y = 27; y <= 34; y++) {
set(11, y, z, "#ed6860");
}
}
line(9, 31, 41, 11, 31, 41, 1, "#963d3a");
line(19, 31, 41, 22, 31, 41, 1, "#963d3a");
box(8, 29, 40, 9, 33, 41, "#b84540");
box(22, 29, 40, 23, 33, 41, "#b84540");
cylinder(15, 31, 43, 5, 1, "#a93938");
cylinder(15, 31, 44, 4, 1, "#e45a50");
line(12, 28, 44, 16, 27, 44, 0, "#f48578");
cylinder(15, 31, 45, 1, 1, dark);import { draw } from "./assets/voxel";
import { cocinaConHorno } from "./assets/cocina-con-horno";
// En cada cuadro: parado sobre (x, y), el centro de su base.
draw(ctx, cocinaConHorno, 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 cocina-con-horno
# Con las herramientas de Fogón (conector)
add_assets({ slug: "<tu-juego>", ids: ["cocina-con-horno"] })
# Queda en client/assets/cocina-con-horno.ts
# https://fogon.page/object/cocina-con-horno