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 руб./мес


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


Зайдите на наш сайт: Секретка на автомобиль - для Вас.

 Урок 4. Добавление переменных в класс документа / Lines / Примеры разработки

Игра Lines (Visual C++. MFC)
Урок 4. Добавление переменных в класс документа

Для того, чтобы не писать каждый раз конкретные числа для максимального количества шариков и для размера игрового поля, добавьте в класс CLinesDoc следующие константы:

...
const int iNumOfColors=5;//количество цветов (7 максимум)
const int iNumOfRows=9;//количество рядов (9 в классическом варианте)

class CLinesDoc : public CDocument
{
...

Далее добавим несколько переменных-членов в класс CLinesDoc:

class CLinesDoc : public CDocument
{
    ...
    // Attributes
public:
    int m_iNumOfRows; // количество рядов игрового поля
    int m_iNumOfColors; //максимальное количество цветов
    int m_iNumOfPoints; //количество очков
    int m_iNumOfBalls; //количество шариков на поле
    int m_field[iNumOfRows][iNumOfRows]; //массив, задающий игровое поле
    ...

Массив m_field задает игровое поле. Ноль будет означать, что поле свободно, а цифры от 1 до 7 - что поле занято (каждое число будет означать шарик определенного цвета).

Теперь добавим в конструктор класса CLinesDoc инициализацию переменных:

CLinesDoc::CLinesDoc()
{
    // TODO: add one-time construction code here
    m_iNumOfColors=7;//количество цветов (7 максимум)
    m_iNumOfRows=9;
}

Переходим теперь в метод OnNewDocument класса CLinesDoc. В него добавьте следующий код:

BOOL CLinesDoc::OnNewDocument()
{
    if (!CDocument::OnNewDocument())
        return FALSE;
    
    // TODO: add reinitialization code here
    // (SDI documents will reuse this document)
    m_iNumOfBalls=0; //Шариков на поле пока нет
    m_iNumOfPoints=0;//Количество очков (пока ноль)
    srand(GetTickCount()%32000); //Инициализируем датчик случайных чисел
    for(int j=0;j<m_iNumOfRows;j++){
        for(int i=0;i<m_iNumOfRows;i++){
            m_field[i][j]=0; //заполняем поле нулями
        }
    }
    ...