⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠

Text Elements

Game

+command(input)

AbstractGamePlayer

+shiftLeft()

+shiftRight()

+shiftDown()

+rotateClockwise()

+rotateCounterClockwise()

+drop()

GamePlayer

BlindEffect

HeavyEffect

+print()

+shiftDown()

ForceEffect

+updateCurrentBlock()

Block

+computeShiftLeft()

+computeShiftDown()

+computeShiftRight()

+computeRotateClockwise()

+computeRotateCounterclockwise()

+setPositions()

IBlock

+computeRotateClockwise()

+computeRotateCounterclockwise()

JBlock

+computeRotateClockwise()

+computeRotateCounterclockwise()

LBlock

+computeRotateClockwise()

+computeRotateCounterclockwise()

OBlock

+computeRotateClockwise()

+computeRotateCounterclockwise()

SBlock

+computeRotateClockwise()

+computeRotateCounterclockwise()

ZBlock

+computeRotateClockwise()

+computeRotateCounterclockwise()

TBlock

+computeRotateClockwise()

+computeRotateCounterclockwise()

Grid

+checkAndClearRows()

+print()

+addBlock(block)

+checkCollision(positions)

+replaceCurrentBlock()

+shiftLeft()

+shiftRight()

+shiftDown()

+rotateClockwise()

+rotateCounterClockwise()

+drop()

+replaceCurrentBlock()

Effect

+shiftLeft()

+shiftRight()

+shiftDown()

+rotateClockwise()

+rotateCounterClockwise()

+drop()

+updateCurrentBlock()

Cell

4

0…165

1

1

1…N

2

LevelZero

+generateBlock()

LevelOne

LevelTwo

LevelThree

LevelFour

Level

+generateBlock()

+generateBlock()

+generateBlock()

+generateBlock()

+generateBlock()

1

Decorator Pattern

GameRenderer

+render()

+gameLoop()

0…N

1

GraphicalDisplay

+render()

TextDisplay

+render()

+applyEffect()

+removeEffect()

0…N

Observer Pattern

Level4Effect

+shiftLeft()

+shiftRight()

+shiftDown()

+rotateClockwise()

+rotateCounterClockwise()

Level3Effect

+shiftLeft()

+shiftRight()

+shiftDown()

+rotateClockwise()

+rotateCounterClockwise()

+notifyDrop()