ftp.nice.ch/pub/next/games/network/Splat.1.0.s.tar.gz#/Splat-1.0/ComputerPlayer.h

This is ComputerPlayer.h in view mode; [Download] [Up]

/*
 * ComputerPlayer
 * description: a generic class for computer game players.  It implements a
 *		threaded, sorted, alpha beta search tree.
 * history:
 *	2/15/93 [Erik Kay] - created
 */

#import "Player.h"
#import <mach/cthreads.h>

#define OTHER_PLAYER(type) ((type == SQUARE_ONE) ? SQUARE_TWO : SQUARE_ONE)

// #define DEBUG_FOO

#ifdef DEBUG_FOO
#define dprintf(s) printf s
#else
#define dprintf(msg) 
#endif

@interface ComputerPlayer:Player
{
    int searchDepth;
    condition_t myTurn;
    mutex_t myLock;
    id	server;
    BOOL beingFreed;
    BOOL sorting;
    BOOL deterministic;
    
    /* debugging stats */
    int moveTime;
    int numLeaves;
    int pruningPercent;
    int numPruned;
    int totalNodes;
}

// how far it looks ahead
- (int)searchDepth;
- setSearchDepth:(int)depth;

// given a board, rate it
- (int)scoreBoard:(Board *)b forPlayer:(square_state)type;

// the alpha beta search tree
- (int)ABSearch:(Board *)b atDepth:(int)d 
		forPlayer:(square_state)player
		alpha:(int)alpha
		beta:(int)beta;
// sorting the moves
- (int)partition:(List *)boards from:(int)from to:(int)to;
- sortMoves:(List *)boards from:(int)from to:(int)to;
- sortMoves:(List *)boards;

// do the move.  These methods control the threaded aspect of the player.
- reallyDoNextMove;
- (move)nextMove;
- waitForTurn;

// the name
+ (const char *)strategyName;
- (char *)playerName;

@end

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Marcel Waldvogel and Netfuture.ch.