Index: apps/plugins/jewels.c
===================================================================
 apps/plugins/jewels.c (Revision 26582)
+++ apps/plugins/jewels.c (Arbeitskopie)
@@ 392,7 +401,21 @@
unsigned int num_jewels;
};
+/* define the growth of difficulty.
+ *
+ * for example:
+ * MIN_NUM_JEWELS 4
+ * MAX_NUM_JEWELS 7
+ * LEVELS_PER_DIFFICULTY 3
+ * means:
+ * > Play with 4 types of jewels in the 1st to the 3rd level
+ * > Play with 5 types of jewels in the 4rd to the 6th level
+ * > Play with 6 types of jewels in the 7rd to the 9th level
+ * > Play with 7 types of jewels from the 10th level
+ */
+#define MIN_NUM_JEWELS 4
#define MAX_NUM_JEWELS 7
+#define LEVELS_PER_DIFFICULTY 3
#define MAX_PUZZLE_TILES 4
#define NUM_PUZZLE_LEVELS 10
@@ 1211,9 +1234,15 @@
switch(bj>type) {
case GAME_TYPE_NORMAL:
 bj>num_jewels = MAX_NUM_JEWELS;
+ {
+ unsigned int difficulty = (bj>level1)/LEVELS_PER_DIFFICULTY;
+ unsigned int num_jewels = MIN_NUM_JEWELS + difficulty;
+ if(num_jewels>MAX_NUM_JEWELS)
+ num_jewels = MAX_NUM_JEWELS;
+ DEBUGF("level %d > %d jewels\n", bj>level, num_jewels);
+ bj>num_jewels = num_jewels;
break;

+ }
case GAME_TYPE_PUZZLE:
{
unsigned int i, j;
@@ 1242,7 +1271,13 @@
/* run the play board */
jewels_putjewels(bj);
 points += jewels_runboard(bj);
+
+ /* don't get points for randomly correct rows at initialisation
+ to avoid winning the first level without user interaction */
+ unsigned int firstrun_points=0;
+ firstrun_points = jewels_runboard(bj);
+ if(bj>level > 1)
+ points += firstrun_points;
return points;
}