Ejemplo n.º 1
0
  public void fillGameState() {
    int value;
    ArrayList<Integer> list = new ArrayList<Integer>(removeList.size());

    while (!removeList.isEmpty()) {
      list.add(removeList.remove((int) (Math.random() * removeList.size())));
      //			Log.i(Constant.TAG, String.valueOf(list));

      if (removeList.isEmpty() && Util.checkContinuous(list)) {
        removeList.addAll(list);
        list.clear();
      }
    }
    //		Log.i(Constant.TAG, String.valueOf(list));
    int[][] matrix = m_game_state.getMatrix();
    for (int i = 0; i < grid_size; i++)
      for (int j = 0; j < grid_size; j++) {
        if (matrix[i][j] == -1) {
          value = list.remove(0);
          //					Log.i(Constant.TAG, String.valueOf(value));
          matrix[i][j] = value;
          Point p = m_game_state.getPxPy(i, j);
          NumSprite sprite = new NumSprite(p.x, p.y, value);
          sprite.setMatrixPosition(i, j);
          _map.put(p, sprite);
        }
      }
    m_game_state.setMatrix(matrix);
    NumSprite.istouchable = true;
  }
Ejemplo n.º 2
0
  public void removeMap() {

    for (int i = 0; i < grid_size; i++)
      for (int j = 0; j < grid_size; j++) {
        Point p = m_game_state.getPxPy(i, j);
        if (_map.containsKey(p)) {
          NumSprite sprite = _map.get(p);
          sprite.destroy();
          _map.remove(p);
        }
      }
  }
Ejemplo n.º 3
0
  public void updateGameState(NumSprite sprite) {
    Point p3 = sprite.getMatrixPosition();
    Point p4 = m_game_state.getZeroXY();
    int[][] matrix = m_game_state.getMatrix();

    int i = matrix[p3.x][p3.y];
    matrix[p3.x][p3.y] = 0;
    matrix[p4.x][p4.y] = i;
    m_game_state.setMatrix(matrix);
  }
Ejemplo n.º 4
0
  private void createGame() {
    Point p;

    // Create random matrix
    m_game_state.createRandomMatrix();
    //	m_game_state.showMatrix2D();

    // Create NumItem & add to Hash table
    try {
      for (int i = 0; i < grid_size; i++)
        for (int j = 0; j < grid_size; j++) {
          p = m_game_state.getPxPy(i, j);
          NumSprite item = new NumSprite(p.x, p.y, m_game_state.getMatrix()[i][j]);
          item.setMatrixPosition(i, j);
          _map.put(p, item);
        }
      NumSprite.m_game_state = m_game_state;
    } catch (Exception e) {
      Log.i(Constant.TAG, e.toString());
    }
  }
Ejemplo n.º 5
0
  public void onTouchMovable(NumSprite sprite) {
    NumSprite.istouchable = false;
    Point p0 = m_game_state.getZeroPxPy();
    Point p1 = new Point();
    p1.set(sprite.getPx(), sprite.getPy());

    // toogle 2 sprite
    toogle(p0, p1);
    // update game_state
    updateGameState(sprite);
    //	m_game_state.showMatrix2D();
    // Check if archive target
    if (isArchive()) {
      if (sound_on) m_resource_manager.sound.playArchive();
      m_progress_bar.pause();
      processArchivement();

    } else {
      NumSprite.istouchable = true;
    }
    return;
  }
Ejemplo n.º 6
0
  public void toogle(Point p1, Point p2) {
    // Save position
    int x1 = p1.x;
    int y1 = p1.y;
    int x2 = p2.x;
    int y2 = p2.y;

    NumSprite sp1 = _map.get(p1);
    NumSprite sp2 = _map.get(p2);
    int id1 = sp1.getResourceID();
    int id2 = sp2.getResourceID();
    Point p3 = sp1.getMatrixPosition();
    Point p4 = sp2.getMatrixPosition();
    // remove 2 sprite
    if (_map.containsKey(p1)) _map.remove(p1);
    if (_map.containsKey(p2)) _map.remove(p2);
    sp1.destroy();
    sp2.destroy();
    // Create 2 new sprite
    NumSprite sp1_new = new NumSprite(x1, y1, id2);
    NumSprite sp2_new = new NumSprite(x2, y2, id1);
    sp1_new.setMatrixPosition(p3.x, p3.y);
    sp2_new.setMatrixPosition(p4.x, p4.y);
    _map.put(p1, sp1_new);
    _map.put(p2, sp2_new);
    if (sound_on) m_resource_manager.sound.playSlide();
  }
Ejemplo n.º 7
0
  private void processArchivement() {
    // TODO Auto-generated method stub
    if (!archiveRow.isEmpty()) {
      for (int i = 0; i < archiveRow.size(); i++) {
        // remove row from hash
        for (int j = 0; j < grid_size; j++) {
          Point p = m_game_state.getPxPy(archiveRow.get(i), j);
          NumSprite sprite = _map.get(p);
          sprite.rotateSprite();
          _map.remove(p);
          removeList.add(m_game_state.getMatrix()[archiveRow.get(i)][j]);
        }
        m_game_state.removeRow(archiveRow.get(i));
        _score.addScore(1);
      }
    }

    if (!archiveCol.isEmpty()) {
      for (int i = 0; i < archiveCol.size(); i++) {
        // remove col from hash
        for (int j = 0; j < grid_size; j++) {
          Point p = m_game_state.getPxPy(j, archiveCol.get(i));
          NumSprite sprite = _map.get(p);
          sprite.rotateSprite();
          _map.remove(p);
          removeList.add(m_game_state.getMatrix()[j][archiveCol.get(i)]);
        }
        m_game_state.removeCol(archiveCol.get(i));
        _score.addScore(1);
      }
    }

    if (cross_down) {
      // remove item

      for (int j = 0; j < grid_size; j++)
        for (int i = 0; i < grid_size; i++) {
          if (i + j == grid_size - 1) {
            Point p = m_game_state.getPxPy(i, j);
            NumSprite sprite = _map.get(p);
            sprite.rotateSprite();
            _map.remove(p);
            removeList.add(m_game_state.getMatrix()[i][j]);
          }
        }

      m_game_state.removeCrossDown();
      _score.addScore(2);
    }

    if (cross_up) {
      // remove item
      for (int j = 0; j < grid_size; j++)
        for (int i = 0; i < grid_size; i++) {
          if (i == j) {
            Point p = m_game_state.getPxPy(i, j);
            NumSprite sprite = _map.get(p);
            sprite.rotateSprite();
            _map.remove(p);
            removeList.add(m_game_state.getMatrix()[i][j]);
          }
        }
      m_game_state.removeCrossUp();
      _score.addScore(2);
    }
    boolean wait = false;
    new Thread(
            new Runnable() {
              public void run() {
                /* Do things */
                try {
                  Thread.sleep(200);
                } catch (InterruptedException e) {
                  // TODO Auto-generated catch block
                  e.printStackTrace();
                } /* Wait 1000 milliseconds */
                fillGameState();
                m_progress_bar.resume();
              }
            })
        .start();
  }