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->level-1)/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;
 }
 
