← AsiáticoObjeto 3Dfogon/futon
Futón
Arrastrá para girarlo// «Futón» · gpt-6-sol (medium)
// A Japanese futon laid on a tatami mat: a thick white mattress with a light blue quilted cover with a wave pattern folded back at the top, and a small rectangular buckwheat pillow.
// Lacquered platform and woven tatami mat.
box(3, 2, 0, 44, 45, 0, "#74352c");
box(4, 3, 1, 43, 44, 1, "#a94c38");
box(5, 4, 1, 42, 43, 1, "#244941");
box(6, 5, 2, 41, 42, 2, "#c9ad70");
for (let x = 6; x <= 41; x++) {
for (let y = 5; y <= 42; y++) {
let color = (y % 3 === 0) ? "#dbc48a" : "#cfb77a";
if (rand() < 0.12) color = "#e5cf98";
set(x, y, 2, color);
}
}
// Dark woven binding, with small gold stitches.
for (let y = 5; y <= 42; y++) {
for (let x of [6, 7, 40, 41]) set(x, y, 2, "#31564a");
if (y % 4 === 0) {
set(7, y, 2, "#c8ac69");
set(40, y, 2, "#c8ac69");
}
}
for (let x = 8; x <= 39; x++) {
for (let y of [5, 6, 41, 42]) set(x, y, 2, "#31564a");
if (x % 4 === 0) {
set(x, 6, 2, "#c8ac69");
set(x, 41, 2, "#c8ac69");
}
}
// Thick, softly rounded white futon mattress.
for (let z = 3; z <= 8; z++) {
for (let y = 8; y <= 39; y++) {
for (let x = 10; x <= 37; x++) {
let corner = (x === 10 || x === 37) && (y === 8 || y === 39);
if (corner && (z === 3 || z === 8)) continue;
let edge = x === 10 || x === 37 || y === 8 || y === 39;
let color = z === 8 ? "#fff9e9" :
z <= 4 ? "#d5d5cb" :
edge ? "#e7e7dc" : "#f4f2e8";
if (!edge && z === 8 && rand() < 0.09) color = "#eeeade";
set(x, y, z, color);
}
}
}
// Sewn side seam.
for (let y = 10; y <= 37; y++) {
set(10, y, 5, "#d7d9d1");
set(37, y, 5, "#d7d9d1");
}
// Plump blue cover, extending over the foot and both sides.
for (let y = 8; y <= 31; y++) {
for (let x = 10; x <= 37; x++) {
if ((x === 10 || x === 37) && y === 8) continue;
set(x, y, 9, rand() < 0.10 ? "#aed8df" : "#bde5e9");
if (x === 10 || x === 37 || y === 8) {
set(x, y, 8, "#83b9ca");
set(x, y, 9, "#a3d2dd");
}
}
}
// Quilt stitching and overlapping, scalloped wave motifs.
for (let row = 0; row < 3; row++) {
let base = 11 + row * 7;
for (let center of [15, 24, 33]) {
for (let dx = -4; dx <= 4; dx++) {
let arch = Math.round(2.7 * Math.sqrt(1 - dx * dx / 16));
set(center + dx, base + arch, 10, "#6faebe");
if (dx >= -2 && dx <= 2) {
let inner = Math.round(1.5 * Math.sqrt(1 - dx * dx / 9));
set(center + dx, base + inner, 10, "#d9f1ee");
}
}
}
}
for (let y = 12; y <= 27; y += 7) {
for (let x = 11; x <= 36; x += 9) set(x, y, 10, "#e6f4ed");
}
// Cover turned back at the head: blue rolled edge, white underside.
box(11, 30, 10, 36, 32, 10, "#92c4d1");
box(12, 31, 11, 35, 31, 11, "#c7e9e9");
box(11, 33, 9, 36, 35, 9, "#eeeae0");
box(12, 33, 10, 35, 34, 10, "#fffaf0");
for (let x = 12; x <= 35; x++) {
set(x, 35, 10, "#8dbfc9");
if (x % 5 === 0) set(x, 34, 10, "#d4d3c8");
}
// Small rectangular buckwheat pillow with piping and a woven top.
box(16, 35, 9, 31, 39, 10, "#ab8062");
box(17, 35, 10, 30, 40, 11, "#d1ae83");
box(18, 36, 12, 29, 39, 12, "#e8cca1");
for (let x = 18; x <= 29; x++) {
if (x % 3 === 0) {
set(x, 36, 12, "#c49e78");
set(x, 39, 12, "#c49e78");
}
}
for (let y = 36; y <= 39; y++) {
set(17, y, 11, "#f0d7ae");
set(30, y, 11, "#f0d7ae");
}
// A restrained cherry-blossom embroidery on the pillow.
set(23, 37, 12, "#ba7381");
set(24, 37, 12, "#d993a0");
set(25, 37, 12, "#ba7381");
set(24, 38, 12, "#ba7381");import { draw } from "./assets/voxel";
import { futon } from "./assets/futon";
// En cada cuadro: parado sobre (x, y), el centro de su base.
draw(ctx, futon, 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 futon
# Con las herramientas de Fogón (conector)
add_assets({ slug: "<tu-juego>", ids: ["futon"] })
# Queda en client/assets/futon.ts
# https://fogon.page/object/futon