Module Name:    src
Committed By:   dholland
Date:           Mon Mar 29 04:28:47 UTC 2010

Modified Files:
        src/games/gomoku: bdisp.c gomoku.h main.c

Log Message:
Some improvements to the new UI.


To generate a diff of this commit:
cvs rdiff -u -r1.14 -r1.15 src/games/gomoku/bdisp.c
cvs rdiff -u -r1.18 -r1.19 src/games/gomoku/gomoku.h
cvs rdiff -u -r1.23 -r1.24 src/games/gomoku/main.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/games/gomoku/bdisp.c
diff -u src/games/gomoku/bdisp.c:1.14 src/games/gomoku/bdisp.c:1.15
--- src/games/gomoku/bdisp.c:1.14	Mon Mar 29 03:51:55 2010
+++ src/games/gomoku/bdisp.c	Mon Mar 29 04:28:47 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: bdisp.c,v 1.14 2010/03/29 03:51:55 dholland Exp $	*/
+/*	$NetBSD: bdisp.c,v 1.15 2010/03/29 04:28:47 dholland Exp $	*/
 
 /*
  * Copyright (c) 1994
@@ -37,7 +37,7 @@
 #if 0
 static char sccsid[] = "@(#)bdisp.c	8.2 (Berkeley) 5/3/95";
 #else
-__RCSID("$NetBSD: bdisp.c,v 1.14 2010/03/29 03:51:55 dholland Exp $");
+__RCSID("$NetBSD: bdisp.c,v 1.15 2010/03/29 04:28:47 dholland Exp $");
 #endif
 #endif /* not lint */
 
@@ -261,6 +261,24 @@
 }
 
 int
+get_key(const char *allowed)
+{
+	int ch;
+
+	while (1) {
+		ch = getch();
+		if (allowed != NULL &&
+		    ch != '\0' && strchr(allowed, ch) == NULL) {
+			beep();
+			refresh();
+			continue;
+		}
+		break;
+	}
+	return ch;
+}
+
+int
 get_line(char *buf, int size)
 {
 	char *cp, *end;
@@ -321,7 +339,7 @@
 	nx = curx;
 	ny = cury;
 	for (;;) {
-		mvprintw(BSZ3, (BSZ -6)/2, "(%c %d)", 
+		mvprintw(BSZ3, (BSZ -6)/2, "(%c %d) ", 
 				'A'+ ((curx > 7) ? (curx+1) : curx), cury + 1);
 		BGOTO(cury, curx);
 
@@ -431,9 +449,11 @@
 		break;
 #endif /* 0 */
 		case 'Q':
+		case 'q':
 			return RESIGN;
 			break;
 		case 'S':
+		case 's':
 			return SAVE;
 			break;
 		case ' ':

Index: src/games/gomoku/gomoku.h
diff -u src/games/gomoku/gomoku.h:1.18 src/games/gomoku/gomoku.h:1.19
--- src/games/gomoku/gomoku.h:1.18	Mon Mar 29 03:51:55 2010
+++ src/games/gomoku/gomoku.h	Mon Mar 29 04:28:47 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: gomoku.h,v 1.18 2010/03/29 03:51:55 dholland Exp $	*/
+/*	$NetBSD: gomoku.h,v 1.19 2010/03/29 04:28:47 dholland Exp $	*/
 
 /*
  * Copyright (c) 1994
@@ -269,6 +269,7 @@
 
 void	bdinit(struct spotstr *);
 int	get_coord(void);
+int	get_key(const char *allowedkeys);
 int	get_line(char *, int);
 void	ask(const char *);
 void	dislog(const char *);

Index: src/games/gomoku/main.c
diff -u src/games/gomoku/main.c:1.23 src/games/gomoku/main.c:1.24
--- src/games/gomoku/main.c:1.23	Mon Mar 29 03:51:55 2010
+++ src/games/gomoku/main.c	Mon Mar 29 04:28:47 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: main.c,v 1.23 2010/03/29 03:51:55 dholland Exp $	*/
+/*	$NetBSD: main.c,v 1.24 2010/03/29 04:28:47 dholland Exp $	*/
 
 /*
  * Copyright (c) 1994
@@ -42,7 +42,7 @@
 #if 0
 static char sccsid[] = "@(#)main.c	8.4 (Berkeley) 5/4/95";
 #else
-__RCSID("$NetBSD: main.c,v 1.23 2010/03/29 03:51:55 dholland Exp $");
+__RCSID("$NetBSD: main.c,v 1.24 2010/03/29 04:28:47 dholland Exp $");
 #endif
 #endif /* not lint */
 
@@ -165,9 +165,11 @@
 #endif
 
 		if (inputfp == NULL && test == 0) {
-			ask("black or white? ");
+			move(BSZ3, 0);
+			printw("Black moves first. ");
+			ask("(B)lack or (W)hite? ");
 			for (;;) {
-				ch = getchar();
+				ch = get_key(NULL);
 				if (ch == 'b' || ch == 'B') {
 					color = BLACK;
 					break;
@@ -176,8 +178,11 @@
 					color = WHITE;
 					break;
 				}
-				move(BSZ3, 0);
-				printw("Black moves first. Please enter `black' or `white'\n");
+				if (ch == 'q' || ch == 'Q') {
+					quit();
+				}
+				beep();
+				ask("Please choose (B)lack or (W)hite: ");
 			}
 			move(BSZ3, 0);
 			clrtoeol();
@@ -253,12 +258,12 @@
 		case USER: /* input comes from standard input */
 		getinput:
 			if (interactive) {
-				ask("move? ");
+				ask("Select move, (S)ave or (Q)uit.");
 				curmove = get_coord();
 				if (curmove == SAVE) {
 					FILE *fp;
 
-					ask("save file name? ");
+					ask("Save file name? ");
 					(void)get_line(fname, sizeof(fname));
 					if ((fp = fopen(fname, "w")) == NULL) {
 						misclog("cannot create save file");
@@ -313,7 +318,7 @@
 				addstr("Rats! you won");
 			break;
 		case TIE:
-			addstr("Wow! its a tie");
+			addstr("Wow! It's a tie");
 			break;
 		case ILLEGAL:
 			addstr("Illegal move");
@@ -323,14 +328,14 @@
 		bdisp();
 		if (i != RESIGN) {
 		replay:
-			ask("replay? ");
-			if (get_line(buf, sizeof(buf)) &&
-			    (buf[0] == 'y' || buf[0] == 'Y'))
+			ask("Play again? ");
+			ch = get_key("YyNnQqSs"); 
+			if (ch == 'Y' || ch == 'y')
 				goto again;
-			if (strcmp(buf, "save") == 0) {
+			if (ch == 'S') {
 				FILE *fp;
 
-				ask("save file name? ");
+				ask("Save file name? ");
 				(void)get_line(fname, sizeof(fname));
 				if ((fp = fopen(fname, "w")) == NULL) {
 					misclog("cannot create save file");
@@ -382,7 +387,7 @@
 	if (!interactive)
 		quit();
 top:
-	ask("cmd? ");
+	ask("debug command: ");
 	if (!get_line(input, sizeof(input)))
 		quit();
 	switch (*input) {

Reply via email to