Skip to content

Commit 8987108

Browse files
committed
feat: finish tetris
1 parent 64b808b commit 8987108

File tree

2 files changed

+13
-11
lines changed

2 files changed

+13
-11
lines changed

Tetris/App.tsx

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, { useEffect, useReducer, useState } from "react";
1+
import React, { useEffect, useLayoutEffect, useReducer, useState } from "react";
22
import { useInterval } from "usehooks-ts";
33
import Block from "./components/Block";
44
import {
@@ -27,14 +27,22 @@ function App() {
2727
const [bgBlock, bgBlockDispatch] = useReducer(bgBlockReducer, [
2828
...EMPTY_BLOCK,
2929
]);
30-
useEffect(() => {
31-
initGame();
32-
}, []);
3330
const initGame = () => {
3431
bgBlockDispatch({ type: INITIAL_SCREEN });
3532
moveBlockDispatch({ type: INITIAL_SCREEN });
3633
moveBlockDispatch({ type: ADD_BLOCK, bgBlock });
3734
};
35+
useEffect(() => {
36+
initGame();
37+
}, []);
38+
useLayoutEffect(() => {
39+
if (hasRepeatBlock(moveBlock, bgBlock)) {
40+
setTimeout(() => {
41+
alert("游戏结束, 是否重新开始?");
42+
initGame();
43+
}, 0);
44+
}
45+
}, [bgBlock]);
3846
const combineDown = (_moveBlock = moveBlock) => {
3947
// 1. 判断是否有方块
4048
if (hasBlock(_moveBlock)) {
@@ -45,11 +53,7 @@ function App() {
4553
} else {
4654
// 4. 不能移动,合并方块, 重新生成方块
4755
bgBlockDispatch({ type: MERGE_BLOCK, moveBlock: _moveBlock });
48-
moveBlockDispatch({ type: ADD_BLOCK });
49-
if (hasRepeatBlock(_moveBlock, bgBlock)) {
50-
alert("游戏结束");
51-
initGame();
52-
}
56+
moveBlockDispatch({ type: ADD_BLOCK, bgBlock });
5357
}
5458
}
5559
};

Tetris/reducers/moveBlock.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@ import {
1212
canMoveDown,
1313
canMoveLeft,
1414
canMoveRight,
15-
// hasRepeatBlock,
16-
// canRotateBlock,
1715
moveDown,
1816
moveLeft,
1917
moveRight,

0 commit comments

Comments
 (0)