"|.| |.L---7 |.L---------J.| F---J.| |.|"
"|.L-J....*L-J.............L-J*....L-J.|"
"|.....F-7.....F---3xE---7.....F-7.....|"
- "L---7.| L---7.| |.F---J |.F---J"
- "F---J.| F---J.| |.L---7 |.L---7"
+ "L---7.| L---7.| P Q |.F---J |.F---J"
+ "F---J.| F---J.| R S |.L---7 |.L---7"
"|.....L-J.....L---------J.....L-J.....|"
"|.F-7....*F-7.............F-7*....F-7.|"
"|.| |.F---J |.F---------7.| L---7.| |.|"
"|.| |.L---7 |.L---------J.| F---J.| |.|"
"|.| |....*| |.............| |*....| |.|"
"|.L-J.F-7.L-J.F---3xE---7.L-J.F-7.L-J.|"
- "|.....| |.....| |.....| |.....|"
+ "|.....| |.....| P Q R S |.....| |.....|"
"L---7.| L---7.|F-7 F-7|.F---J |.F---J"
"F---J.| F---J.|| L---J ||.L---7 |.L---7"
"|.....| |.....|L-------J|.....| |.....|"
"|.| |.L---7 |.L---------J.| F---J.| |.|"
"|.| |....*| |.............| |*....| |.|"
"|.| |.F-7.| |.F---7xF---7.| |.F-7.| |.|"
- "|.L-J.| |.L-J.|F--JxL--7|.L-J.| |.L-J.|"
- "|.....| |.....|| ||.....| |.....|"
- "L---7.| L---7.||F7 F7||.F---J |.F---J"
+ "|.L-J.| |.L-J.|F--J L--7|.L-J.| |.L-J.|"
+ "|.....| |.....|| P Q R ||.....| |.....|"
+ "L---7.| L---7.||F7 S F7||.F---J |.F---J"
"F---J.| F---J.|||L---J|||.L---7 |.L---7"
"|.....| |.....||L-----J||.....| |.....|"
"|.F-7.| |.F-7.|L-------J|.F-7.| |.F-7.|"
num = 5;
break;
case magenta_black:
- case lightmagenta_black:
+ case pink_black:
num = 6;
break;
case brown_black:
num = 12;
break;
case magenta_gray:
- case lightmagenta_gray:
+ case pink_gray:
num = 13;
break;
case brown_gray:
case lightgreen_black:
case lightcyan_black:
case lightred_black:
- case lightmagenta_black:
+ case pink_black:
case yellow_black:
case white_gray:
case lightblue_gray:
case lightgreen_gray:
case lightcyan_gray:
case lightred_gray:
- case lightmagenta_gray:
+ case pink_gray:
case yellow_gray:
state = A_BOLD;
break;
lightgreen_black,
lightcyan_black,
lightred_black,
- lightmagenta_black,
+ pink_black,
yellow_black,
blue_gray,
green_gray,
lightgreen_gray,
lightcyan_gray,
lightred_gray,
- lightmagenta_gray,
+ pink_gray,
yellow_gray,
black_gray
} ctext_t;
void displayelement (board_t *board, int x, int y)
{
int element = ' ';
- switch (*getcell (board, x, y)) {
+ int symb = *getcell (board, x, y);
+ switch (symb) {
case '-':
element = ACS_HLINE;
break;
case '+':
element = ACS_PLUS;
break;
+ case 'A':
case 'a':
- setcolor (yellow_black);
+ setcolor ((symb < 'a') ? lightred_black : yellow_black);
element = 'v';
break;
+ case 'B':
case 'b':
- setcolor (yellow_black);
+ setcolor ((symb < 'a') ? lightred_black : yellow_black);
element = '>';
break;
+ case 'C':
case 'c':
- setcolor (yellow_black);
+ setcolor ((symb < 'a') ? lightred_black : yellow_black);
element = '^';
break;
+ case 'D':
case 'd':
- setcolor (yellow_black);
+ setcolor ((symb < 'a') ? lightred_black : yellow_black);
element = '<';
break;
- case 'A':
- setcolor (lightred_black);
- element = 'v';
- break;
- case 'B':
- setcolor (lightred_black);
- element = '>';
+ case 'O':
+ case 'o':
+ setcolor ((symb < 'a') ? lightred_black : yellow_black);
+ element = 'O';
break;
- case 'C':
- setcolor (lightred_black);
- element = '^';
+ case 'P':
+ case 'p':
+ setcolor ((symb < 'a') ? red_black : gray_black);
+ element = 'M';
break;
- case 'D':
- setcolor (lightred_black);
- element = '<';
+ case 'Q':
+ case 'q':
+ setcolor ((symb < 'a') ? blue_black : gray_black);
+ element = 'M';
break;
- case 'o':
- setcolor (yellow_black);
- element = 'O';
+ case 'R':
+ case 'r':
+ setcolor ((symb < 'a') ? green_black : gray_black);
+ element = 'M';
break;
- case 'O':
- setcolor (lightred_black);
- element = 'O';
+ case 'S':
+ case 's':
+ setcolor ((symb < 'a') ? magenta_black : gray_black);
+ element = 'M';
break;
case '.':
- setcolor (brown_black);
+ setcolor (yellow_black);
//element = ACS_BULLET;
element = '.';
break;
case '*':
- setcolor (brown_black);
+ setcolor (yellow_black);
element = ACS_DIAMOND;
break;
case 'x':
- setcolor (blue_black);
+ setcolor (gray_black);
element = ACS_CKBOARD;
break;
}
return ((strchr (board->tab, '.') == NULL) && (strchr (board->tab, '*') == NULL));
}
+int commuteghost (board_t *board, int i, int *px, int *py)
+{
+ char *tab = board->tab;
+ char *ghost;
+ int rc = 0;
+ ghost = strchr (tab, 'P' + i);
+ if (ghost == NULL) {
+ ghost = strchr (tab, 'p' + i);
+ if (ghost != NULL) {
+ *ghost = 'P' + i;
+ }
+ } else {
+ *ghost = 'p' + i;
+ }
+ if (ghost) {
+ *px = (ghost - tab) % board->width;
+ *py = (ghost - tab) / board->width;
+ rc = 1;
+ }
+ return rc;
+}
+
/* vim: set ts=4 sw=4 et: */
int endofgame (board_t *board);
+int commuteghost (board_t *board, int i, int *px, int *py);
+
#endif /* __FUNCTION_H__ */
/* vim: set ts=4 sw=4 et: */
displayelement (board, x, y);
refresh ();
spin = 1;
+
+ /* commute ghost */
+ int i;
+ for (i = 0; i < 4; i++) {
+ int x, y;
+ if (commuteghost (board, i, &x, &y)) {
+ displayelement (board, x, y);
+ }
+ }
}
/* test end of game */