g cluster_104069929 model cluster_1380802478 bricks cluster_1664073796 Controller cluster_2666181 View BoardGrand104069929 (C)BoardGrand -   boardMatrix: int[][] [0..*] -   brickManager: BrickManager [0..1] -   brickManager2: BrickManager [0..1] -   cols: int [1] -   gameOver: boolean [1] -   pcs: PropertyChangeSupport [0..1] -   point: Point [0..1] -   point2: Point [0..1] -   rows: int [1] -   score: int [1] -   toSleep: boolean [1] + Pause() + Resume() + addPropertyChangeListener(listener: PropertyChangeListener) + checkAndClearFullRows() + createNewBrick(): boolean + createNewBrick2(): boolean + deletePosition(x: int, y: int, brickMatrix: int[][]) - deleteRow(row: int) + gameEnd() + gameOver(): Boolean + handleMovement(direction: String) + handleMovement2(direction: String) + horizontalMove(x: int, y: int, brickMatrix: int[][]) - isRowFull(row: int): boolean + mergeBrickToBackground() + mergeBrickToBackground2() + moveDown(): boolean + moveDown2(): boolean + moveLeft(): boolean + moveLeft2(): boolean + moveRight(): boolean + moveRight2(): boolean - moveRowsDown(startRow: int) + restartGame() + rotation(): boolean + rotation2(): boolean + run() + stopAndCreateNewBrick(): boolean + stopAndCreateNewBrick2(): boolean + updateNextPiece() + updateNextPiece2() + updateScore(r: int) BrickManager1014162761 (C)BrickManager -   brickTypes: String[] [0..*] -   bricks: ArrayList<Brick> [0..*] + NextBrick() + getBrick(brickType: String): Brick BoardGrand104069929->BrickManager1014162761 brickManager [0..1] BoardGrand104069929->BrickManager1014162761 brickManager2 [0..1] IBrick1014162761 (C)IBrick -   brickMatrix: List<int[][]> [0..*] -   rotationIndex: int [1] + getShapeMatrix(rotationIndex: int): int[][] + nextRotationIndex(): int BoardGrand104069929->IBrick1014162761 JBrick1014162761 (C)JBrick -   brickMatrix: List<int[][]> [0..*] -   rotationIndex: int [1] + getShapeMatrix(rotationIndex: int): int[][] + nextRotationIndex(): int BoardGrand104069929->JBrick1014162761 LBrick1014162761 (C)LBrick -   brickMatrix: List<int[][]> [0..*] -   rotationIndex: int [1] + getShapeMatrix(rotationIndex: int): int[][] + nextRotationIndex(): int BoardGrand104069929->LBrick1014162761 SBrick1014162761 (C)SBrick -   brickMatrix: List<int[][]> [0..*] -   rotationIndex: int [1] + getShapeMatrix(rotationIndex: int): int[][] + nextRotationIndex(): int BoardGrand104069929->SBrick1014162761 SquareBrick1014162761 (C)SquareBrick -   brickMatrix: List<int[][]> [0..*] -   rotationIndex: int [1] + getShapeMatrix(rotationIndex: int): int[][] + nextRotationIndex(): int BoardGrand104069929->SquareBrick1014162761 TBrick1014162761 (C)TBrick -   brickMatrix: List<int[][]> [0..*] -   rotationIndex: int [1] + getShapeMatrix(rotationIndex: int): int[][] + nextRotationIndex(): int BoardGrand104069929->TBrick1014162761 ZBrick1014162761 (C)ZBrick -   brickMatrix: List<int[][]> [0..*] -   rotationIndex: int [1] + getShapeMatrix(rotationIndex: int): int[][] + nextRotationIndex(): int BoardGrand104069929->ZBrick1014162761 TabOperation104069929 (C)TabOperation + checkLimit(boardMatrix: int[][], brickMatrix: int[][], row: int, col: int): boolean - checkOutOfBound(matrix: int[][], targetX: int, targetY: int): boolean + copy(original: int[][]): int[][] + intersect(matrix: int[][], brick: int[][], x: int, y: int): boolean + merge(boardMatrix: int[][], brickMatrix: int[][], row: int, col: int): int[][] KeyPadController1664073796 (C)KeyPadController -   board: Board [0..1] -   board2: Board [0..1] -   boardGrand: BoardGrand [0..1] + keyPressed(e: KeyEvent) KeyPadController1664073796->BoardGrand104069929 boardGrand [0..1] GrandCanva2666181 (C)GrandCanva -   board: BoardGrand [0..1] -   grid: int[][] [0..*] # paintComponent(g: Graphics) + propertyChange(e: PropertyChangeEvent) + updateGrid(newGrid: int[][]) GrandCanva2666181->BoardGrand104069929 board [0..1] GrandTetrisFrame2666181 (C)GrandTetrisFrame -   board: BoardGrand [0..1] +   coop: Boolean [0..1] -   keyPadController: KeyPadController [0..1] -   mainTheme: Themes [0..1] -   nextPieceCanva: NextPieceCanva [0..1] -   nextPieceCanva2: NextPieceCanvaJ2 [0..1] -   pJeu: JPanel [0..1] -   pLeft: JPanel [0..1] -   pNextPiece: JPanel [0..1] -   pNextPiece2: JPanel [0..1] -   pOptions: JPanel [0..1] -   pRight: JPanel [0..1] -   pSouth: JPanel [0..1] -   pauseButton: JButton [0..1] -   scorePanel: ScorePanel [0..1] -   soundGameOver: Themes [0..1] -   tetrisCanva: GrandCanva [0..1] -   thread: Thread [0..1] + propertyChange(event: PropertyChangeEvent) GrandTetrisFrame2666181->BoardGrand104069929 board [0..1] GrandTetrisFrame2666181->KeyPadController1664073796 keyPadController [0..1] GrandTetrisFrame2666181->GrandCanva2666181 tetrisCanva [0..1] NextPieceCanva2666181 (C)NextPieceCanva -   board: Board [0..1] -   boardGrand: BoardGrand [0..1] -   brickManager: BrickManager [0..1] -   nextBrick: Brick [0..1] # paintComponent(g: Graphics) + propertyChange(e: PropertyChangeEvent) GrandTetrisFrame2666181->NextPieceCanva2666181 nextPieceCanva [0..1] NextPieceCanvaJ22666181 (C)NextPieceCanvaJ2 -   boardGrand: BoardGrand [0..1] -   nextBrick: Brick [0..1] # paintComponent(g: Graphics) + propertyChange(e: PropertyChangeEvent) GrandTetrisFrame2666181->NextPieceCanvaJ22666181 nextPieceCanva2 [0..1] NextPieceCanva2666181->BoardGrand104069929 boardGrand [0..1] NextPieceCanvaJ22666181->BoardGrand104069929 boardGrand [0..1] TetrisFrame2666181 (C)TetrisFrame -   board: Board [0..1] -   board2: Board [0..1] -   board3: Board [0..1] +   coop: Boolean [0..1] -   keyPadController: KeyPadController [0..1] -   mainTheme: Themes [0..1] -   nextPieceCanva: NextPieceCanva [0..1] -   nextPieceCanva2: NextPieceCanva [0..1] -   pJeu: JPanel [0..1] -   pJeu2: JPanel [0..1] -   pLeft: JPanel [0..1] -   pNextPeice2: JPanel [0..1] -   pNextPiece: JPanel [0..1] -   pOptions: JPanel [0..1] -   pRight: JPanel [0..1] -   pRight2: JPanel [0..1] -   pSouth: JPanel [0..1] -   pauseButton: JButton [0..1] -   scorePanel: ScorePanel [0..1] -   scorePanel2: ScorePanel [0..1] -   soundGameOver: Themes [0..1] -   tetrisCanva: TetrisCanva [0..1] -   tetrisCanva2: TetrisCanva [0..1] -   thread: Thread [0..1] -   thread2: Thread [0..1] -   thread3: Thread [0..1] +   versus: Boolean [0..1] + propertyChange(event: PropertyChangeEvent) TetrisFrame2666181->KeyPadController1664073796 keyPadController [0..1] TetrisFrame2666181->NextPieceCanva2666181 nextPieceCanva [0..1] TetrisFrame2666181->NextPieceCanva2666181 nextPieceCanva2 [0..1]