Закодировал функцию printBoard (вывод поля на экран). Закодировал функции Init и Free (выделение и очистка памяти).
//Инициализация переменных, выделение памяти
//вход - ничего
//выход - ничего
void Init()
{
short i, s;
char j;
//Выделяем память под доску table
table = new Table * [sizeTable];
for (i = 0; i < sizeTable; i++)
table[i] = new Table[sizeTable];
//Выделяем память под доску table
table_copy = new Table * [sizeTable];
for (i = 0; i < sizeTable; i++)
table_copy[i] = new Table[sizeTable];
//Вектор стратегии
Strategy = new MaxMoves[depth];
Strategy[0].rate = -1;
//Обнуляем каждую ячейку доски
for (i = 0; i < sizeTable; i++)
for (j = 0; j < sizeTable; j++)
{
table[i][j].content = 0;
table[i][j].rate_user = 0;
table[i][j].rate_comp = 0;
}
//Выделяем память под линию
line = new Table[sizeTable];
//Обнуляем последний ход
lastMove.x = -1;
lastMove.y = -1;
//Игровой счетчик (0,1)
START = 1;
//Счетчик ходов
nmove = 0;
//Вектор наилучших ходов
Max_moves = new MaxMoves[sizeTable * sizeTable];
//Протяженность поля наилучших ходов
s = MovesDifficity[0];
for (i = 1; i < depth; i++)
s *= MovesDifficity[i];
//Вспомогательные вектора
MinMovesToWin = new short[s];
MaxMovesRank = new MaxRankMoves[s];
I = new char[depth];
nSC = new double[depth];
nSU = new double[depth];
//Поля наилучших ходов чела и компа
Max_moves_userV = new MaxMovesV * [s];
for (i = 0; i < s; i++)
Max_moves_userV[i] = new MaxMovesV[depth];
Max_moves_compV = new MaxMovesV * [s];
for (i = 0; i < s; i++)
Max_moves_compV[i] = new MaxMovesV[depth];
}
//Освобождение занятой памяти
//вход - ничего
//выход - ничего
void Free()
{
short i, s;
//Освобождение памяти
for (i = 0; i < sizeTable; i++)
{
delete[] table[i];
delete[] table_copy[i];
}
delete[] Strategy;
s = MovesDifficity[0];
for (i = 1; i < depth; i++)
s *= MovesDifficity[i];
for (i = 0; i < s; i++)
{
delete[] Max_moves_userV[i];
delete[] Max_moves_compV[i];
}
delete [] Max_moves;
delete [] MinMovesToWin;
delete [] MaxMovesRank;
delete [] I;
delete [] nSC;
delete [] nSU;
delete [] line;
}
//Вывод поля на экран
//вход - ничего
//выход - ничего
void printBoard()
{
char i, j;
//Отрисовка доски////////////
if (sizeTable > 25 && lastMove.y == -1)
return;
else
if (sizeTable > 25)
{
printf("Board:\n");
printf("%d-%d\n", lastMove.y, lastMove.x);
return;
}
printf("Board:\n");
printf(" ");
for (i = 0; i < sizeTable; i++)
printf("%d ", i);
printf("\n");
for (i = 0; i < sizeTable; i++)
{
printf("%d ", i);
for (j = 0; j < sizeTable; j++)
if (table[i][j].content == 0)
printf("|_|");
else if (table[i][j].content == 1)
{
if (lastMove.x == j && lastMove.y == i)
printf("");
else
printf("|X|");
}
else if (table[i][j].content == 2)
{
if (lastMove.x == j && lastMove.y == i)
printf("<0>");
else
printf("|0|");
}
printf("\n");
}
}
P.S. У моей подруги скоро будет день рождения. Но, к сожалению, она - баба, и не увлекается эспандерами, так что подарить ей какую-либо принадлежность для хвата - не вариант. Я думаю, что красивая
вышивка на готовых изделиях будет для неё лучшим подарком. А Вы как считаете?