Index: jewels.c
===================================================================
--- jewels.c	(Revision 26569)
+++ 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
@@ -1209,11 +1232,17 @@
 static unsigned int jewels_initlevel(struct game_context* bj) {
     unsigned int points = 0;
 
-    switch(bj->type) {
-        case GAME_TYPE_NORMAL:
-            bj->num_jewels = MAX_NUM_JEWELS;
+    switch(bj->type) { 
+        case GAME_TYPE_NORMAL: 
+        {
+            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;
