Skip to content

Commit 9ac2dc6

Browse files
authored
Merge branch 'main' into chore/improve-database-ui
2 parents 5cdd05d + 4bc03af commit 9ac2dc6

File tree

6 files changed

+19
-18
lines changed

6 files changed

+19
-18
lines changed

src/iframe/life-game.js

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,23 +18,24 @@ const cellSize = 600 / boardSize; //セルの大きさ(px)
1818
function isNextAlive(around, self) {
1919
// 自身が生きている & 周囲が 2 か 3 で生存
2020
if (self && 2 <= around && around <= 3) {
21-
return true;
21+
return self;
2222
}
2323
// 自身が死んでいる & 周囲が 3 で誕生
2424
if (!self && around === 3) {
25-
return true;
25+
return 1;
2626
}
27-
return false;
27+
return 0;
2828
}
2929

3030
// cellの状態に応じた色を返す関数
3131
function getStyle(cell) {
32-
// cellがtrueなら黒、falseなら白を返す
33-
return cell ? "black" : "white";
32+
if (cell === 0) return "white";
33+
// cellの値に応じて色を返す場合はここに追加
34+
return "black"; // デフォルトは黒
3435
}
3536

3637
//Boardの初期化
37-
let board = Array.from({ length: boardSize }, () => Array.from({ length: boardSize }, () => false));
38+
let board = Array.from({ length: boardSize }, () => Array.from({ length: boardSize }, () => 0));
3839
const table = document.getElementById("game-board");
3940

4041
//盤面をBoardに従って変更する関数達(Boardを変更したら実行する)
@@ -209,7 +210,7 @@ function progressBoard() {
209210
for (let ii = 0; ii < tate.length; ii++) {
210211
for (let jj = 0; jj < yoko.length; jj++) {
211212
if (tate[ii] !== 0 || yoko[jj] !== 0) {
212-
around += board[i + tate[ii]][j + yoko[jj]] ? 1 : 0;
213+
around += board[i + tate[ii]][j + yoko[jj]] !== 0 ? 1 : 0;
213214
}
214215
}
215216
}

src/lib/api/board.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ export type BoardListItem = {
3333
id: number;
3434
name: string;
3535
createdAt: string;
36-
preview: boolean[][];
36+
preview: number[][];
3737
};
3838

3939
export async function fetchBoardList(isJapanese: boolean): Promise<BoardListItem[] | undefined> {
@@ -64,7 +64,7 @@ export async function fetchBoardList(isJapanese: boolean): Promise<BoardListItem
6464
export async function loadBoardById(
6565
id: number,
6666
isJapanese: boolean,
67-
): Promise<boolean[][] | undefined> {
67+
): Promise<number[][] | undefined> {
6868
try {
6969
const response = await fetch(`/api/board?id=${id}`);
7070

@@ -78,7 +78,7 @@ export async function loadBoardById(
7878

7979
const loadedBoard = await response.json();
8080

81-
return loadedBoard as boolean[][];
81+
return loadedBoard as number[][];
8282
} catch (err) {
8383
console.error("Load error", err);
8484
if (isJapanese) {

src/lib/board-preview.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@ const PREVIEW_SIZE = 20;
44
* 任意のサイズの盤面データから、中央 20x20 のプレビューを生成します。
55
* 20x20 に満たない場合は、中央に配置し、周囲を false (空白) で埋めます。
66
*/
7-
export function createBoardPreview(boardData: boolean[][]): boolean[][] {
7+
export function createBoardPreview(boardData: number[][]): number[][] {
88
const boardHeight = boardData.length;
99
const boardWidth = boardData[0]?.length || 0;
1010

11-
const finalPreview: boolean[][] = Array.from({ length: PREVIEW_SIZE }, () =>
12-
Array(PREVIEW_SIZE).fill(false),
11+
const finalPreview: number[][] = Array.from({ length: PREVIEW_SIZE }, () =>
12+
Array(PREVIEW_SIZE).fill(0),
1313
);
1414

1515
const sourceStartRow = Math.max(0, Math.floor((boardHeight - PREVIEW_SIZE) / 2));

src/lib/models/BoardManager.svelte.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { saveBoard, fetchBoardList, loadBoardById, type BoardListItem } from "$l
33

44
type SaveState =
55
| { saving: false }
6-
| { saving: true; data: boolean[][]; name: string; preview: boolean[][] };
6+
| { saving: true; data: number[][]; name: string; preview: number[][] };
77

88
type LoadState =
99
| { state: "closed" }
@@ -16,7 +16,7 @@ export class BoardManager {
1616

1717
constructor() {}
1818

19-
openSaveModal(board: boolean[][]) {
19+
openSaveModal(board: number[][]) {
2020
const preview = createBoardPreview(board);
2121
this.saveState = { saving: true, data: board, name: "", preview: preview };
2222
}
@@ -46,7 +46,7 @@ export class BoardManager {
4646
this.loadState = { state: "closed" };
4747
}
4848

49-
async load(id: number, isJapanese: boolean): Promise<boolean[][] | undefined> {
49+
async load(id: number, isJapanese: boolean): Promise<number[][] | undefined> {
5050
this.closeLoadModal();
5151
return await loadBoardById(id, isJapanese);
5252
}

src/routes/+page.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@
8888
break;
8989
}
9090
case "save_board": {
91-
boardManager.openSaveModal(event.data.data as boolean[][]);
91+
boardManager.openSaveModal(event.data.data as number[][]);
9292
break;
9393
}
9494
default: {

src/routes/api/board/+server.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { createBoardPreview } from "@/lib/board-preview.js";
44
import * as v from "valibot";
55

66
const BoardSchema = v.object({
7-
board: v.array(v.array(v.boolean())),
7+
board: v.array(v.array(v.number())),
88
name: v.pipe(v.string(), v.minLength(1, "盤面名は必須です。")),
99
});
1010

0 commit comments

Comments
 (0)