Skip to content

Commit 3465f71

Browse files
authored
Merge pull request #17 from ut-code/Timer
加速・減速機能実装
2 parents 91881c6 + 733fee6 commit 3465f71

File tree

2 files changed

+46
-4
lines changed

2 files changed

+46
-4
lines changed

src/iframe/life-game.js

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,13 @@
33
let timer = "stop";
44
let timerId = 0;
55
let generationFigure = 0;
6+
let timerTime = 1000;
67

78
//変数設定
8-
let boardSize = 20;
9-
const CELL_SIZE = 22;
9+
const defaultBoardSize = 20;
10+
const defaultCellSize = 22;
11+
let boardSize = defaultBoardSize;
12+
let CELL_SIZE = defaultCellSize;
1013
const BOARD_MIN = 100;
1114
const BOARD_MAX = 10;
1215

@@ -145,7 +148,7 @@ function progressBoard() {
145148

146149
on.play = () => {
147150
timer = "start";
148-
timerId = setInterval(progressBoard, 1000);
151+
timerId = setInterval(progressBoard, timerTime);
149152
};
150153

151154
on.pause = () => {
@@ -161,6 +164,14 @@ on.resize = (newBoardSize) => {
161164
boardSize = newBoardSize;
162165
};
163166

167+
on.timer_change = (ms) => {
168+
timerTime = ms;
169+
if (timer === "start") {
170+
clearInterval(timerId);
171+
timerId = setInterval(progressBoard, timerTime);
172+
}
173+
};
174+
164175
sizeChangeButton.onclick = () => {
165176
const newSize = parseInt(sizeInput.value, 10);
166177
if (isNaN(newSize) || newSize < BOARD_MAX || BOARD_MIN < newSize) {

src/routes/+page.svelte

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
let showEditor = $state(true);
2525
let preview_iframe: HTMLIFrameElement | undefined = $state();
2626
let isProgress = $state(false);
27+
let intervalMs = 1000;
2728
let drawerOpen = $state(false);
2829
let resetModalOpen = $state(false);
2930
let bottomDrawerOpen = $state(false);
@@ -37,7 +38,7 @@
3738
});
3839
3940
function sendEvent(event: string, message?: unknown) {
40-
preview_iframe?.contentWindow?.postMessage({ type: event, date: message }, "*");
41+
preview_iframe?.contentWindow?.postMessage({ type: event, data: message }, "*");
4142
}
4243
</script>
4344

@@ -188,4 +189,34 @@
188189
>
189190
<img class="size-6" src={icons.RightArrow} alt="Right Arrow" />
190191
</div>
192+
193+
<button
194+
class="btn btn-ghost btn-circle hover:bg-[rgb(220,220,220)] swap ml-2"
195+
onclick={() => {
196+
intervalMs = intervalMs / 2;
197+
sendEvent("timer_change", intervalMs);
198+
}}
199+
>
200+
x2
201+
</button>
202+
203+
<button
204+
class="btn btn-ghost btn-circle hover:bg-[rgb(220,220,220)] swap ml-2"
205+
onclick={() => {
206+
intervalMs = intervalMs * 2;
207+
sendEvent("timer_change", intervalMs);
208+
}}
209+
>
210+
x0.5
211+
</button>
212+
213+
<button
214+
class="btn btn-ghost btn-circle hover:bg-[rgb(220,220,220)] swap ml-2"
215+
onclick={() => {
216+
intervalMs = 1000;
217+
sendEvent("timer_change", intervalMs);
218+
}}
219+
>
220+
Reset Timer
221+
</button>
191222
</div>

0 commit comments

Comments
 (0)