}
}
-void drawwindow (draw_t *game, int xoffset, int yoffset, int length)
+void drawwindow (draw_t *game, int xoffset, int yoffset)
{
int i;
- for (i = 0; i < 2 * length - 1; i++) {
+ for (i = 0; i < 2 * game->nbtiles - 1; i++) {
mvaddch (yoffset - 1, xoffset + i, ACS_HLINE);
mvaddch (yoffset, xoffset + i, ' ');
mvaddch (yoffset + 1, xoffset + i, ACS_HLINE);
mvaddch (yoffset - 1, xoffset - 1, ACS_ULCORNER);
mvaddch (yoffset, xoffset - 1, ACS_VLINE);
mvaddch (yoffset + 1, xoffset - 1, ACS_LLCORNER);
- mvaddch (yoffset - 1, xoffset + 2 * length - 1, ACS_URCORNER);
- mvaddch (yoffset, xoffset + 2 * length - 1, ACS_VLINE);
- mvaddch (yoffset + 1, xoffset + 2 * length - 1, ACS_LRCORNER);
+ mvaddch (yoffset - 1, xoffset + 2 * game->nbtiles - 1, ACS_URCORNER);
+ mvaddch (yoffset, xoffset + 2 * game->nbtiles - 1, ACS_VLINE);
+ mvaddch (yoffset + 1, xoffset + 2 * game->nbtiles - 1, ACS_LRCORNER);
mvaddch (yoffset - 1, xoffset + 2 * game->index , ACS_TTEE);
mvaddch (yoffset + 1, xoffset + 2 * game->index , ACS_BTEE);
void valuewindow (bag_t *bag, int xoffset, int yoffset, int length);
-void drawwindow (draw_t *game, int xoffset, int yoffset, int length);
+void drawwindow (draw_t *game, int xoffset, int yoffset);
#endif /* __DISPLAY_H__ */
return ret;
}
+void moveletter (draw_t *game, int move)
+{
+ int index = game->index + move;
+ if (index < 0) {
+ index = 0;
+ }
+ if (index >= game->nbtiles) {
+ index = game->nbtiles - 1;
+ }
+
+ char tile = game->tiles[game->index];
+ game->tiles[game->index] = game->tiles[index];
+ game->tiles[index] = tile;
+
+ game->index = index;
+}
+
+
/* vim: set ts=4 sw=4 et: */
int returnletter (draw_t *game, char letter);
+void moveletter (draw_t *game, int move);
+
#endif /* __FUNCTION_H__ */
/* vim: set ts=4 sw=4 et: */
int yoffset = 3;
char *help =
- "<c> Move tile\n"
- "<d> Draw tile\n"
- "<i> Move up tile\n"
+ "<c> Change tile in line\n"
+ "<d> Draw new tiles\n"
+ "<i> Move up til\n"
"<j> Move left tile\n"
"<k> Move down tile\n"
"<l> Move right tile\n"
"<q> Quit\n"
"<t> Toggle case legend\n"
"<v> Put tile\n"
- "<x> Retrieve tile\n";
+ "<x> Retrieve tile\n"
+ "<J> Move left in line\n"
+ "<K> Move rift in line\n"
+ ;
int usage (int ret)
{
int y = (play->ysize + 1)/ 2 - 1;
char current, letter = getnextletter (game);
- drawwindow (game, xdrawwin, ydrawwin, board->length);
+ drawwindow (game, xdrawwin, ydrawwin);
int stop = 0;
while (!stop) {
current = gessletter (play, x, y);
case '\t':
case 'c':
letter = getnextletter (game);
- drawwindow (game, xdrawwin, ydrawwin, board->length);
+ drawwindow (game, xdrawwin, ydrawwin);
break;
case KEY_ENTER:
case '\n':
case 'd':
game = retrievetiles (draw, board->length, game);
letter = getnextletter (game);
- drawwindow (game, xdrawwin, ydrawwin, board->length);
+ drawwindow (game, xdrawwin, ydrawwin);
break;
case KEY_UP:
case 'i':
case 'v':
if (putletter (play, letter, x, y)) {
letter = getnewletter (game);
- drawwindow (game, xdrawwin, ydrawwin, board->length);
+ drawwindow (game, xdrawwin, ydrawwin);
}
break;
case KEY_BACKSPACE:
if (returnletter (game, current)) {
removeletter (play, x, y);
letter = getnextletter (game);
- drawwindow (game, xdrawwin, ydrawwin, board->length);
+ drawwindow (game, xdrawwin, ydrawwin);
}
}
break;
+ case KEY_HOME:
+ case 'J':
+ moveletter (game, -1);
+ drawwindow (game, xdrawwin, ydrawwin);
+ break;
+ case KEY_END:
+ case 'L':
+ moveletter (game, +1);
+ drawwindow (game, xdrawwin, ydrawwin);
+ break;
case ERR:
default:
}