#include "constant.h"
#include "debug.h"
#include "oneplayer.h"
+#include "time.h"
#include "twoplayers.h"
/* static variables */
char *filename = NULL;
int multi = 0;
int scale = 1;
+unsigned int seed = 0;
int usage (int ret)
{
FILE *fd = ret ? stderr : stdout;
- fprintf (fd, "usage: %s [-c] [-f file] [-h] [-s int] [-v int] [-w int]\n", progname);
+ fprintf (fd, "usage: %s [-c] [-f file] [-h] [-r int] [-s int] [-v int] [-w 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, " -m: multi players (%s)", (multi) ? "yes" : "no" );
+ 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);
filename = NULL;
chrono = 0;
break;
+ case 'r':
+ arg = (arg[2]) ? arg + 2 : (--argc > 0) ? *(++argv) : NULL;
+ if (arg == NULL) {
+ VERBOSE (ERROR, fprintf (stderr, "%s: no seed specified\n", progname));
+ return usage (1);
+ }
+ seed = atoi (arg);
+ break;
case 's':
arg = (arg[2]) ? arg + 2 : (--argc > 0) ? *(++argv) : NULL;
if (arg == NULL) {
return 1;
}
+ /* init seed */
+ seed = newseed (seed);
+
switch (multi) {
case 0:
return oneplayer (width, height, scale, chrono, filename);
/* 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 -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: { 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 ooollllkieeeddddsz; sleep 1; echo -n uuukjjjjiaaasqqqqz; 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 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 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 */
/* vim: set ts=4 sw=4 et: */