memset (play->tab, ' ', play->xsize * play->ysize);
}
+int _nbletters (play_t *play)
+{
+ int i, n = 0;
+ for (i = 0; i < play->xsize * play->ysize; i++) {
+ if (play->tab[i] != ' ') {
+ n++;
+ }
+ }
+ return n;
+}
+
char *_getletteraddr (play_t *play, int x, int y)
{
return play->tab + x + y * play->xsize;
for (i = 0; i < play->xsize; i++) {
char letter = *_getletteraddr (play, i, j);
- if (letter == ' ') {
- if (accountable) {
- intern = s * wfactor;
- if (nbletters > 1) {
- score += intern;
- if (nbletters >= board->length) {
- score += board->premium;
- }
- }
- }
- s = 0;
- accountable = 0;
- wfactor = 1;
- nbletters = 0;
- } else {
+ if (letter != ' ') {
s += _findvalue (bag, letter) * _letterfactor (board, turn, i, j);
if (*_getletteraddr (turn, i, j) != ' ') {
accountable = 1;
wfactor *= _wordfactor (board, turn, i, j);
nbletters++;
}
- }
- if (accountable) {
- intern = s * wfactor;
- if (nbletters > 1) {
- score += intern;
- if (nbletters >= board->length) {
- score += board->premium;
+ if (((letter == ' ') || (i == play->xsize - 1)) && (accountable)) {
+ intern = s * wfactor;
+ if (nbletters > 1) {
+ score += intern;
+ if (_nbletters (turn) >= board->length) {
+ score += board->premium;
+ }
}
}
+ if (letter == ' ') {
+ s = 0;
+ accountable = 0;
+ wfactor = 1;
+ nbletters = 0;
+ }
}
}
for (j = 0; j < play->ysize; j++) {
char letter = *_getletteraddr (play, i, j);
- if (letter == ' ') {
- if ((accountable) && (nbletters > 1)) {
- score += s * wfactor;
- if (nbletters >= board->length) {
- score += board->premium;
- }
- }
- s = 0;
- accountable = 0;
- wfactor = 1;
- nbletters = 0;
- } else {
+ if (letter != ' ') {
s += _findvalue (bag, letter) * _letterfactor (board, turn, i, j);
if (*_getletteraddr (turn, i, j) != ' ') {
accountable = 1;
wfactor *= _wordfactor (board, turn, i, j);
nbletters++;
}
- }
- if ((accountable) && (nbletters > 1)) {
- score += s * wfactor;
- if (nbletters >= board->length) {
- score += board->premium;
+ if (((letter == ' ') || (j == play->ysize - 1)) && (accountable) && (nbletters > 1)) {
+ score += s * wfactor;
+ if (_nbletters (turn) >= board->length) {
+ score += board->premium;
+ }
+ }
+ if (letter == ' ') {
+ s = 0;
+ accountable = 0;
+ wfactor = 1;
+ nbletters = 0;
}
}
}