Created
October 15, 2022 05:19
-
-
Save Rafe/4474269c1848b9907a677e388a934b53 to your computer and use it in GitHub Desktop.
tetris logic
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
A game has 7 types of Tetrimino: I, L, J, Z, S, O, T. | |
show board that contains 20 * 10 Blocks. | |
show the current moving piece that is controlled by the player. | |
show the future position where the current piece will drop | |
show the next piece, and the piece that is held | |
show the score, level, and line | |
when the game state is GAME_OVER or PAUSE | |
press enter to start the game | |
when the game state is START | |
for every tick (0.8 - (level - 1) * 0.007) ** (level - 1) second | |
the current piece moves down | |
when the piece move down | |
if the piece can move | |
move the current piece one block down | |
if the piece is blocked | |
add the tick to the current tick time of the piece | |
if tick time > 0.4 sec or total time > 4 sec | |
add the current piece to the board | |
clear the full line | |
add the line cleared to the total lines | |
add score by [40, 100, 300, 1200] for each line cleared | |
add the level for every 20 lines cleared | |
play the clear animation for 0.4 sec | |
create a new current piece from the next piece | |
create a new next piece | |
when the piece move left | |
if the piece can move | |
move the current piece one block left | |
reset current piece tick time | |
when the piece move right | |
if the piece can move | |
move the current piece one block right | |
reset current piece tick time | |
when piece hold | |
if the holding piece exists | |
switch the holding piece with the current piece | |
lock the piece and hold until the next current piece | |
if the holding piece not exists | |
put the current piece to hold | |
create the new current piece | |
create the new next piece | |
when piece drop | |
move the piece to the bottom of the board | |
play the shaken animation | |
add the current piece to the board | |
clear the full line | |
add the line cleared to the total lines | |
add score by [40, 100, 300, 1200] for each line cleared | |
add the level for every 20 lines cleared | |
play the clear animation for 0.4 sec | |
create a new current piece from the next piece | |
create a new next piece | |
when piece rotate | |
move the current piece clockwise/counterclockwise by pivot | |
if the piece is blocked | |
try to move one block down | |
or try to move one block right | |
or try to move one block left | |
or try to move two blocks up | |
or cancel rotate | |
when the current piece is blocked at the top | |
save the game state to Game Over | |
when the arrow key ArrowLeft, ArrowDown, ArrowRight is pressed | |
overwrite original input | |
when the key pressed repeat the key after 0.15s in 0.05s interval | |
when the key released, stop the repeat key |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment