Pair Up SAT High Score Tips

By admin | Dec 30, 2009

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!

By admin | Dec 17, 2009

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:

Same 2D Screenshot

Same 2D Screenshot 2

How to make the game more fun?

By admin | Sep 9, 2009

We haven’t made any updates to Pair Up lately: it’s not that we are lazy (a little bit, maybe), but more because we are running short of ideas on how to make it more fun. If you have an idea, we’d love to hear from you to improve this game!

So, please help us to help you enjoying more of Pair Up!

How to play Pair_Up/Penguin_Links

By yinrow | May 7, 2009

General Rule:

The goal of this game is to eliminate all image tiles from the board by pairing up all the identical tiles. A connecting path will be drawn between the paring tiles. Here’s some simple rules about the path:

  • A path can can only go through the empty spaces
  • A path can have at most 2 turning points
  • A path can only go horizontally or vertically, not diagonally.

Here’s few examples of valid path:

Scoring:

You will score as you play, which is based on the time and lengths of the connecting paths: the faster you play, the more points you get; the longer the path is, the higher the score is.

Other Help:

While playing, you can get hint, shuffle the tiles, or pause the game. Just click the menu at any time to get more help. Shuffling can also to done by shaking the phone (you’ll feel the phone vibrated once shuffle is done).

You can pick different themes at the start of the game by clicking the menu button, which also allows you to hide/show difficulty levels, adjust shake detector sensitivity, and check high scores.

Thanks to CrystalXP for the great icons. Special thanks to the following authors: fcys14, batux, edetsa, illuzmax, isb, overlord59, brioche4012, dinou10, dj_raph, gonz34, k_millio, pit, and zilcade.

Questions, comments, requests - please email pairup@clingmarks.com

Make Your Android Phone Vibrate

So I got this good suggestion from one user’s comment: when shake to shuffle, make the phone vibrate.

It’s actually a very simple 2-step operation, but android developer site wasn’t very clear about. Here’s how I did it:

  1. Add permission in AndroidManifest.xml file like this:
    <manifest xmlns:android="http://schemas.android.com/apk/res/android">
    	<uses-permission android:name="android.permission.VIBRATE" />
    ......
    </manifest>
  2. In your program when you want the phone to vibrate:
    // vibration lasts 300 milliseconds
    ((Vibrator)getSystemService(VIBRATOR_SERVICE)).vibrate(300);

Done!

The Site Has A New Look … On Your Android!

Since this PairUp game gets popular, we notice that more and more traffic to our site are from Android phone. But we know the site is not really mobile friendly, so we decided to do something about it.

mobile site

ClingMarks goes Mobile!

Just now, we installed a mobile plugin for Wordpress — yes, our site is powered by Wordpress — and it turns out very nicely. Here is a screenshot from the G1 Android phone:
Hopefully this update can make it a little easier for those friends who enjoy surfing the Internet with mobile phones. As to the plugin we use, it’s from here. As you can tell, it’s such a great plugin for Wordpress!

By the way, stay tuned, another update of PairUp is coming very soon!

How to detect shake motion on Android phone

When I was implementing the shake-to-shuffle feature in Pair-Up game, I googled for a similar code-snippet but didn’t have much luck. Eventually I came across this hidden code in Android Developer Guide which talks about using the phone motion sensor to program:

http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/os/Sensors.html

Alas! It can be done! But I just need a very simple function to detect if there’s a shake action. So my actual code is a lot simpler:

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) &gt; 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 &gt; 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

By yinrow | Mar 31, 2009

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

By yinrow | Mar 29, 2009

Here’s a screenshot of this game on my G1:

Pair Up Game Screenshot

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

By yinrow | Mar 29, 2009

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!

© 2007 - 2009 ClingMarks