C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 Урок 14. Метод Delete5InLine / Lines / Примеры разработки

Игра Lines (Visual C++. MFC)
Урок 14. Метод Delete5InLine

В этом уроке мы, наконец-то, добавим метод для уничтожения пяти или более одноцветных шариков.

Внесите в заголовочный файл для класса CLinesDoc прототип для нашего метода Delete5InLine:

    ...
    void Delete5InLine(int x1, int y1, int x2, int y2);
    ...

Добавьте для нашего метода следующий код (в файле реализации класса CLinesDoc):

void CLinesDoc::Delete5InLine(int x1, int y1, int x2, int y2)
{
    //удаляет 5 шариков, расположенных в ряд
    //от поля (x1, y1) до поля (x2, y2).
    int i;
    //удаление по горизонтали
    if(y1==y2){
        for(i=x1;i<=x2;i++){
            if(m_field[i][y1]!=0){
                SetField(i,y1,0);
            }
        }
    }
    //удаление по вертикали
    if(x1==x2){
        for(i=y1;i<=y2;i++){
            if(m_field[x1][i]!=0){
                SetField(x1,i,0);
            }
        }
    }
    //удаление по диагонали сверху-слева - снизу-справа
    if((x1<x2) && (y1<y2)){
        for(i=x1;i<=x2;i++){
            if(m_field[i][y1-x1+i]!=0){
                SetField(i,y1-x1+i,0);
            }
        }
    }
    //удаление по диагонали снизу-слева - сверху-справа
    if((x1>x2) && (y1<y2)){
        for(i=y1;i<=y2;i++){
            if(m_field[x1+y1-i][i]!=0){
                SetField(x1+y1-i,i,0);
            }
        }
    }
}

Теперь раскомментируйте четыре вызова нашего метода в методе Is5InLine. Вызов MessageBox'а при этом можно удалить. Вот так должен выглядеть перый вызов (остальные три - аналогично):

    ...
    if(iS+iN+1>=5){//есть 5 в ряд
        Delete5InLine(x,y-iN,x,y+iS);
        bRes=true;
    }
    ...

Запустите программу. Наша игра уже полностью работоспособна. Шарики появляются и изчезают, очки начисляются. Все отлично.

На последующих уроках мы будем усовершенствовать нашу программу.