/*
 * Faculty of Applied Science and Engineering, University of Toronto
 * CSC181: Introduction to Computer Programming, Fall 2000
 *
 * File: main.cpp
 * Contains: Small driver demonstrating functionality of Connect Four
 * board and minimax player classes.
 * Author: Ray Ortigas (rayo@dgp.toronto.edu)
 */

#include <iostream.h>
#include "rtournament.h"
#include "rminimax.h"

int main(void) {
	TPlayer* red = 0;
	TPlayer* black = 0;
	
	int n;

	cout << "Red: Minimax; What level? (1-6)" << endl;
	cin >> n;
	red = new MinimaxTPlayer(n);

	cout << "Black: Minimax; What level? (1-6)" << endl;
	cin >> n;
	black = new MinimaxTPlayer(n);

	RTBoard board(red, black);
	TPlayer* current = red;
	TPlayer* winner = 0;
	int moveNumber = 1;
	while ((winner = board.getWinner()) == 0
			&& board.hasLegalMoves()) {
		int currentMove = current->suggestMove(board);
		cout << "Move #" << moveNumber << ": ";
		cout << ((current == red) ? "Red " : "Black ");
		cout << "moves to " << currentMove << endl;
		board.dropPiece(current, currentMove);
		cout << board << endl;
		current = (current == red) ? black : red;
		moveNumber++;
	}

	if (winner == 0) {
		"Draw!";
	}
	else {
		cout << ((winner == red) ? "Red " : "Black ");
		cout << "wins!" << endl;
	}

	return 0;
}
