Отчет 11 июля 2011 г

Jul 20, 2011 17:22

Закодировал функцию 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. У моей подруги скоро будет день рождения. Но, к сожалению, она - баба, и не увлекается эспандерами, так что подарить ей какую-либо принадлежность для хвата - не вариант. Я думаю, что красивая вышивка на готовых изделиях будет для неё лучшим подарком. А Вы как считаете?

Программирование, Железный хват, Информатика, Добро пожаловать, Веселье, Лето, Компьютер, День Рождения

Previous post Next post
Up