コード例 #1
0
  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);
      }

      // }
    }
  }