diff options
Diffstat (limited to 'inc/tetromino.h')
-rw-r--r-- | inc/tetromino.h | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/inc/tetromino.h b/inc/tetromino.h index 30d55a3..04f21d3 100644 --- a/inc/tetromino.h +++ b/inc/tetromino.h @@ -20,6 +20,8 @@ struct Tetromino { int size; struct Color color; int directions[4][4][4]; + int cw_kick_table[4][10]; + int ccw_kick_table[4][10]; }; struct Tetromino tetrominos[7] = { @@ -52,6 +54,18 @@ struct Tetromino tetrominos[7] = { {0, 1, 0, 0}, {0, 1, 0, 0} } + }, + .cw_kick_table = { + {+0,+0, -2,+0, +1,+0, -2,-1, +1,+2}, + {+0,+0, -1,+0, +2,+0, -1,+2, +2,-1}, + {+0,+0, +2,+0, -1,+0, +2,+1, -1,-2}, + {+0,+0, +1,+0, -2,+0, +1,-2, -2,+1} + }, + .ccw_kick_table = { + {+0,+0, -1,+0, +2,+0, -1,+2, +2,-1}, + {+0,+0, +2,+0, -1,+0, +2,+1, -1,-2}, + {+0,+0, +1,+0, -2,+0, +1,-2, -2,+1}, + {+0,+0, -2,+0, +1,+0, -2,-1, +1,+2} } }, [J] = { @@ -78,6 +92,18 @@ struct Tetromino tetrominos[7] = { {0, 1, 0}, {0, 1, 0} } + }, + .cw_kick_table = { + {+0,+0, -1,+0, -1,+1, +0,-2, -1,-2}, + {+0,+0, +1,+0, +1,-1, +0,+2, +1,+2}, + {+0,+0, +1,+0, +1,+1, +0,-2, +1,-2}, + {+0,+0, -1,+0, -1,-1, +0,+2, -1,+2} + }, + .ccw_kick_table = { + {+0,+0, +1,+0, +1,+1, +0,-2, +1,-2}, + {+0,+0, +1,+0, +1,-1, +0,+2, +1,+2}, + {+0,+0, -1,+0, -1,+1, +0,-2, -1,-2}, + {+0,+0, -1,+0, -1,-1, +0,+2, -1,+2} } }, [L] = { @@ -104,6 +130,18 @@ struct Tetromino tetrominos[7] = { {0, 1, 0}, {1, 1, 0} } + }, + .cw_kick_table = { + {+0,+0, -1,+0, -1,+1, +0,-2, -1,-2}, + {+0,+0, +1,+0, +1,-1, +0,+2, +1,+2}, + {+0,+0, +1,+0, +1,+1, +0,-2, +1,-2}, + {+0,+0, -1,+0, -1,-1, +0,+2, -1,+2} + }, + .ccw_kick_table = { + {+0,+0, +1,+0, +1,+1, +0,-2, +1,-2}, + {+0,+0, +1,+0, +1,-1, +0,+2, +1,+2}, + {+0,+0, -1,+0, -1,+1, +0,-2, -1,-2}, + {+0,+0, -1,+0, -1,-1, +0,+2, -1,+2} } }, [O] = { @@ -130,6 +168,18 @@ struct Tetromino tetrominos[7] = { {0, 1, 1}, {0, 1, 1} } + }, + .cw_kick_table = { + {+0,+0, +0,+0, +0,+0, +0,+0, +0,+0}, + {+0,+0, +0,+0, +0,+0, +0,+0, +0,+0}, + {+0,+0, +0,+0, +0,+0, +0,+0, +0,+0}, + {+0,+0, +0,+0, +0,+0, +0,+0, +0,+0} + }, + .ccw_kick_table = { + {+0,+0, +0,+0, +0,+0, +0,+0, +0,+0}, + {+0,+0, +0,+0, +0,+0, +0,+0, +0,+0}, + {+0,+0, +0,+0, +0,+0, +0,+0, +0,+0}, + {+0,+0, +0,+0, +0,+0, +0,+0, +0,+0} } }, [S] = { @@ -156,6 +206,18 @@ struct Tetromino tetrominos[7] = { {1, 1, 0}, {1, 0, 0} } + }, + .cw_kick_table = { + {+0,+0, -1,+0, -1,+1, +0,-2, -1,-2}, + {+0,+0, +1,+0, +1,-1, +0,+2, +1,+2}, + {+0,+0, +1,+0, +1,+1, +0,-2, +1,-2}, + {+0,+0, -1,+0, -1,-1, +0,+2, -1,+2} + }, + .ccw_kick_table = { + {+0,+0, +1,+0, +1,+1, +0,-2, +1,-2}, + {+0,+0, +1,+0, +1,-1, +0,+2, +1,+2}, + {+0,+0, -1,+0, -1,+1, +0,-2, -1,-2}, + {+0,+0, -1,+0, -1,-1, +0,+2, -1,+2} } }, [T] = { @@ -182,6 +244,18 @@ struct Tetromino tetrominos[7] = { {1, 1, 0}, {0, 1, 0} } + }, + .cw_kick_table = { + {+0,+0, -1,+0, -1,+1, +0,-2, -1,-2}, + {+0,+0, +1,+0, +1,-1, +0,+2, +1,+2}, + {+0,+0, +1,+0, +1,+1, +0,-2, +1,-2}, + {+0,+0, -1,+0, -1,-1, +0,+2, -1,+2} + }, + .ccw_kick_table = { + {+0,+0, +1,+0, +1,+1, +0,-2, +1,-2}, + {+0,+0, +1,+0, +1,-1, +0,+2, +1,+2}, + {+0,+0, -1,+0, -1,+1, +0,-2, -1,-2}, + {+0,+0, -1,+0, -1,-1, +0,+2, -1,+2} } }, [Z] = { @@ -208,6 +282,18 @@ struct Tetromino tetrominos[7] = { {1, 1, 0}, {0, 1, 0} } + }, + .cw_kick_table = { + {+0,+0, -1,+0, -1,+1, +0,-2, -1,-2}, + {+0,+0, +1,+0, +1,-1, +0,+2, +1,+2}, + {+0,+0, +1,+0, +1,+1, +0,-2, +1,-2}, + {+0,+0, -1,+0, -1,-1, +0,+2, -1,+2} + }, + .ccw_kick_table = { + {+0,+0, +1,+0, +1,+1, +0,-2, +1,-2}, + {+0,+0, +1,+0, +1,-1, +0,+2, +1,+2}, + {+0,+0, -1,+0, -1,+1, +0,-2, -1,-2}, + {+0,+0, -1,+0, -1,-1, +0,+2, -1,+2} } } }; |