X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=gnushogi%2Fcursesdsp.c;h=213c0083d79c43c70562b69af8c716dbecc0f39a;hb=97a3bafdbb2b8f5c48c78b4aabfaaf2b9c329934;hp=10eeae612a1e8d6bba17feb46eaaa27927f76b23;hpb=95369c6cb63d6513f7381dc3cc92c1f34044c607;p=gnushogi.git diff --git a/gnushogi/cursesdsp.c b/gnushogi/cursesdsp.c index 10eeae6..213c008 100644 --- a/gnushogi/cursesdsp.c +++ b/gnushogi/cursesdsp.c @@ -6,6 +6,7 @@ * ---------------------------------------------------------------------- * Copyright (c) 1993, 1994, 1995 Matthias Mutz * Copyright (c) 1999 Michael Vanier and the Free Software Foundation + * Copyright (c) 2008, 2013, 2014 Yann Dirson and the Free Software Foundation * * GNU SHOGI is based on GNU CHESS * @@ -30,6 +31,8 @@ * ---------------------------------------------------------------------- */ +/* request *snprintf prototypes*/ +#define _POSIX_C_SOURCE 200112L #include #include @@ -145,7 +148,7 @@ void ShowHeader(void) { gotoXY(TAB, 2); - printw("GNU Shogi %s (pl %s)", version, patchlevel); + printw("GNU Shogi %s", PACKAGE_VERSION); } @@ -388,7 +391,7 @@ void Curses_help(void) { Curses_ClearScreen(); - printw("GNU Shogi %sp%s command summary\n", version, patchlevel); + printw("GNU Shogi %s command summary\n", PACKAGE_VERSION); printw("-------------------------------" "---------------------------------\n"); printw("7g7f move from 7g to 7f quit Exit Shogi\n"); @@ -455,7 +458,7 @@ static const short y0[2] = { 20, 4 }; void Curses_EditBoard(void) { - short a, c, sq, i; + short a, c, sq, i, found; short r = 0; char s[80]; @@ -473,13 +476,17 @@ Curses_EditBoard(void) printw("Enter piece & location: "); a = black; - do + while(1) { gotoXY(TAB, 6); printw("Editing: %s", ColorStr[a]); gotoXY(TAB + 24, 7); ClearEoln(); FLUSH_SCANW("%s", s); + found = 0; + + if (s[0] == '.') + break; if (s[0] == '#') { @@ -502,40 +509,49 @@ Curses_EditBoard(void) for (i = NO_PIECES; i > no_piece; i--) { if ((s[0] == pxx[i]) || (s[0] == qxx[i])) + { + Captured[a][unpromoted[i]]++; + UpdateCatched(); + found = 1; break; + } } - Captured[a][unpromoted[i]]++; - UpdateCatched(); c = -1; } else { - c = COL_NAME(s[1]); - r = ROW_NAME(s[2]); + c = COL_NUM(s[1]); + r = ROW_NUM(s[2]); } if ((c >= 0) && (c < NO_COLS) && (r >= 0) && (r < NO_ROWS)) { sq = locn(r, c); - + color[sq] = a; + board[sq] = no_piece; + for (i = NO_PIECES; i > no_piece; i--) { if ((s[0] == pxx[i]) || (s[0] == qxx[i])) + { + if (s[3] == '+') + board[sq] = promoted[i]; + else + board[sq] = unpromoted[i]; + + found = 1; break; + } } + - if (s[3] == '+') - i = promoted[i]; - else - i = unpromoted[i]; + if (found == 0) + color[sq] = neutral; - board[sq] = i; - color[sq] = ((board[sq] == no_piece) ? neutral : a); DrawPiece(sq); } } - while (s[0] != '.'); for (sq = 0; sq < NO_SQUARES; sq++) Mvboard[sq] = ((board[sq] != Stboard[sq]) ? 10 : 0); @@ -854,10 +870,17 @@ Curses_UpdateDisplay(short f, short t, short redraw, short isspec) gotoXY(3, 4 + 2*NO_ROWS); printw(" "); +#ifndef MINISHOGI if (flag.reverse) printw(" 1 2 3 4 5 6 7 8 9"); else printw(" 9 8 7 6 5 4 3 2 1"); +#else + if (flag.reverse) + printw(" 1 2 3 4 5"); + else + printw(" 1 2 3 4 5"); +#endif for (sq = 0; sq < NO_SQUARES; sq++) DrawPiece(sq); @@ -998,7 +1021,7 @@ Curses_SelectLevel(char *sx) Curses_ClearScreen(); gotoXY(32, 2); - printw("GNU Shogi %sp%s", version, patchlevel); + printw("GNU Shogi %s", PACKAGE_VERSION); gotoXY(20, 4); printw(" 1. 40 moves in 5 minutes"); gotoXY(20, 5);