From d63e70714603032e2ed5121961347a532fb611b9 Mon Sep 17 00:00:00 2001 From: coelacanth657 <210202793+coelacanth657@users.noreply.github.com> Date: Mon, 20 Oct 2025 20:39:44 +0900 Subject: [PATCH 1/5] =?UTF-8?q?=E7=89=A9=E4=BD=93=E3=81=AE=E3=83=86?= =?UTF-8?q?=E3=83=B3=E3=83=97=E3=83=AC=E3=83=BC=E3=83=88=E8=BF=BD=E5=8A=A0?= =?UTF-8?q?(=E4=BB=AE)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/lib/patterns.js | 284 +++++++++++++++++++++++++++++++++++ src/life-game/life-game.html | 3 +- src/life-game/life-game.js | 40 +++++ 3 files changed, 326 insertions(+), 1 deletion(-) create mode 100644 src/lib/patterns.js diff --git a/src/lib/patterns.js b/src/lib/patterns.js new file mode 100644 index 0000000..2c7381c --- /dev/null +++ b/src/lib/patterns.js @@ -0,0 +1,284 @@ +//defaultBoardSize = 20 では収まらないパターンもあるので注意 + +export const patterns = { + + //振動子, Oscillators + pulsar: { + names: { + en: "Pulsar", + ja: "パルサー" + }, + shape: [ + [0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1], + [1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1], + [1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1], + [0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0], + [1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1], + [1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1], + [1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0] + ] + }, + pentadecathlon: { + names: { + en: "Pentadecathlon", + ja: "ペンタデカスロン" + }, + shape: [ + [0, 0, 1, 0, 0, 0, 0, 1, 0, 0], + [1, 1, 0, 1, 1, 1, 1, 0, 1, 1], + [0, 0, 1, 0, 0, 0, 0, 1, 0, 0] + ] + }, + galaxy: { + names: { + en: "Galaxy", + ja: "銀河" + }, + shape: [ + [1, 1, 1, 1, 1, 1, 0, 1, 1], + [1, 1, 1, 1, 1, 1, 0, 1, 1], + [0, 0, 0, 0, 0, 0, 0, 1, 1], + [1, 1, 0, 0, 0, 0, 0, 1, 1], + [1, 1, 0, 0, 0, 0, 0, 1, 1], + [1, 1, 0, 0, 0, 0, 0, 1, 1], + [1, 1, 0, 0, 0, 0, 0, 0, 0], + [1, 1, 0, 1, 1, 1, 1, 1, 1], + [1, 1, 0, 1, 1, 1, 1, 1, 1] + ] + }, + octagon: { + names: { + en: "Octagon", + ja: "八角形" + }, + shape: [ + [0, 0, 1, 1, 0, 0], + [0, 1, 0, 0, 1, 0], + [1, 0, 0, 0, 0, 1], + [1, 0, 0, 0, 0, 1], + [0, 1, 0, 0, 1, 0], + [0, 0, 1, 1, 0, 0] + ] + }, + figureEight: { + names: { + en: "Figure eight", + ja: "8の字" + }, + shape: [ + [0, 0, 1, 1, 1, 0], + [0, 0, 1, 0, 1, 0], + [0, 0, 1, 0, 1, 0], + [0, 1, 0, 1, 0, 0], + [0, 1, 0, 1, 0, 0], + [0, 1, 1, 1, 0, 0] + ] + }, + tumbler: { + names: { + en: "Tumbler", + ja: "タンブラー" + }, + shape: [ + [0, 1, 1, 0, 1, 1, 0], + [0, 1, 1, 0, 1, 1, 0], + [0, 0, 1, 0, 1, 0, 0], + [1, 0, 1, 0, 1, 0, 1], + [1, 1, 1, 0, 1, 1, 1] + ] + }, + barberPole: { + names: { + en: "Barber's pole", + ja: "床屋の看板" + }, + shape: [ + [0, 0, 1, 1, 0, 0], + [0, 1, 0, 0, 1, 0], + [0, 1, 0, 0, 1, 0], + [0, 0, 1, 1, 0, 0] + ] + }, + clock: { + names: { + en: "Clock", + ja: "時計" + }, + shape: [ + [0, 0, 1, 0], + [0, 1, 0, 1], + [0, 1, 0, 1], + [0, 0, 1, 0] + ] + }, + hertzOscillator: { + names: { + en: "Hertz oscillator", + ja: "ヘルツ振動子" + }, + shape: [ + [0, 0, 0, 0, 1, 0, 0, 0, 0, 0], + [0, 0, 0, 1, 0, 1, 0, 0, 0, 0], + [0, 0, 1, 0, 0, 0, 1, 0, 0, 0], + [0, 0, 1, 0, 0, 0, 1, 0, 0, 0], + [0, 1, 0, 0, 0, 0, 0, 1, 0, 0], + [0, 1, 0, 0, 0, 0, 0, 1, 0, 0], + [0, 0, 1, 0, 0, 0, 1, 0, 0, 0], + [0, 0, 1, 0, 0, 0, 1, 0, 0, 0], + [0, 0, 0, 1, 0, 1, 0, 0, 0, 0], + [0, 0, 0, 0, 1, 0, 0, 0, 0, 0] + ] + }, + + //移動物体, Spaceships + glider: { + names: { + en: "Glider", + ja: "グライダー" + }, + shape: [ + [0, 1, 0], + [0, 0, 1], + [1, 1, 1] + ] + }, + lightweightSpaceship: { + names: { + en: "Lightweight Spaceship (LWSS)", + ja: "軽量級宇宙船" + }, + shape: [ + [0, 1, 0, 0, 1], + [1, 0, 0, 0, 0], + [1, 0, 0, 0, 1], + [1, 1, 1, 1, 0] + ] + }, + middleweightSpaceship: { + names: { + en: "Middleweight Spaceship (MWSS)", + ja: "中量級宇宙船" + }, + shape: [ + [0, 1, 0, 0, 0, 1], + [1, 0, 0, 0, 0, 0], + [1, 0, 0, 0, 0, 1], + [1, 1, 1, 1, 1, 0] + ] + }, + heavyweightSpaceship: { + names: { + en: "Heavyweight Spaceship (HWSS)", + ja: "重量級宇宙船" + }, + shape: [ + [0, 1, 0, 0, 0, 0, 1], + [1, 0, 0, 0, 0, 0, 0], + [1, 0, 0, 0, 0, 0, 1], + [1, 1, 1, 1, 1, 1, 0] + ] + }, + shuttle: { + names: { + en: "Shuttle", + ja: "シャトル" + }, + shape: [ + [1, 1, 0, 0, 0, 0, 0], + [1, 1, 0, 0, 0, 0, 0], + [0, 0, 0, 1, 0, 0, 0], + [0, 0, 0, 1, 0, 0, 0], + [0, 0, 0, 1, 0, 0, 0], + [0, 0, 0, 0, 0, 1, 1], + [0, 0, 0, 0, 0, 1, 1] + ] + }, + + //繁殖型, Breeders + gosperGliderGun: { + names: { + en: "Gosper Glider Gun", + ja: "グライダー銃" + }, + shape: [ + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1], + [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + ] + }, + PufferTrain: { + names: { + en: "Puffer Train", + ja: "シュシュポッポ列車" + }, + shape: [ + [0,0,0,1,0], + [0,0,0,0,1], + [1,0,0,0,1], + [0,1,1,1,1], + [0,0,0,0,0], + [0,0,0,0,0], + [0,0,0,0,0], + [1,0,0,0,0], + [0,1,1,0,0], + [0,0,1,0,0], + [0,0,1,0,0], + [0,1,0,0,0], + [0,0,0,0,0], + [0,0,0,0,0], + [0,0,0,1,0], + [0,0,0,0,1], + [1,0,0,0,1], + [0,1,1,1,1], + ] + }, + Max: { + names: { + en: "Max", + ja: "マックス" + }, + shape: [ + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0], + [1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0], + [1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0], + [1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0], + [0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0], + [1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0], + [1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0], + [1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0], + [0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0], + [0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0], + [0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + ] + } +}; \ No newline at end of file diff --git a/src/life-game/life-game.html b/src/life-game/life-game.html index 4b35c51..0afe1bc 100644 --- a/src/life-game/life-game.html +++ b/src/life-game/life-game.html @@ -14,6 +14,7 @@