Pair Up SAT High Score Tips
I have the same ask with several people’s comments on SAT scoreboard: how did folks getting 1000+ scores? I considered myself a fairly good player, and my average score is between 600 and 700: on a good day I could get 900, but that’s considered extremely lucky.
For those who can’t get 500, here’s my tips:
- a faster phone with bigger screen. I have 2 android phones: a 320×480 G1, and a 480×800 faster one. The game is a lot snappier on the latter one. I’m not asking you to buy a newer phone just for this game (haha, I’d be very flattered if you do). I’m sorry this is not very fair for ppl with slower phones. I’m still working on ways to improve my algorithm.
- Try to avoid clicking on 2 connected tiles: you only gain 1 point for this move. Check around if there’s a valid path between some other tiles far apart: it worth the time looking around. Practice more and you’ll get better.
- If you ever find yourself need to click the HINT menu, you are already slow.
I’d certainly like to hear other player’s tips. Share with us here!
SAME 2D Launched!
I love to play the classic SAME game. It’s simple: click on more than 3 connected tiles with the same color to eliminate them, and your goal is to clear up the board with fewest clicks.
SAME 2D is a dynamic version of the SAME game, which fills the board over time. The more scores you have, the faster the new row will be inserted. After achieving 1000 points a new stage starts with reset speed.
Here’s how the game looks:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | // Need to implement SensorListener public class ShakeActivity extends Activity implements SensorListener { // For shake motion detection. private SensorManager sensorMgr; private long lastUpdate = -1; private float x, y, z; private float last_x, last_y, last_z; private static final int SHAKE_THRESHOLD = 800; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ...... // other initializations // start motion detection sensorMgr = (SensorManager) getSystemService(SENSOR_SERVICE); boolean accelSupported = sensorMgr.registerListener(this, SensorManager.SENSOR_ACCELEROMETER, SensorManager.SENSOR_DELAY_GAME); if (!accelSupported) { // on accelerometer on this device sensorMgr.unregisterListener(this, SensorManager.SENSOR_ACCELEROMETER); } } protected void onPause() { if (sensorMgr != null) { sensorMgr.unregisterListener(this, SensorManager.SENSOR_ACCELEROMETER); sensorMgr = null; } super.onPause(); } public void onAccuracyChanged(int arg0, int arg1) { // TODO Auto-generated method stub } public void onSensorChanged(int sensor, float[] values) { if (sensor == SensorManager.SENSOR_ACCELEROMETER) { long curTime = System.currentTimeMillis(); // only allow one update every 100ms. if ((curTime - lastUpdate) > 100) { long diffTime = (curTime - lastUpdate); lastUpdate = curTime; x = values[SensorManager.DATA_X]; y = values[SensorManager.DATA_Y]; z = values[SensorManager.DATA_Z]; float speed = Math.abs(x+y+z - last_x - last_y - last_z) / diffTime * 10000; if (speed > SHAKE_THRESHOLD) { // yes, this is a shake action! Do something about it! } last_x = x; last_y = y; last_z = z; } } } } |
A Bug Found by Fast Fingers
OK, so there IS a bug in this game.
Comment posted by Tony this morning:
Fun, managed to end up with two tiles that didn’t match though….
The moment I read this, I immediately know what went wrong: he’s typing too fast! (well, not his fault though). Here’s more details: when you tapped on two identical tiles, the system spent 0.3 seconds drawing a connecting path between them. Now if you have a fast finger, you can break it within that 0.3 seconds.
The bullet-proof solution to this would be freezing the board while drawing the path. But this introduced some computation overhead. Instead, I simply reduce the drawing time from 0.3 second to 0.01, and still able to see the flash of a connecting line on screen. Bingo! The bug fix was launched!
Pair Up Screenshot
Here’s a screenshot of this game on my G1:

Pair Up Game Screenshot
This is from the second level of this game. There are totally 3 levels:
- Elementary: 6×4 tiles
- High School: 8×5
- College: 9×7
Also here’s a great site to check this apps comments:
http://www.cyrket.com/package/com.clingmarks.pairup
A Series of Upgrades
Things has been a bit hectic the past few days with the post-launch upgrades.
Pair Up v1.0 was launch 4 days ago, and I had 4 upgrades since then, which makes the current version 1.4 — a quite iterative launch. :-). I have to book-keeping the launches here or I will forgot what has been done when:
- v1.0 (3/25/09): First launch. Got several comments saying the image tile is way too small.
- v1.1 (3/26/09): Increased image tile size from 40×40 to 45×45. Well, seems that’s not big enough though, but I’m reluctant to compromise the number of tiles given the limited display size.
- v1.2 (3/26/09): Moved hint/shuffle buttons to options menu. Heard user’s complain on these two small buttons. This alternative worked pretty well. Thanks!
- v1.3 (3/27/09): Shake to shuffle! This is a long-planned feature, and my personal favorite one: makes the game much more fun compared to its PC alternative.
- v1.4 (3/28/09): Increased game board size to fill the entire screen. Had to do it now because of the pouring complains on tile size, which made me a little bit down because no one seemed to appreciate the shake feature :-(. But I’m so glad I listened to them: I got 2 five-stars after this launch — very much needed encouragements!
As of now there are over 2000 downloads of Pair Up, much more than I originally anticipated. Keep up the good work!








Recent Comments