cosmetic changes
authorLaurent Mazet <mazet@softndesign.org>
Wed, 24 Jul 2024 18:37:36 +0000 (20:37 +0200)
committerLaurent Mazet <mazet@softndesign.org>
Wed, 24 Jul 2024 18:37:36 +0000 (20:37 +0200)
display.c
display.h
tetris.c

index c725ebf32a87a324f3ed90f7e81ec0cceaf75d58..03cc1d6296454d279b938375c1c17252d75b7163 100644 (file)
--- a/display.c
+++ b/display.c
@@ -203,11 +203,11 @@ void _element (board_t *board, int x, int y, int symb)
     }
 }
 
-void boardwindow (board_t *board)
+void boardwindow (board_t *board, int mode)
 {
     int i, j;
 
-    set_color (black);
+    set_color ((mode) ? white : black);
     _dobound (board->xsize, board->ysize, board->xoffset, board->yoffset);
     set_color (white);
 
@@ -221,51 +221,32 @@ void boardwindow (board_t *board)
 void scorewindow (int xoffset, int yoffset, int length, int score, int level)
 {
     set_color (black);
-    _dobound (length + 7, 2, xoffset, yoffset);
+    _dobound (length + 9, 2, xoffset, yoffset);
     set_color (white);
 
     char fmt[12], msg[32];
     sprintf (fmt, "%% %dd", length);
 
-    sprintf (msg, "score: ");
+    sprintf (msg, " score: ");
     sprintf (msg + strlen (msg), fmt, score);
     mvaddstr (yoffset, xoffset, msg);
 
-    sprintf (msg, "level: % 3d", level);
+    sprintf (msg, " level: % 3d", level);
     mvaddstr (yoffset + 1, xoffset, msg);
 }
 
-void nextwindow (block_t *blocks, int nb, int xoffset, int yoffset, int next)
+void displayblock (board_t *board, block_t *block, int x, int y)
 {
-    int height = maxblockheight (blocks, nb);
-    int width = maxblockwidth (blocks, nb) + 2;
-
-    set_color (black);
-    _dobound (width, height, xoffset, yoffset);
-    set_color (white);
-
     int i, j;
-    for (i = 0; i < width; i++) {
-        for (j = 0; j < height; j++) {
-            mvaddch (yoffset + j, xoffset + i, ' ');
-        }
+
+    if (x == -1) {
+        x = board->width / 2;
     }
 
-    block_t *block = blocks + next;
-    for (i = 0; i < block->width; i++) {
-        for (j = 0; j < block->height; j++) {
-            if (*getcell (block, i, j) == '.') {
-                _set_symb_color ('0' + block->color);
-                mvaddch (yoffset + (height - block->height) / 2 + j, xoffset + (width - block->width) / 2 + i, ' ');
-                set_color (white);
-            }
-        }
+    if (y == -1) {
+        y = (board->height - block->height) / 2;
     }
-}
 
-void displayblock (board_t *board, block_t *block, int x, int y)
-{
-    int i, j;
     for (i = 0; i < block->width; i++) {
         for (j = 0; j < block->height; j++) {
             if (*getcell (block, i, j) != ' ') {
index a26ea1fc2cec5e429318a0286d91c419fc9b0a55..17b72b17400281bba798117fe7795416e8f85787 100644 (file)
--- a/display.h
+++ b/display.h
@@ -8,12 +8,10 @@
 
 int helpwindow (char *msg, int xoffset, int yoffset);
 
-void boardwindow (board_t *board);
+void boardwindow (board_t *board, int mode);
 
 void scorewindow (int xoffset, int yoffset, int length, int score, int level);
 
-void nextwindow (block_t *blocks, int nb, int xoffset, int yoffset, int next);
-
 void displayblock (board_t *board, block_t *block, int x, int y);
 
 char *savewindow (int length, int xoffset, int yoffset);
index e6293a2b9ffe006f0504cd9dd7c079ded832c0f8..a94199dc55d2dff00a2bc26d502698b811ad027e 100644 (file)
--- a/tetris.c
+++ b/tetris.c
@@ -153,6 +153,10 @@ int main (int argc, char *argv[])
     /* get blocks */
     int nb_blocks = 0;
     block_t *blocks = getblocks ("std", &nb_blocks);
+    board_t *nextblock = initboard (maxblockwidth (blocks, nb_blocks) + 2, maxblockheight (blocks, nb_blocks));
+    setscale (nextblock, scale);
+
+    /* get first bloc */
     int current = rand () % nb_blocks;
     block_t *cblock = copyblock (blocks + current);
     int xblock = board->width / 2;
@@ -174,10 +178,10 @@ int main (int argc, char *argv[])
     int yboard = board->yoffset = xoffset + 1;
     int xscore = xboard + xoffset + 2 + board->xsize;
     int yscore = yboard;
-    int xnext = xscore;
-    int ynext = yscore + xoffset + maxblockheight (blocks, nb_blocks);
-    int xhelp = xnext - 1;
-    int yhelp = ynext + 1 + maxblockheight (blocks, nb_blocks) + xoffset;
+    nextblock->xoffset = xscore + (9 + nbdigit + 1 - nextblock->xsize) / 2;
+    int ynext = nextblock->yoffset = yscore + 1 + 2 + yoffset;
+    int xhelp = xscore - 1;
+    int yhelp = ynext + nextblock->ysize + yoffset;
     int xsave = max (xboard + (board->xsize - savelen) / 2, 1);
     int ysave = yboard + (board->ysize - 1) / 2;
     char *savename = NULL;
@@ -203,12 +207,14 @@ int main (int argc, char *argv[])
 
         switch (mode) {
         case -1:
-            nextwindow (blocks, nb_blocks, xnext, ynext, current);
+            boardwindow (nextblock, 1);
+            displayblock (nextblock, blocks + current, -1, -1);
             sprintf (msg, "Get ready player One. Press <s> to start");
             break;
         case 0:
             halfdelay (0);
-            nextwindow (blocks, nb_blocks, xnext, ynext, current);
+            boardwindow (nextblock, 1);
+            displayblock (nextblock, blocks + current, -1, -1);
             sprintf (msg, "Game in pause. Pause <p> to continue");
             break;
         case 1:
@@ -236,7 +242,8 @@ int main (int argc, char *argv[])
                 mode = 2;
                 sprintf (msg, "To bad, you loose. Score is %d", score);
             }
-            nextwindow (blocks, nb_blocks, xnext, ynext, next);
+            boardwindow (nextblock, 1);
+            displayblock (nextblock, blocks + next, -1, -1);
             break;
         case 2:
             freeblock (cblock);
@@ -247,10 +254,10 @@ int main (int argc, char *argv[])
         msgwindow (msg, xmsg, ymsg, lmsg);
         int nblines = checkline (board, &score, &level);
         while (nblines-- > 0) {
-            boardwindow (board);
+            boardwindow (board, 0);
             stackboard (board);
         }
-        boardwindow (board);
+        boardwindow (board, 0);
         scorewindow (xscore, yscore, nbdigit, score, (level / 10) + 1);
         int newspeed = 10 + 4900 / (level / 10 + 1);
         if (newspeed != speed) {