Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
Fork of el17ajf by
Tetromino/Tetromino.cpp@5:3efbdcb3efaf, 2019-03-13 (annotated)
- Committer:
- el17ajf
- Date:
- Wed Mar 13 09:30:36 2019 +0000
- Revision:
- 5:3efbdcb3efaf
- Parent:
- 4:aa433f9865a6
- Child:
- 6:a54df561f442
Immutable grid class
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| el17ajf | 4:aa433f9865a6 | 1 | #include "Tetromino.h" |
| el17ajf | 4:aa433f9865a6 | 2 | |
| el17ajf | 5:3efbdcb3efaf | 3 | Tetromino GetTetriminoOfType(Type type) { |
| el17ajf | 5:3efbdcb3efaf | 4 | switch (type) { |
| el17ajf | 5:3efbdcb3efaf | 5 | case T: |
| el17ajf | 5:3efbdcb3efaf | 6 | return getTetrominoFromString( |
| el17ajf | 5:3efbdcb3efaf | 7 | "* " |
| el17ajf | 5:3efbdcb3efaf | 8 | "**" |
| el17ajf | 5:3efbdcb3efaf | 9 | "* " |
| el17ajf | 5:3efbdcb3efaf | 10 | " "); |
| el17ajf | 5:3efbdcb3efaf | 11 | break; |
| el17ajf | 5:3efbdcb3efaf | 12 | case L: |
| el17ajf | 5:3efbdcb3efaf | 13 | return getTetrominoFromString( |
| el17ajf | 5:3efbdcb3efaf | 14 | "* " |
| el17ajf | 5:3efbdcb3efaf | 15 | "* " |
| el17ajf | 5:3efbdcb3efaf | 16 | "* " |
| el17ajf | 5:3efbdcb3efaf | 17 | "* "); |
| el17ajf | 5:3efbdcb3efaf | 18 | break; |
| el17ajf | 5:3efbdcb3efaf | 19 | } |
| el17ajf | 5:3efbdcb3efaf | 20 | } |
| el17ajf | 5:3efbdcb3efaf | 21 | |
| el17ajf | 5:3efbdcb3efaf | 22 | Tetromino getTetrominoFromString(const char * str_blocks) { |
| el17ajf | 5:3efbdcb3efaf | 23 | int top = 0; |
| el17ajf | 5:3efbdcb3efaf | 24 | blocks = new Block[4]; |
| el17ajf | 5:3efbdcb3efaf | 25 | for (int i = 0; i < 8; i++) { |
| el17ajf | 5:3efbdcb3efaf | 26 | if (*(blocks + i) == '*') { |
| el17ajf | 5:3efbdcb3efaf | 27 | blocks[top++] = Block(i % 2, i / 2); |
| el17ajf | 5:3efbdcb3efaf | 28 | } |
| el17ajf | 5:3efbdcb3efaf | 29 | } |
| el17ajf | 5:3efbdcb3efaf | 30 | return Tetromino(blocks[0], blocks[1], blocks[2], blocks[3]); |
| el17ajf | 4:aa433f9865a6 | 31 | } |
| el17ajf | 4:aa433f9865a6 | 32 | |
| el17ajf | 4:aa433f9865a6 | 33 | Tetromino::Tetromino(Block a, Block b, Block c, Block d) { |
| el17ajf | 4:aa433f9865a6 | 34 | blocks = new Block[4]; |
| el17ajf | 4:aa433f9865a6 | 35 | blocks[0] = a; |
| el17ajf | 4:aa433f9865a6 | 36 | blocks[1] = b; |
| el17ajf | 4:aa433f9865a6 | 37 | blocks[2] = c; |
| el17ajf | 4:aa433f9865a6 | 38 | blocks[3] = d; |
| el17ajf | 4:aa433f9865a6 | 39 | } |
| el17ajf | 4:aa433f9865a6 | 40 | |
| el17ajf | 4:aa433f9865a6 | 41 | Tetromino::Tetromino translated(int dx, int dy) { |
| el17ajf | 4:aa433f9865a6 | 42 | return Tetromino( |
| el17ajf | 4:aa433f9865a6 | 43 | blocks[0].translated(dx, dy), |
| el17ajf | 4:aa433f9865a6 | 44 | blocks[1].translated(dx, dy), |
| el17ajf | 4:aa433f9865a6 | 45 | blocks[2].translated(dx, dy), |
| el17ajf | 4:aa433f9865a6 | 46 | blocks[3].translated(dx, dy) |
| el17ajf | 4:aa433f9865a6 | 47 | ); |
| el17ajf | 4:aa433f9865a6 | 48 | } |
| el17ajf | 4:aa433f9865a6 | 49 | |
| el17ajf | 4:aa433f9865a6 | 50 | Tetromino::Tetromino movedLeft() { |
| el17ajf | 4:aa433f9865a6 | 51 | return translated(-1, 0); |
| el17ajf | 4:aa433f9865a6 | 52 | } |
| el17ajf | 4:aa433f9865a6 | 53 | |
| el17ajf | 4:aa433f9865a6 | 54 | Tetromino::Tetromino movedRight() { |
| el17ajf | 4:aa433f9865a6 | 55 | return translated(1, 0); |
| el17ajf | 4:aa433f9865a6 | 56 | } |
