public void paintComponent(Graphics g) { super.paintComponent(g); _tG.readTile((char) _game.topTile().get(new Point(3, 3))); _rotateNum = (char) (_game.topTile().get(new Point(3, 4))) - '0'; _emptySlot = _game.get_Slot(); for (int i = 0; i < 10000; i++) { g.setColor(Color.black); g.fillRect( (i % 100) * squareSize + (i % 100 + 1) * 1, (i / 100) * squareSize + (i / 100 + 1), squareSize, squareSize); } for (Point p : _emptySlot) { g.setColor(Color.green); g.fillRect(p.x * (squareSize + 1) + 1, p.y * (squareSize + 1) + 1, 80, 80); } _tilePiece = cutImage(TileGeneratorView.k, TileGeneratorView.j); for (int i = 0; i < _rotateNum; i++) { _tilePiece = rotateImage(_tilePiece, 90); } tilePiece = _tilePiece; g.drawImage(tilePiece, x, y, 80, 80, this); HashMap<Point, HashMap<Point, Object>> gameBoard = _game.get_gameBoard(); for (HashMap.Entry<Point, HashMap<Point, Object>> entry : gameBoard.entrySet()) { int j = -1, k = -1; // using j,k to indicate where are the tiles locate in our picture. Point position = entry.getKey(); int xp = (int) position.getX(); int yp = (int) position.getY(); HashMap<Point, Object> tileMap = entry.getValue(); int xMeeple = 10, yMeeple = 10; for (HashMap.Entry<Point, Object> entry1 : tileMap.entrySet()) { Point meeplePosition = entry1.getKey(); char parts = (char) entry1.getValue(); // System.out.println(parts); if (parts >= 'a' && parts <= 'z') { xMeeple = (int) meeplePosition.getX(); yMeeple = (int) meeplePosition.getY(); } } char tile = (char) entry.getValue().get(new Point(3, 3)); switch (tile) { case 'A': j = 3; k = 4; break; case 'B': j = 3; k = 3; break; case 'C': j = 1; k = 2; break; case 'D': j = 2; k = 0; break; case 'E': j = 0; k = 0; break; case 'F': j = 1; k = 1; break; case 'G': j = 1; k = 0; break; case 'H': j = 0; k = 2; break; case 'I': j = 0; k = 1; break; case 'J': j = 2; k = 2; break; case 'K': j = 2; k = 1; break; case 'L': j = 3; k = 2; break; case 'M': j = 0; k = 4; break; case 'N': j = 0; k = 3; break; case 'O': j = 2; k = 4; break; case 'P': j = 2; k = 3; break; case 'Q': j = 1; k = 4; break; case 'R': j = 1; k = 3; break; case 'S': j = 3; k = 1; break; case 'T': j = 3; k = 0; break; case 'U': j = 4; k = 0; break; case 'V': j = 4; k = 1; break; case 'W': j = 4; k = 2; break; case 'X': j = 4; k = 3; break; } Image tempTile; tempTile = cutImage(k, j); int rotateNumber = 0; char rotateNum = (char) entry.getValue().get(new Point(3, 4)); switch (rotateNum) { case '0': rotateNumber = 0; break; case '1': rotateNumber = 1; break; case '2': rotateNumber = 2; break; case '3': rotateNumber = 3; break; } tempTile = rotateImage(tempTile, rotateNumber * 90); g.drawImage(tempTile, xp * (squareSize + 1) + 1, yp * (squareSize + 1) + 1, 80, 80, this); Image meeple; meeple = cutMeeple(); meeple = PutMeepleView.makeColorTransparent((BufferedImage) meeple, Color.white); // if((char)tileMap.get(new Point(3,5)) = 'a'){ // System.out.println(xMeeple); // System.out.println(yMeeple); if (xMeeple < 10 && yMeeple < 10) { g.drawImage( meeple, xp * (squareSize + 1) + 1 + 27 * xMeeple, yp * (squareSize + 1) + 1 + 27 * yMeeple, 27, 27, this); } // } } }