Tetris - Advanced Programming issueshttps://git.unistra.fr/nlaforet/tetris/-/issues2021-02-20T17:44:30Zhttps://git.unistra.fr/nlaforet/tetris/-/issues/4Configure CMake2021-02-20T17:44:30ZLAFORÊT Nicolasnlaforet@etu.unistra.frConfigure CMakeCreate and configure CMake build system generator.Create and configure CMake build system generator.DevOps Setup - Sprint 1LAFORÊT Nicolasnlaforet@etu.unistra.frLAFORÊT Nicolasnlaforet@etu.unistra.fr2021-02-21https://git.unistra.fr/nlaforet/tetris/-/issues/2Basic git init files2021-02-14T16:12:02ZLAFORÊT Nicolasnlaforet@etu.unistra.frBasic git init filesAdd basic git init files:
- [x] :see_no_evil: `.gitignore`
- [x] :pencil: `README.md` main structure.Add basic git init files:
- [x] :see_no_evil: `.gitignore`
- [x] :pencil: `README.md` main structure.DevOps Setup - Sprint 1LAFORÊT Nicolasnlaforet@etu.unistra.frLAFORÊT Nicolasnlaforet@etu.unistra.fr2021-02-21https://git.unistra.fr/nlaforet/tetris/-/issues/1Configure basic CI pipeline2021-02-20T17:44:49ZLAFORÊT Nicolasnlaforet@etu.unistra.frConfigure basic CI pipelineCreate and configure Gitlab CI pipeline to **build** and **test** the project automatically for every `push` on the `master` branch and every `merge request`.
- [x] Create `.gitlab-ci.yml` file
- [x] Configure **build** stage
- [x] ...Create and configure Gitlab CI pipeline to **build** and **test** the project automatically for every `push` on the `master` branch and every `merge request`.
- [x] Create `.gitlab-ci.yml` file
- [x] Configure **build** stage
- [x] Configure **test** stageDevOps Setup - Sprint 1LAFORÊT Nicolasnlaforet@etu.unistra.frLAFORÊT Nicolasnlaforet@etu.unistra.fr2021-02-21https://git.unistra.fr/nlaforet/tetris/-/issues/12Grid2021-04-17T13:58:11ZLAFORÊT Nicolasnlaforet@etu.unistra.frGrid- [x] Dimensions: height / width
- [x] Cells in the grid
- [x] Add Tetromino
- [x] Collision checks- [x] Dimensions: height / width
- [x] Cells in the grid
- [x] Add Tetromino
- [x] Collision checksMVP - Sprint 2LAFORÊT Nicolasnlaforet@etu.unistra.frLAFORÊT Nicolasnlaforet@etu.unistra.frhttps://git.unistra.fr/nlaforet/tetris/-/issues/11Game2021-04-17T13:58:16ZLAFORÊT Nicolasnlaforet@etu.unistra.frGame### Fields
- [x] Grid
- [ ] Current Tetromino (see #6)
- [ ] Held Tetromino
- [ ] Scoring system (see #10)
- [ ] RNG### Fields
- [x] Grid
- [ ] Current Tetromino (see #6)
- [ ] Held Tetromino
- [ ] Scoring system (see #10)
- [ ] RNGMVP - Sprint 2LAFORÊT Nicolasnlaforet@etu.unistra.frLAFORÊT Nicolasnlaforet@etu.unistra.fr2021-03-07https://git.unistra.fr/nlaforet/tetris/-/issues/9Player Input2021-04-17T13:58:04ZLAFORÊT Nicolasnlaforet@etu.unistra.frPlayer InputMVP - Sprint 2LAFORÊT Nicolasnlaforet@etu.unistra.frLAFORÊT Nicolasnlaforet@etu.unistra.fr2021-03-07https://git.unistra.fr/nlaforet/tetris/-/issues/8Create RNG Module2021-04-17T13:58:00ZLAFORÊT Nicolasnlaforet@etu.unistra.frCreate RNG ModuleRandom number generator used for tetromino creation.Random number generator used for tetromino creation.MVP - Sprint 2LAFORÊT Nicolasnlaforet@etu.unistra.frLAFORÊT Nicolasnlaforet@etu.unistra.fr2021-03-07https://git.unistra.fr/nlaforet/tetris/-/issues/7Game Loop2021-04-17T13:57:54ZLAFORÊT Nicolasnlaforet@etu.unistra.frGame Loop## Basic Game Loop
- Game Timing
- Get Input
- Handle input and check for collision
- Drop current tetromino down if enough time as passed
- If the tetromino can't drop down
- Then lock it in the board
- Check if we created an...## Basic Game Loop
- Game Timing
- Get Input
- Handle input and check for collision
- Drop current tetromino down if enough time as passed
- If the tetromino can't drop down
- Then lock it in the board
- Check if we created any lines
- Get/Generate next tetromino
- If it doesn't fit then it is game over
### FlowChart
```mermaid
graph TD
Start[Start] --> Init[Game Initialisation];
Init[Game Initialisation] --> QOver{Game Over?};
QOver -->|Yes| End;
QOver -->|No| Tick[Game Tick];
Tick --> Input[Handle Input];
Input --> Collision[Check for any collisions];
Collision --> DropT{Drop timer passed?};
DropT -->|Yes| Drop[Drop current tetromino];
DropT -->|No| QOver;
Drop --> Lock[Lock tetromino in Board];
Lock --> Lines{Any new lines?};
Lines -->|Yes| Score[Increase Score];
Lines -->|No| NewT[Generate new Tetromino];
Score --> NewT
NewT --> NewFit{Does it fit?};
NewFit -->|No| SetOver[Set Game Over];
SetOver --> QOver;
NewFit -->|Yes| QOver;
```MVP - Sprint 2LAFORÊT Nicolasnlaforet@etu.unistra.frLAFORÊT Nicolasnlaforet@etu.unistra.fr2021-03-07https://git.unistra.fr/nlaforet/tetris/-/issues/6Tetrominoes2021-04-17T13:57:47ZLAFORÊT Nicolasnlaforet@etu.unistra.frTetrominoes### Structure
A tetromino is represented by a 2x2 array
### Fields
- [x] Tetromino type
- [x] Rotation
- [x] Position (x,y coordinates)
### One-sided tetrominoes
| Tetromino I | Tetromino O | Tetromino T | Tetromino L | Tetromino J...### Structure
A tetromino is represented by a 2x2 array
### Fields
- [x] Tetromino type
- [x] Rotation
- [x] Position (x,y coordinates)
### One-sided tetrominoes
| Tetromino I | Tetromino O | Tetromino T | Tetromino L | Tetromino J | Tetromino Z | Tetromino S |
| :---------: | :---------: | :---------: | :---------: | :---------: | :---------: | :---------: |
| ![Tetrimino I](https://upload.wikimedia.org/wikipedia/commons/thumb/f/f4/Tetris_I.svg/65px-Tetris_I.svg.png) | ![Tetromino O](https://upload.wikimedia.org/wikipedia/commons/thumb/8/82/Tetris_O.svg/52px-Tetris_O.svg.png) | ![Tetromino T](https://upload.wikimedia.org/wikipedia/commons/thumb/9/91/Tetris_T.svg/65px-Tetris_T.svg.png) | ![Tetromino L](https://upload.wikimedia.org/wikipedia/commons/thumb/8/81/Tetris_L.svg/65px-Tetris_L.svg.png) | ![Tetromino J](https://upload.wikimedia.org/wikipedia/commons/thumb/2/25/Tetris_J.svg/65px-Tetris_J.svg.png) | ![Tetromino Z](https://upload.wikimedia.org/wikipedia/commons/thumb/3/33/Tetris_Z.svg/65px-Tetris_Z.svg.png) | ![Tetromino S](https://upload.wikimedia.org/wikipedia/commons/thumb/7/7b/Tetris_S.svg/65px-Tetris_S.svg.png) |MVP - Sprint 2LAFORÊT Nicolasnlaforet@etu.unistra.frLAFORÊT Nicolasnlaforet@etu.unistra.fr2021-03-07https://git.unistra.fr/nlaforet/tetris/-/issues/5Add Test coverage2021-06-28T15:21:02ZLAFORÊT Nicolasnlaforet@etu.unistra.frAdd Test coverageMVP - Sprint 2LAFORÊT Nicolasnlaforet@etu.unistra.frLAFORÊT Nicolasnlaforet@etu.unistra.fr2021-03-07