snake->length++;
break;
}
+ *cell = ' ';
snake->x[0] = x;
snake->y[0] = y;
return ret;
}
+void drawbonus (board_t *board, int malus, int bonus)
+{
+ int i;
+
+ memset (board->tab, ' ', board->width * board->height);
+
+ for (i = 0; i < malus; i++) {
+ int x = rand () % board->width;
+ int y = rand () % board->height;
+ *getcell (board, x, y) = '4';
+ }
+
+ for (i = 0; i < bonus; i++) {
+ int x = rand () % board->width;
+ int y = rand () % board->height;
+ *getcell (board, x, y) = '5';
+ }
+}
+
/* vim: set ts=4 sw=4 et: */
int movesnake (board_t *board, snake_t *snake, int dir);
+void drawbonus (board_t *board, int malus, int bonus);
+
#endif /* __FUNCTION_H__ */
/* vim: set ts=4 sw=4 et: */
char *version = "0.1";
char *filename = NULL;
-int scale = 0;
+int scale = 1;
+int seed = 0;
+int malus = 10;
+int bonus = 5;
char *help =
"<i> Move up cursor\n"
return 1;
}
+ /* init seed */
+ seed = newseed (seed);
+
/* init curses window */
initscr ();
noecho ();
int h0board = LINES - 2 * (yoffset + 1);
board_t *board = initboard (w0board, h0board);
applyscale (board, scale);
+ drawbonus (board, malus, bonus);
/* window positions */
int xboard = board->xoffset = xoffset + 1;
int stop = 0;
int mode = 0;
timeval_t turn = {0, 0};
- int speed = 3000;
+ timeval_t renew = {0, 0};
+ int speed = 1000;
while (!stop) {
- boardwindow (board, 1);
- displaysnake (board, snake);
- if (isovertime (&turn)) {
- setendtime (&turn, speed);
- if (!movesnake (board, snake, snake->dir)) {
- mode = 2;
+ boardwindow (board, 0);
+ if (mode == 1) {
+ if (isovertime (&turn)) {
+ setendtime (&turn, speed);
+ if (!movesnake (board, snake, snake->dir)) {
+ mode = 2;
+ }
+ }
+ if (isovertime (&renew)) {
+ drawbonus (board, malus, bonus);
+ setendtime (&renew, 10 * speed);
}
}
+ displaysnake (board, snake);
int ch = getch ();
switch (ch) {
case KEY_UP:
case 'i':
- if (!movesnake (board, snake, 0)) {
- mode = 2;
- }
+ snake->dir = 0;
break;
case KEY_LEFT:
case 'j':
- if (!movesnake (board, snake, 1)) {
- mode = 2;
- }
+ snake->dir = 1;
break;
case KEY_DOWN:
case 'k':
- if (!movesnake (board, snake, 2)) {
- mode = 2;
- }
+ snake->dir = 2;
break;
case KEY_RIGHT:
case 'l':
- if (!movesnake (board, snake, 3)) {
- mode = 2;
- }
+ snake->dir = 3;
break;
}
}