LINUX.ORG.RU

История изменений

Исправление XMs, (текущая версия) :

Гораздо лучше. Отсюда выносишь рисование драмов в отдельную функцию:

void__ Scene::ShowDrums(int__ countdrums, float__*rotate_, int__ counttextureondrums, int__**drum)
{
    glPushMatrix();
    glRotatef(180,0,0,1);
    for(int__ i=0;i<countdrums;i++)
    {
        glPushMatrix();
        glRotatef(rotate_[i],1,0,0);
        for(int__ j=0;j<counttextureondrums;j++)
        {
            glBindTexture(GL_TEXTURE_2D,GetTexture(drum[i][j]-4));
            EnableTexture(i,j);
        }
        glPopMatrix();
    }
    glPopMatrix();
}

void__ Scene::Show(int__ countdrums,float__*rotate_,int__ counttextureondrums,int__**drum,int__ credits,int__ win,int__ totalbet,const char__*line,int__ bet,bool__*lines,int__**ms,bool__*buttons)
{
    ShowDrums(countdrums, rotate_, counttextureondrums, drum);
    ShowBoth();
    ShowButtons(buttons);
    ShowReservedWords(credits,win,totalbet,line,bet);
    ShowLine(bet,lines,ms);
}


Потом выносишь рисование отдельного драма в функцию:

void__ Scene::ShowSingleDrum(float__ rotate, int__ counttextureondrums, int__ *drum, const int__ row)
{
    glPushMatrix();
    glRotatef(rotate, 1, 0, 0);
    for(int__ i = 0; i < counttextureondrums; i++)
    {
        glBindTexture(GL_TEXTURE_2D, GetTexture(drum[i] - 4));
        EnableTexture(row, i);
    }
    glPopMatrix();
}

void__ Scene::ShowDrums(int__ countdrums, float__*rotate_, int__ counttextureondrums, int__**drum)
{
    glPushMatrix();
    glRotatef(180, 0, 0, 1);
    for(int__ i = 0; i < countdrums; i++)
        ShowSingleDrum(rotate[i], counttextureondrums, drum[i], i);
    glPopMatrix();
}

void__ Scene::Show(
    int__ countdrums,
    float__*rotate_,
    int__ counttextureondrums,
    int__**drum,
    int__ credits,
    int__ win,
    int__ totalbet,
    const char__*line,
    int__ bet,
    bool__*lines,
    int__**ms,
    bool__*buttons)
{
    ShowDrums(countdrums, rotate_, counttextureondrums, drum);
    ShowBoth();
    ShowButtons(buttons);
    ShowReservedWords(credits, win, totalbet, line, bet);
    ShowLine(bet, lines, ms);
}


Затем начинаешь приводить в порядок типы и имена переменных:

void__ Scene::ShowSingleDrum(
    float__ angle,
    int__ drumsTextureCount,
    int__ drums[RSIZE],
    const int__ row)
{
    glPushMatrix();
    glRotatef(angle, 1, 0, 0);
    for (int__ i = 0; i < drumsTextureCount; i++)
    {
        glBindTexture(GL_TEXTURE_2D, GetTexture(drums[i] - 4));
        EnableTexture(row, i);
    }
    glPopMatrix();
}

void__ Scene::ShowDrums(
    int__ drumCount,
    float__ rotation[ROTSIZE],
    int__ drumsTextureCount,
    int__ drums[CSIZE][RSIZE])
{
    glPushMatrix();
    glRotatef(180, 0, 0, 1);
    for (int__ i = 0; i < drumCount; i++)
        ShowSingleDrum(rotation[i], drumsTextureCount, drums[i], i);
    glPopMatrix();
}

void__ Scene::Show(
    int__ drumCount,
    float__ rotation[ROTSIZE],
    int__ drumsTextureCount,
    int__ drums[CSIZE][RSIZE],
    int__ credits,
    int__ win,
    int__ totalbet,
    const char__ *line,
    int__ bet,
    bool__ *lines,
    int__ **ms,
    bool__ *buttons)
{
    ShowDrums(drumCount, rotation, drumsTextureCount, drums);
    ShowBoth();
    ShowButtons(buttons);
    ShowReservedWords(credits, win, totalbet, line, bet);
    ShowLine(bet, lines, ms);
}

Ну а теперь уже можно убирать магические числа, группировать аргументы: вынести описание текстур в отдельный класс, завести структуру/класс с описанием барабана и перенести туда всю кухню, связанную с его состоянием, ну и прочее по мелочи. Этим предлагаю заняться самостоятельно. В идеале у тебя функция ShowDrums() должна принимать один аргумент — список объектов «барабан», либо, если это член класса, вообще ничего

