int nbturnsperdraw = 15;
int malus = 10;
int bonus = 5;
+int wide = 0;
char *help =
"<i> Move up cursor\n"
fprintf (fd, " -h: help message\n");
fprintf (fd, " -s: scale [0..3] (%d)\n", scale);
fprintf (fd, " -v: verbose level [%d..%d] (%d)\n", ERROR, DEBUG, verbose);
+ fprintf (fd, " -w: wide board (%d)\n", wide);
fprintf (fd, "%s version %s\n", progname, version);
return ret;
}
verbose = atoi (arg);
break;
+ case 'w':
+ wide = 1;
+ break;
case 'h':
default:
return usage (c != 'h');
/* load playground */
if (!filename) {
- int w0board = COLS - whelp - 2 * (xoffset + 1);
- int h0board = LINES - 2 * (yoffset + 1);
+ int w0board = COLS - (wide ? 0 : whelp) - 2 * (xoffset + 1);
+ int h0board = LINES - (wide ? 2 : 0) - 2 * (yoffset + 1);
board = initboard (w0board, h0board);
applyscale (board, scale);
snake = initsnake (board);
/* window positions */
int xboard = board->xoffset = xoffset + 1;
- int yboard = board->yoffset = yoffset + 1;
- int xscore = xboard + xoffset + 2 + board->xsize;
- int yscore = yboard;
- int wscore = whelp - 2;
- int xhelp = xscore - 1;
- int yhelp = yscore + 2 + xoffset;
+ int yboard = board->yoffset = yoffset + 1 + (wide ? 1 : 0);
+ int xscore = xboard + 2 + (wide ? -1 : xoffset + board->xsize);
+ int yscore = yboard - (wide ? 2 : 0);
+ int wscore = (wide ? 15 : whelp - 2);
+ int xhelp = (wide ? xboard + (board->xsize - 1) / 2 : xscore - 1);
+ int yhelp = (wide ? yboard + (board->ysize - 1) / 2 : yscore + 2 + xoffset);
int xsave = max (xboard + (board->xsize - savelen) / 2, 1);
int ysave = yboard + (board->ysize - 1) / 2;
char *savename = NULL;
VERBOSE (DEBUG, printf ("width: %d\nheight: %d\n", board->width, board->height));
/* help window */
- int lhelp = helpwindow (help, xhelp, yhelp);
+ int lhelp = 0;
+ if (!wide) {
+ lhelp = helpwindow (help, xhelp, yhelp);
+ }
/* window positions (msg) */
- int xmsg = xhelp + 1;
- int ymsg = yhelp + lhelp + 1 + xoffset;
- int lmsg = whelp - 2;
+ int lmsg = (wide ? 20 : whelp - 2);
+ int xmsg = (wide ? xboard + board->xsize - lmsg - 1 : xhelp + 1);
+ int ymsg = (wide ? yboard + board->ysize + 1 : yhelp + lhelp + 1 + xoffset);
/* main loop */
int nonewpoint = 1;
}
}
- boardwindow (board, 0);
- displaysnake (board, snake);
-
switch (mode) {
case 0:
setcolor (gray_black);
switch (mode) {
case 0:
msgwindow ("Press <p> to start", xmsg, ymsg, lmsg);
- msg2window ("Game passed", xboard + board->xsize / 2, yboard + (board->ysize - 1) / 2);
+ sprintf (msg, "%s", "Game paused");
break;
case 1:
sprintf (msg, "Speed %d", (turnspanmax - turnspan) / spangap + 1);
msgwindow (msg, xmsg, ymsg, lmsg);
+ *msg = 0;
break;
case 2:
msgwindow ("Press <q> to quit", xmsg, ymsg, lmsg);
- msg2window ("End of game", xboard + board->xsize / 2, yboard + (board->ysize - 1) / 2);
+ sprintf (msg, "%s", "End of game");
break;
}
+ boardwindow (board, 0);
+ displaysnake (board, snake);
+ if (*msg) {
+ msg2window (msg, xboard + board->xsize / 2, yboard + (board->ysize - 1) / 2);
+ }
+
int ch = getch ();
/* main controls */
switch (ch) {
+ case 'h':
+ if (wide) {
+ helpwindow (help, xboard + (board->xsize - strmaxlen (help, '\n')) / 2, yboard + 1);
+ while (getch () == ERR) {
+ msleep (200);
+ }
+ tic (&turn);
+ }
+ break;
case ' ':
case 'p':
if (mode == 0) {