public void setTextView(TextView newView) { mStatusText = newView; // Set the StatusText to the current score. mStatusText.setText(mPuzzle.getScore()); mStatusText.setVisibility(View.VISIBLE); }
public void UnScramble() { mPuzzle.UnScramblePuzzle(); mBrickGrid = mPuzzle.GetPuzzle(); enabled = false; mStatusText.setText(mPuzzle.getScore()); mStatusText.setVisibility(View.VISIBLE); invalidate(); }
public boolean onTouch(View v, MotionEvent event) { // Don't do anything until started. if (!enabled) return true; Index index; float x = event.getX(); float y = event.getY(); // The touch was outside the grid, ignore it index = CoordinateToIndex(x, y); if (index.x == 2012 || index.y == 2012) { clearSelected(); return true; } // The initial touch downward switch (event.getAction()) { case MotionEvent.ACTION_DOWN: // Record the initial down coordinates downX = event.getX(); downY = event.getY(); break; case MotionEvent.ACTION_MOVE: // What to do while the finger is moving. // Commenting out the break will fall through to ACTION_UP. // This will change the tiles while moving. // Need to undo this on ACTION_UP if (mBrickGrid[index.x][index.y] < 2012) { if (mBrickGrid[index.x][index.y] < BLANK) { mBrickGrid[index.x][index.y] = mBrickGrid[index.x][index.y] + 15; invalidate(); } } break; case MotionEvent.ACTION_UP: clearSelected(); // Record the up coordinates upX = event.getX(); upY = event.getY(); // ((TextView)findViewById(R.id.score)).setText("Up"); Index downIndex; Index upIndex; downIndex = CoordinateToIndex(downX, downY); upIndex = CoordinateToIndex(upX, upY); // Check for drag on column if ((upIndex.x == downIndex.x) && (Math.abs(upIndex.y - downIndex.y) == 4)) { int points = mPuzzle.submit(columnToString(upIndex.x)); if (points == -2) { AlertDialog.Builder alert = new AlertDialog.Builder(v.getContext()); alert.setMessage("You Win!"); CharSequence ok = "Ok"; alert.setPositiveButton( ok, new DialogInterface.OnClickListener() { public void onClick(DialogInterface arg0, int arg1) { arg0.dismiss(); } }); alert.show(); mStatusText.setText(mPuzzle.getScore()); } else if (points > 0) { popUpPoints(v, Integer.toString(points)); mStatusText.setText(mPuzzle.getScore()); mStatusText.setVisibility(View.VISIBLE); popUpPoints(v, Integer.toString(points)); } else { // Play a sound and vibrate? } // Break out of the on up to avoid tile press detection. break; } // Check for drag on row if ((upIndex.y == downIndex.y) && (Math.abs(upIndex.x - downIndex.x) == 4)) { int points = mPuzzle.submit(rowToString(upIndex.y)); if (points > 0) { popUpPoints(v, Integer.toString(points)); mStatusText.setText(mPuzzle.getScore()); mStatusText.setVisibility(View.VISIBLE); } // Break out of the on up to avoid tile press detection. break; } // No drag, then it should be a tile press. if (mBrickGrid[index.x][index.y] < 2012) { if (mBrickGrid[index.x][index.y] > BLANK) { mBrickGrid[index.x][index.y] = mBrickGrid[index.x][index.y] - 15; invalidate(); } } mPuzzle.ChangePuzzle(index.x, index.y); mBrickGrid = mPuzzle.GetPuzzle(); invalidate(); break; default: break; } return true; }