Исходная версия XMs, :

Гораздо лучше. Отсюда выносишь рисование драмов в отдельную функцию:

void__ Scene::ShowDrums(int__ countdrums, float__*rotate_, int__ counttextureondrums, int__**drum)
{
    glPushMatrix();
    glRotatef(180,0,0,1);
    for(int__ i=0;i<countdrums;i++)
    {
        glPushMatrix();
        glRotatef(rotate_[i],1,0,0);
        for(int__ j=0;j<counttextureondrums;j++)
        {
            glBindTexture(GL_TEXTURE_2D,GetTexture(drum[i][j]-4));
            EnableTexture(i,j);
        }
        glPopMatrix();
    }
    glPopMatrix();
}

void__ Scene::Show(int__ countdrums,float__*rotate_,int__ counttextureondrums,int__**drum,int__ credits,int__ win,int__ totalbet,const char__*line,int__ bet,bool__*lines,int__**ms,bool__*buttons)
{
    ShowDrums(countdrums, rotate_, counttextureondrums, drum);
    ShowBoth();
    ShowButtons(buttons);
    ShowReservedWords(credits,win,totalbet,line,bet);
    ShowLine(bet,lines,ms);
}


Потом выносишь рисование отдельного драма в функцию:

void__ Scene::ShowSingleDrum(float__ rotate, int__ counttextureondrums, int__ *drum, const int__ row)
{
    glPushMatrix();
    glRotatef(rotate, 1, 0, 0);
    for(int__ i = 0; i < counttextureondrums; i++)
    {
        glBindTexture(GL_TEXTURE_2D, GetTexture(drum[i] - 4));
        EnableTexture(row, i);
    }
    glPopMatrix();
}

void__ Scene::ShowDrums(int__ countdrums, float__*rotate_, int__ counttextureondrums, int__**drum)
{
    glPushMatrix();
    glRotatef(180, 0, 0, 1);
    for(int__ i = 0; i < countdrums; i++)
        ShowSingleDrum(rotate[i], counttextureondrums, drum[i], i);
    glPopMatrix();
}

void__ Scene::Show(
    int__ countdrums,
    float__*rotate_,
    int__ counttextureondrums,
    int__**drum,
    int__ credits,
    int__ win,
    int__ totalbet,
    const char__*line,
    int__ bet,
    bool__*lines,
    int__**ms,
    bool__*buttons)
{
    ShowDrums(countdrums, rotate_, counttextureondrums, drum);
    ShowBoth();
    ShowButtons(buttons);
    ShowReservedWords(credits, win, totalbet, line, bet);
    ShowLine(bet, lines, ms);
}


Затем начинаешь приводить в порядок типы и имена переменных:

void__ Scene::ShowSingleDrum(
    float__ angle,
    int__ drumsTextureCount,
    int__ drums[RSIZE],
    const int__ row)
{
    glPushMatrix();
    glRotatef(angle, 1, 0, 0);
    for (int__ i = 0; i < drumsTextureCount; i++)
    {
        glBindTexture(GL_TEXTURE_2D, GetTexture(drums[i] - 4));
        EnableTexture(row, i);
    }
    glPopMatrix();
}

void__ Scene::ShowDrums(
    int__ drumCount,
    float__ rotation[ROTSIZE],
    int__ drumsTextureCount,
    int__ drums[CSIZE][RSIZE])
{
    glPushMatrix();
    glRotatef(180, 0, 0, 1);
    for (int__ i = 0; i < drumCount; i++)
        ShowSingleDrum(rotation[i], drumsTextureCount, drums[i], i);
    glPopMatrix();
}

void__ Scene::Show(
    int__ drumCount,
    float__ rotation[ROTSIZE],
    int__ drumsTextureCount,
    int__ drums[CSIZE][RSIZE],
    int__ credits,
    int__ win,
    int__ totalbet,
    const char__ *line,
    int__ bet,
    bool__ *lines,
    int__ **ms,
    bool__ *buttons)
{
    ShowDrums(drumCount, rotation, drumsTextureCount, drums);
    ShowBoth();
    ShowButtons(buttons);
    ShowReservedWords(credits, win, totalbet, line, bet);
    ShowLine(bet, lines, ms);
}

Ну а теперь уже можно убирать магические числа, группировать аргументы: вынести описание текстур в отдельный класс, завести структуру/класс с описанием барабана и перенести туда всю кухню, связанную с его состоянием, ну и прочее по мелочи. Этим предлагаю заняться самостоятельно