Esempio n. 1
0
  private void addLine(Line l) {
    if (inLines(l.getA().ordX, l.getA().ordY, l.getB().ordX, l.getB().ordY) != null) {
      Log.d(
          "DOTS",
          "Line already exists at ("
              + l.getA().ordX
              + ", "
              + l.getB().ordY
              + ") to ("
              + l.getB().ordX
              + ", "
              + l.getB().ordY
              + ")");
      return;
    }
    if (l.getA().ordX > l.getB().ordX || l.getA().ordY > l.getB().ordY) l.swapPoints();
    // get the ordinal location of the points on the line
    int x1 = l.getA().ordX;
    int y1 = l.getA().ordY;
    int x2 = l.getB().ordX;
    int y2 = l.getB().ordY;

    int pointsScored = 0;
    addedSquares = new ArrayList<Square>();

    int xSpace = drawer.getXSpace();
    int ySpace = drawer.getYSpace();

    if (y1 == y2) { // horizontal line
      // top square
      if (y1 > 0) {

        Line a = inLines(x1, y1, x1, y1 - ySpace);
        Line b = inLines(x1, y1 - ySpace, x2, y2 - ySpace);
        Line c = inLines(x2, y2, x2, y2 - ySpace);

        if (a != null && b != null && c != null) {

          Square s = new Square(a, b, c, l, gameState);
          squares.add(s);
          addedSquares.add(s);
          drawer.addSquare(s);
          pointsScored++;
        }
      }
      // bottom square
      Line a = inLines(x1, y1, x1, y1 + ySpace);
      Line b = inLines(x1, y1 + ySpace, x2, y1 + ySpace);
      Line c = inLines(x2, y2, x2, y2 + ySpace);

      if (a != null && b != null && c != null) {
        Square s = new Square(a, b, c, l, gameState);
        squares.add(s);
        addedSquares.add(s);
        drawer.addSquare(s);
        pointsScored++;
      }

    } else { // vertical line

      // left square
      if (x1 > 0) {
        Line a = inLines(x1, y1, x1 - xSpace, y1);
        Line b = inLines(x1 - xSpace, y1, x2 - xSpace, y2);
        Line c = inLines(x2, y2, x2 - xSpace, y2);

        if (a != null && b != null && c != null) {
          Square s = new Square(a, b, c, l, gameState);
          squares.add(s);
          addedSquares.add(s);
          drawer.addSquare(s);
          pointsScored++;
        }
      }
      // right square
      Line a = inLines(x1, y1, x1 + xSpace, y1);
      Line b = inLines(x1 + xSpace, y1, x2 + xSpace, y2);
      Line c = inLines(x2, y2, x2 + xSpace, y2);
      if (a != null && b != null && c != null) {
        Square s = new Square(a, b, c, l, gameState);
        squares.add(s);
        addedSquares.add(s);
        drawer.addSquare(s);
        pointsScored++;
      }
    }
    lines.add(l);
    addedLine = l;
    drawer.addLine(l);
    ((Button) findViewById(R.id.undoButton)).setEnabled(true);

    // add score
    mScores[gameState] += pointsScored;

    // progress player
    if (pointsScored == 0) {
      gameState++;
      if (gameState == mNumPlayers) gameState = 0;
    }

    updateView();
    checkGameOver();
  }