return j;
}
-void helpwindow (char *msg, char *msg2, int xoffset, int yoffset, int length)
+int helpwindow (char *msg, char *msg2, int xoffset, int yoffset)
{
char *title = "Help message";
- int i;
+ int length = strmaxlen (msg, '\n');
+ int i;
for (i = 0; (i < length) && (title[i] != '\0'); i++) {
mvaddch (yoffset , xoffset + i, title[i]);
mvaddch (yoffset + 1, xoffset + i, ACS_HLINE);
j += _helpwindow (msg, xoffset, yoffset + j, length);
j++;
j += _helpwindow (msg2, xoffset, yoffset + j, length);
+
+ return length;
}
void valuewindow (bag_t *bag, int xoffset, int yoffset, int length, char current)
set_color (white);
}
+void scorewindow (int score, int xoffset, int yoffset)
+{
+ char *title = "Score";
+ int i;
+ for (i = 0; title[i] != '\0'; i++) {
+ mvaddch (yoffset, xoffset + i, title[i]);
+ mvaddch (yoffset + 1, xoffset + i, ACS_HLINE);
+ }
+ char str[12] = {0};
+ sprintf (str, " % 3d", score);
+ mvaddstr (yoffset + 2, xoffset, str);
+}
+
/* vim: set ts=4 sw=4 et: */
void showboard (play_t *play, board_t *board, int xoffset, int yoffset, int full);
-void helpwindow (char *msg, char *msg2, int xoffset, int yoffset, int length);
+int helpwindow (char *msg, char *msg2, int xoffset, int yoffset);
void valuewindow (bag_t *bag, int xoffset, int yoffset, int length, char current);
void drawwindow (draw_t *game, int xoffset, int yoffset);
+void scorewindow (int score, int xoffset, int yoffset);
+
#endif /* __DISPLAY_H__ */
/* vim: set ts=4 sw=4 et: */
return 0;
}
+int strcount (char *str, char ch)
+{
+ int n = 0;
+ while ((str = strchr (str, ch)) != NULL) {
+ str++;
+ n++;
+ }
+ return n;
+}
+
+int strmaxlen (char *str, char ch)
+{
+ int len = 0;
+ char *end = NULL;
+ while ((end = strchr (str, ch)) != NULL) {
+ int l = (int)(end - str);
+ if (l > len) {
+ len = l;
+ }
+ str = end + 1;
+ }
+ return len;
+}
+
play_t *initplay (int xsize, int ysize)
{
play_t *play = (play_t *) malloc (sizeof (play_t));
int contains (char *list, char *str);
+int strcount (char *str, char ch);
+
+int strmaxlen (char *str, char ch);
+
play_t *initplay (int xsize, int ysize);
void freeplay (play_t *play);
int xdrawwin = xoffset;
int ydrawwin = 2 * yoffset + max (board->ysize, 1 + (bag->nbletters + 1) /2);
- helpwindow (help, getextrahelp (language), xhelpwin, yhelpwin, 30);
+ int helplen = helpwindow (help, getextrahelp (language), xhelpwin, yhelpwin);
+
+ int xscorewin = xhelpwin + helplen+ xoffset;
+ int yscorewin = yhelpwin;
int mode = 0;
showboard (play, board, xoffset, yoffset, mode);
}
showletter (highlight, x + xoffset, y + yoffset, 1);
valuewindow (bag, xvaluewin, yvaluewin, 10, highlight);
+ scorewindow (score, xscorewin, yscorewin);
switch (getch ()) {
case '\t':