A lightweight, self-contained Tetris component you can copy/paste into any Angular app.
src/lib/tetris/tetris.module.ts: NgModule exporting the componentsrc/lib/tetris/tetris.component.ts: Core logic and inputs/outputssrc/lib/tetris/tetris.component.html: Templatesrc/lib/tetris/tetris.component.scss: Styles
- Works with Angular 14+ (regular NgModule). No external state.
- Optional: replace buttons with Angular Material if desired.
- Create a directory, e.g.
app/shared/tetris/, and copy the four files. - Ensure your module imports
CommonModule(already done inTetrisModule). - Import the module where you need it:
import { TetrisModule } from './shared/tetris/tetris.module';
@NgModule({
imports: [TetrisModule]
})
export class FeatureModule {}- Use the component in a template:
<app-tetris></app-tetris>- Left/Right: move
- Up or X: rotate clockwise
- Z: rotate counterclockwise
- Down: soft drop (+1 per step)
- Space: hard drop (+2 per row)
- P: pause/resume, R: restart
- No persistence. No services required. No RxJS required.
- Board: 10x20. 7-bag randomization. Basic wall kicks.
- Scoring: 100/300/500/800 for 1-4 line clears. Extra points for drops.