# 存檔名帶種子：喜歡的那張找得回來

正式網址：https://newmediaart.course.monolab.world/snippets/seed-in-filename

按 R 換一組隨機、按 S 存 PNG，檔名記下種子；之後把 seed 設回那個數字，就能畫回同一張、再存一次高解析度。

- **分類**：時間與隨機
- **行數**：52 行（p5.js 1.x／2.x）

draw() 第一行放 randomSeed(seed) 和 noiseSeed(seed)，存檔名加上 seed。找到喜歡的就把 seed 固定成檔名裡的數字，再配合 pixelDensity 存一張大圖。

```js
// 按 R 換一組、按 S 存檔：檔名記下種子，喜歡的那張永遠找得回來
let seed;

function setup() {
  createCanvas(600, 600);
  seed = floor(random(1000000));
  // seed = 123456; // 想畫回某一張：把檔名裡的數字填進來
  noLoop();
}

function draw() {
  randomSeed(seed);
  noiseSeed(seed); // 有用 noise() 也要固定
  background(250);
  noFill();
  stroke(20, 90);
  strokeWeight(1.5);
  for (let i = 0; i < 120; i++) {
    let x = random(width);
    let y = random(height);
    beginShape();
    for (let j = 0; j < 80; j++) {
      vertex(x, y);
      const a = noise(x * 0.005, y * 0.005) * TWO_PI * 2;
      x += cos(a) * 6;
      y += sin(a) * 6;
    }
    endShape();
  }
}

function keyPressed() {
  if (key === 'r' || key === 'R') {
    seed = floor(random(1000000));
    redraw();
  }
  if (key === 's' || key === 'S') {
    // 檔名像 sketch-seed48213-2026-09-29-1905-12.png
    saveCanvas('sketch-seed' + seed + '-' + timestamp(), 'png');
  }
}

// 補零：7 → "07"。檔名長度一致，資料夾裡才會照時間排好
function pad(n) {
  return String(n).padStart(2, '0');
}

// 現在的日期時間：2026-09-29-1905-12（年-月-日-時分-秒）
function timestamp() {
  return year() + '-' + pad(month()) + '-' + pad(day()) + '-' +
    pad(hour()) + pad(minute()) + '-' + pad(second());
}
```

## 同類常用指令・時間與隨機

- [用時間當參數：秒數與 sin 呼吸](https://newmediaart.course.monolab.world/snippets/time-breath)
- [在畫面上印出日期時間](https://newmediaart.course.monolab.world/snippets/datetime-text)

[回到全部常用指令](https://newmediaart.course.monolab.world/snippets)

[到 Hahow 報名](https://hahow.in/cr/creative-code)。價格與優惠以 Hahow 頁面為準。
