clean end of game message
authorLaurent Mazet <mazet@softndesign.org>
Sat, 29 Jun 2024 10:49:09 +0000 (12:49 +0200)
committerLaurent Mazet <mazet@softndesign.org>
Sat, 29 Jun 2024 10:49:09 +0000 (12:49 +0200)
display.c
display.h
solitaire.c
todo.txt

index f6a99e1483084cb26a9e6058d77b76bf535b23c3..34b1cc13021e6b0252b059e54d33f55aff7b0d5e 100644 (file)
--- a/display.c
+++ b/display.c
@@ -444,4 +444,12 @@ char *savewindow (int length, int xoffset, int yoffset)
     return name;
 }
 
+void msgwindow (char *msg, int xoffset, int yoffset, int length)
+{
+    set_color (white);
+    _dobound ((length > 0) ? length : (int)strlen (msg), 1, xoffset, yoffset);
+    mvaddstr (yoffset, xoffset + ((length > 0) ? (length - (int)strlen (msg)) / 2 : 0), msg);
+    set_color (black);
+}
+
 /* vim: set ts=4 sw=4 et: */
index 4ec85b5f34db99a09ec118f013e29e27bdbc6fab..442382917daa7539843515c6d421c174fe21db2e 100644 (file)
--- a/display.h
+++ b/display.h
@@ -14,6 +14,8 @@ void cursorwindow (board_t *board, int x, int y, int mode);
 
 char *savewindow (int length, int xoffset, int yoffset);
 
+void msgwindow (char *msg, int xoffset, int yoffset, int length);
+
 #endif /* __DISPLAY_H__ */
 
 /* vim: set ts=4 sw=4 et: */
index 02b5256b6065b5d15a2910c17b52d22b93c799e1..8a0b0d175862c9698ad5c97108d97918342869ab 100644 (file)
@@ -29,7 +29,7 @@ int yoffset = 1;
 int savelen = 12;
 
 char *help =
-    "<c> Get pet\n"
+    "<c> Get/Release pet\n"
     "<i> Move up cursor\n"
     "<j> Move left cursor\n"
     "<k> Move down cursor\n"
@@ -151,13 +151,18 @@ int main (int argc, char *argv[])
     int xhelp = xboard + xoffset + 1 + board->xsize;
     int xcursor = 0;
     int ycursor = 0;
-    int yhelp = yboard;
+    int yhelp = yboard - 1;
     int xsave = max (xboard + (board->xsize - savelen) / 2, 1);
     int ysave = yboard + (board->ysize - 1) / 2;
     char *savename = NULL;
 
     /* init windows */
-    helpwindow (help, xhelp, yhelp);
+    int lhelp = helpwindow (help, xhelp, yhelp);
+
+    /* window positions */
+    int xmsg = xboard;
+    int ymsg = max (yboard + xoffset + 1 + board->ysize, yhelp + lhelp + yoffset + 1);
+    int lmsg = xhelp - xmsg + strmaxlen (help, '\n');
 
     /* event loop */
     int mode = 0;
@@ -168,6 +173,8 @@ int main (int argc, char *argv[])
         boardwindow (board);
         if (!endofgame (board)) {
             cursorwindow (board, xcursor, ycursor, mode);
+        } else {
+            msgwindow ("End of game", xmsg, ymsg, lmsg);
         }
 
         int ch = getch ();
index 755c8ccb152835b408482cf2b753364974d3b378..35432bc3ac7102362d3ffa4cded6b34e6432f2cd 100644 (file)
--- a/todo.txt
+++ b/todo.txt
@@ -1,7 +1,7 @@
 = sauvegarde
 = restoration
 - trace de la fenetre de sauvegarde
-- info de fin de partie
+= info de fin de partie
 - marche arriere
 = board 1x2
 = board 2x2