下一个
diff --git a/src/lib/tetris.js b/src/lib/tetris.js
index 9030156..c53a2ac 100644
--- a/src/lib/tetris.js
+++ b/src/lib/tetris.js
@@ -210,10 +210,11 @@ export function moveDownTetromino(tetromino, tetrominoes, onCollise, onGameOver,
return moved
}
- if (eliminateLines(tetromino, tetrominoes, setTetrominoes) == 0 && reachTop) {
+ const eliminatedLines = eliminateLines(tetromino, tetrominoes, setTetrominoes)
+ if (eliminatedLines == 0 && reachTop) {
onGameOver()
} else {
- onCollise()
+ onCollise(eliminatedLines)
}
return tetromino
@@ -245,9 +246,10 @@ export function fallDownTetromino(tetromino, tetrominoes, onCollise, onGameOver,
tetromino.y = moved.y - 1
- if (eliminateLines(tetromino, tetrominoes, setTetrominoes) == 0 && result.reachTop) {
+ const eliminatedLines = eliminateLines(tetromino, tetrominoes, setTetrominoes)
+ if (eliminatedLines == 0 && result.reachTop) {
onGameOver()
} else {
- onCollise()
+ onCollise(eliminatedLines)
}
}
\ No newline at end of file
diff --git a/src/pages/index.js b/src/pages/index.js
index dac980b..5420b1c 100644
--- a/src/pages/index.js
+++ b/src/pages/index.js
@@ -11,6 +11,8 @@ export default function () {
const [tetrominoes, setTetrominoes] = useState([])
const [currentTetromino, setCurrentTetromino] = useState()
const [nextTetromino, setNextTetromino] = useState()
+ const [score, setScore] = useState(0)
+ const [eliminatedLines, setEliminatedLines] = useState(0)
const [gameOver, setGameOver] = useState(true)
const mainRef = useRef()
@@ -55,12 +57,20 @@ export default function () {
setCurrentTetromino(rotateTetromino(currentTetromino, tetrominoes))
}
+ const onCollise = (elimiLines) => {
+ if (elimiLines > 0) {
+ setEliminatedLines(eliminatedLines + elimiLines)
+ setScore(score + 10 * Math.pow(2, elimiLines))
+ }
+ queueMicrotask(next)
+ }
+
const down = () => {
setCurrentTetromino(
moveDownTetromino(
currentTetromino,
tetrominoes,
- () => queueMicrotask(next),
+ onCollise,
() => setGameOver(true),
setTetrominoes)
)
@@ -79,7 +89,7 @@ export default function () {
fallDownTetromino(
currentTetromino,
tetrominoes,
- () => queueMicrotask(next),
+ onCollise,
() => setGameOver(true),
setTetrominoes)
}
@@ -117,7 +127,7 @@ export default function () {
}
return (
-
+