⚠ 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

+getBoard()

+shiftLeft()

ForceEffect

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()

+checkGameOver()

+setBlock(block)

+checkCollision(positions)

+replaceCurrentBlock()

Effect

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()

+getLevelInitializers()

+getPlayers()

0…N

Observer Pattern

+shiftLeft()

+shiftRight()

+shiftDown()

+rotateClockwise()

+rotateCounterClockwise()

LevelThreeEffect

+getLevelNumber()

+setRandom()

+setNoRandom()

+onTurnStart()

+onDrop()

+onDropDone()

+getLevelNumber()

+getLevelNumber()

+getLevelNumber()

+getLevelNumber()

+setRandom()

+setNoRandom()

+onTurnStart()

+onDrop()

+onDropDone()

+getCurrentBlock()

+onTurnStart()

+getBoard()

+getNextBlock()

+getCurrentBlockDrop()

+getScore()

+getLevel()

+checkGameOver()

+changeLevel()

+shiftLeft()

+shiftRight()

+shiftDown()

+rotateClockwise()

+rotateCounterClockwise()

+drop()

+replaceCurrentBlock()

+getCurrentBlock()

+onTurnStart()

+getBoard()

+getNextBlock()

+getCurrentBlockDrop()

+getScore()

+getLevel()

+instantDrop()

+checkGameOver()

+shiftLeft()

+shiftRight()

+shiftDown()

+rotateClockwise()

+rotateCounterClockwise()

+drop()

+replaceCurrentBlock()

+getCurrentBlock()

+onTurnStart()

+getBoard()

+getNextBlock()

+getCurrentBlockDrop()

+getScore()

+getLevel()

+instantDrop()

+checkGameOver()

+shiftRight()

+getCells()

+transferToGrid()

+currentPositions()

+nextTurn()

+restart()

+getCurrentPlayer()

+getTurn()

+getHighScore()

+getGameOver()