start new option: wide board
authorLaurent Mazet <mazet@softndesign.org>
Mon, 9 Sep 2024 22:01:55 +0000 (00:01 +0200)
committerLaurent Mazet <mazet@softndesign.org>
Mon, 9 Sep 2024 22:01:55 +0000 (00:01 +0200)
tetris.c

index 2a256dc8d6009b47a72f0249d93ce28671b8ab85..24de7d7239d862bd416e9144e1b83cc8e7893a04 100644 (file)
--- a/tetris.c
+++ b/tetris.c
@@ -23,19 +23,21 @@ char *filename = NULL;
 int multi = 0;
 int scale = 1;
 unsigned int seed = 0;
+int wide = 0;
 
 int usage (int ret)
 {
     FILE *fd = ret ? stderr : stdout;
-    fprintf (fd, "usage: %s [-c] [-f file] [-h] [-r int] [-s int] [-v int] [-w int]\n", progname);
+    fprintf (fd, "usage: %s [-c] [-f file] [-h] [-l int] [-r int] [-s int] [-v int]\n", progname);
     fprintf (fd, " -c: time penalty (%s)\n", (chrono) ? "yes" : "no" );
     fprintf (fd, " -f: file name (%s)\n", (filename) ? filename : "none");
     fprintf (fd, " -h: help message\n");
+    fprintf (fd, " -l: board length  [%d, %d] (%d)\n", minwidth, maxwidth, width);
     fprintf (fd, " -m: multi players (%s)\n", (multi) ? "yes" : "no" );
     fprintf (fd, " -r: random seed (%u)\n", seed);
     fprintf (fd, " -s: scale [0..3] (%d)\n", scale);
     fprintf (fd, " -v: verbose level (%d)\n", verbose);
-    fprintf (fd, " -w: board width  [%d, %d] (%d)\n", minwidth, maxwidth, width);
+    fprintf (fd, " -w: wide board (%d)\n", wide);
     fprintf (fd, "%s version %s\n", progname, version);
 
     return ret;
@@ -76,6 +78,14 @@ int main (int argc, char *argv[])
             filename = arg;
             multi = 0;
             break;
+        case 'l':
+            arg = (arg[2]) ? arg + 2 : (--argc > 0) ? *(++argv) : NULL;
+            if (arg == NULL) {
+                VERBOSE (ERROR, fprintf (stderr, "%s: no length specified\n", progname));
+                return usage (1);
+            }
+            width = atoi (arg);
+            break;
         case 'm':
             multi = 1;
             filename = NULL;
@@ -106,12 +116,7 @@ int main (int argc, char *argv[])
             verbose = atoi (arg);
             break;
         case 'w':
-            arg = (arg[2]) ? arg + 2 : (--argc > 0) ? *(++argv) : NULL;
-            if (arg == NULL) {
-                VERBOSE (ERROR, fprintf (stderr, "%s: no width specified\n", progname));
-                return usage (1);
-            }
-            width = atoi (arg);
+            wide = 1;
             break;
         case 'h':
         default:
@@ -149,29 +154,29 @@ int main (int argc, char *argv[])
 /* test: tetris.exe -f nofile.ttr 2>&1 | grep "can't read file" */
 /* test: tetris.exe -f bogus.ttr 2>&1 | grep 'incorrect file' */
 /* test: tetris.exe -h | grep usage */
+/* test: tetris.exe -l 2>&1 | grep 'no length' */
+/* test: tetris.exe -l 6 2>&1 | grep incorrect */
 /* test: tetris.exe -r 2>&1 | grep 'no seed' */
 /* test: tetris.exe -s 2>&1 | grep 'no scale' */
 /* test: tetris.exe -s 4 2>&1 | grep incorrect */
 /* test: tetris.exe -v 2>&1 | grep missing */
-/* test: tetris.exe -w 2>&1 | grep 'no width' */
-/* test: tetris.exe -w 6 2>&1 | grep incorrect */
 /* test: tetris.exe _ 2>&1 | grep invalid */
 /* test: { sleep 1; echo -n s; sleep 1; echo -n ouuljki; sleep 1; echo q; } | tetris.exe -s 0 */
 /* test: { sleep 1; echo -n s; sleep 1; echo -n ouuljki; sleep 1; echo q; } | tetris.exe -s 1 */
 /* test: { sleep 1; echo -n s; sleep 1; echo -n ouuljki; sleep 1; echo q; } | tetris.exe -s 2 */
 /* test: { sleep 1; echo -n s; sleep 1; echo -n ouuljki; sleep 1; echo q; } | tetris.exe -s 3 */
 /* test: { sleep 1; echo -n skkkkkkkkkkkkkkkkkk; sleep 6; echo -n kkkkkkkkkkkkkkkkk; sleep 1; echo q; } | tetris.exe */
-/* test: { sleep 1; echo -n s; sleep 1; echo oup; sleep 1; echo -n puljki; sleep 1; echo -ne 'sb.ttr\e'; sleep 1; echo -e 'sab\b.ttr'; sleep 1; echo q; } | tetris.exe -w 9 -v 3 */
+/* test: { sleep 1; echo -n s; sleep 1; echo oup; sleep 1; echo -n puljki; sleep 1; echo -ne 'sb.ttr\e'; sleep 1; echo -e 'sab\b.ttr'; sleep 1; echo q; } | tetris.exe -l 9 -v 3 */
 /* test: { sleep 1; echo -n s; sleep 1; echo q; } | tetris.exe -f a.ttr && rm a.ttr && test \! -f b.ttr */
-/* test: { echo -n s; sleep 1; echo -n ooollllki; sleep 1; echo -n uuukjjjji; sleep 1; echo -n ooollllki; sleep 1; echo -n uuukjjjji; sleep 1; echo -n ooollllki; sleep 1; echo -n uuukjjjji; sleep 1; echo -n ooollllki; sleep 1; echo -n uuukjjjji; sleep 1; echo -n iii; sleep 1; echo q; } | tetris.exe -w 9 */
-/* test: { echo -n s; sleep 1; echo -n lllololoi; sleep 1; echo -n jjjujujui; sleep 1; echo -n lllololoi; sleep 1; echo -n jjjujujui; sleep 1; echo q; } | tetris.exe -w 9 */
+/* test: { echo -n s; sleep 1; echo -n ooollllki; sleep 1; echo -n uuukjjjji; sleep 1; echo -n ooollllki; sleep 1; echo -n uuukjjjji; sleep 1; echo -n ooollllki; sleep 1; echo -n uuukjjjji; sleep 1; echo -n ooollllki; sleep 1; echo -n uuukjjjji; sleep 1; echo -n iii; sleep 1; echo q; } | tetris.exe -l 9 */
+/* test: { echo -n s; sleep 1; echo -n lllololoi; sleep 1; echo -n jjjujujui; sleep 1; echo -n lllololoi; sleep 1; echo -n jjjujujui; sleep 1; echo q; } | tetris.exe -l 9 */
 /* test: { echo -n s; sleep 1; echo -n iiiiiiiiiiiii; sleep 1; echo q; } | tetris.exe */
 /* test: { echo -n s; sleep 1; echo -n jjuuui; sleep 1; echo -n jjoi; sleep 1; echo q; } | tetris.exe -f lines.ttr */
 /* test: { echo -n s; sleep 1; echo -n jjuuui; sleep 1; echo -n jjoi; sleep 1; echo q; } | tetris.exe -c -f lines.ttr */
 /* test: { echo -n siiiiiii; sleep 50; echo q; } | tetris.exe -c */
 
-/* test: { echo -n s; sleep 1; echo -n ooollllkieeeddddszp; sleep 1; echo -n puuukjjjjiaaasqqqqz; sleep 1; echo -n ooollllkieeeddddsz; sleep 1; echo -n uuukjjjjiaaaasqqqqz; sleep 1; echo -n ooollllkieeedddddsz; sleep 1; echo -n uuukjjjjiaaaasqqqqz; sleep 1; echo -n ooollllkieeeedddddsz; sleep 1; echo -n uuukjjjjiaaaasqqqqz; sleep 1; echo -n izizizizzi; sleep 1; echo -ne '\e'; } | tetris.exe -m -w 9 */
-/* test: { echo -n s; sleep 1; echo -n lllololoidddededez; sleep 1; echo -n jjjujujuiqqqaqaqaz; sleep 1; echo -n lllololoidddededez; sleep 1; echo -n jjjujujuiqqqaqaqaz; sleep 1; echo -ne '\e'; } | tetris.exe -m -w 9 */
+/* test: { echo -n s; sleep 1; echo -n ooollllkieeeddddszp; sleep 1; echo -n puuukjjjjiaaasqqqqz; sleep 1; echo -n ooollllkieeeddddsz; sleep 1; echo -n uuukjjjjiaaaasqqqqz; sleep 1; echo -n ooollllkieeedddddsz; sleep 1; echo -n uuukjjjjiaaaasqqqqz; sleep 1; echo -n ooollllkieeeedddddsz; sleep 1; echo -n uuukjjjjiaaaasqqqqz; sleep 1; echo -n izizizizzi; sleep 1; echo -ne '\e'; } | tetris.exe -m -l 9 */
+/* test: { echo -n s; sleep 1; echo -n lllololoidddededez; sleep 1; echo -n jjjujujuiqqqaqaqaz; sleep 1; echo -n lllololoidddededez; sleep 1; echo -n jjjujujuiqqqaqaqaz; sleep 1; echo -ne '\e'; } | tetris.exe -m -l 9 */
 /* test: { echo -n s; sleep 1; echo -n iziziziziziziziziziziziziz; sleep 1; echo -ne '\e'; } | tetris.exe -m */
 /* test: { echo -n sddddzdzdzqz; sleep 1; echo -n oollliooiujijjjji; sleep 1; echo -n aaqqqqzojjji; sleep 1; echo -ne '\e'; } | tetris.exe -m -r 1 */