This is JawsComp.m in view mode; [Download] [Up]
/*
* Stratgey: Jaws
* Description: Same as greedy, except that open holes are scored as well.
* Every open hole gets a score that is added to the total score.
* This score is the number of all opposing pieces minus the
* number of the player's own pieces that surround the given
* empty square. The factor used in the greedy part of the
* algorithm is so large as to make the holes only a factor when
* deciding between equally scored greedy boards.
* Author: Mat Hostetter (rewritten by Erik_Kay@next.com)
*/
#import "JawsComp.h"
@implementation JawsComp
+ (const char *)strategyName
{
return "Jaws";
}
-(int)scoreBoard:(Board *)b forPlayer:(square_state)player
{
int x1, y1, x, y, score = 0;
int cols, rows;
square_state square1, square2;
score = 1000 *
([b numberOfPiece:player] - [b numberOfPiece:OTHER_PLAYER(player)]);
cols = [b cols];
rows = [b rows];
for (x1=0; x1 < cols; x1++)
for (y1=0; y1 < rows; y1++) {
square1 = b->board[x1 + y1 * cols];
if (square1 == SQUARE_EMPTY) {
for (x=MAX(x1-1, 0); x<=MIN(x1+1, cols - 1); x++)
for (y=MAX(y1-1, 0); y<=MIN(y1+1, rows - 1); y++) {
square2 = b->board[x + y * cols];
switch (square2) {
case SQUARE_ONE:
case SQUARE_TWO:
score += ((square2 == player) ? -1 : 1);
break;
default:
break;
}
}
}
}
return score;
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.