char *boardname = "6x10";
char *help =
+ "<h> Hold/Release piece\n"
"<i> Move up cursor\n"
"<j> Move left cursor\n"
"<k> Move down cursor\n"
"<l> Move right cursor\n"
- "<o> Hold/Release piece\n"
+ "<o> Rotate piece right\n"
+ "<u> Rotate piece left\n"
+ "<y> Yank next piece\n"
"<q> Quit\n"
"<s> Save file\n"
;
int lmsg = xhelp - xmsg + strmaxlen (help, '\n');
/* blocks positions */
+ boardwindow (bench, 0);
+ for (i = 0; i < blocks->nb; i++) {
+ displayblock (bench, blocks->block[i], blocks->x[i], blocks->y[i]);
+ }
/* event loop */
int stop = 0;
while (!stop) {
boardwindow (board, 0);
- boardwindow (bench, 0);
- for (i = 0; i < blocks->nb; i++) {
- displayblock (bench, blocks->block[i], blocks->x[i], blocks->y[i]);
- VERBOSE (DEBUG, fprintf (stderr, "block %d: %dx%d (%d, %d)\n", i, blocks->block[i]->width, blocks->block[i]->height, blocks->x[i], blocks->y[i]));
- }
block_t *block = blocks->block[cursor];
displayblock (board, block, xcursor, ycursor);
int ch = getch ();
switch (ch) {
- case ' ':
- case 'u':
- cursor++;
- if (cursor >= blocks->nb) {
- cursor = 0;
- }
case '\n':
case '\r':
- case 'o':
+ case 'h':
break;
case KEY_UP:
case 'i':
break;
case KEY_DOWN:
case 'k':
- VERBOSE (DEBUG, fprintf (stderr, "DOWN: %d %d\n", ycursor, board->height - (block->height) / 1 + (block->height % 2 ? 0 : 1)));
if (ycursor < board->height - (block->height + 1) / 2) {
ycursor++;
}
break;
case KEY_RIGHT:
case 'l':
- VERBOSE (DEBUG, fprintf (stderr, "RIGHT: %d %d\n", xcursor, board->width - (block->width) / 1 + (block->width % 2 ? 0 : 1)));
if (xcursor < board->width - (block->width + 1) / 2) {
xcursor++;
}
break;
+ case KEY_DELETE:
+ case 127:
+ case 'o':
+ rotateblock (block, 1);
+ break;
case KEY_ESC:
case 'q':
stop = 1;
}
break;
case KEY_BACKSPACE:
- case KEY_DELETE:
- case 127:
case '\b':
+ case 'u':
+ rotateblock (block, -1);
+ break;
+ case ' ':
+ case 'y':
+ cursor++;
+ if (cursor >= blocks->nb) {
+ cursor = 0;
+ }
+ break;
break;
//case ERR:
//default: