Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовик по ТРПО.DOC
Скачиваний:
34
Добавлен:
01.05.2014
Размер:
668.67 Кб
Скачать

3.1. Разработанные классы:

Основной класс, реализующий хранение и обработку данных

class CLifeDoc : public CDocument

Методы:

//инициализация переменных при создании нового документа

BOOL CLifeDoc::OnNewDocument()

//сериализация (чтение / запись) данных (в / из) файла

void CLifeDoc::Serialize(CArchive& ar)

//уничтожение (остановка) таймера

void CLifeDoc::StopTimer()

//инициализация вида при его изменении

void CLifeDoc::ChangeView()

//очистка массива данных и очистка экрана

void CLifeDoc::ClearView()

//Инициализация переменных

void CLifeDoc::InitOptions()

//стартовать/остановить процесс моделирования

void CLifeDoc::LifeGo(bool b)

//выделение памяти под поля для игры

void CLifeDoc::NewField (BYTE**& f)

//Шаг эволюции клеток

void CLifeDoc::NextStage()

//открытие / закрытие управляющей панели

void CLifeDoc::OnViewControl()

//открытие панели параметров

void CLifeDoc::OnViewOptions()

//увеличение масштаба (с помощью клавиши '+')

void CLifeDoc::OnInc()

//уменьшение масштаба (с помощью клавиши '-')

void CLifeDoc::OnDec()

//открытие файла (нажата F3)

void CLifeDoc::OnFileOpen()

//сохранение файла (нажата F2)

void CLifeDoc::OnFileSaveAs()

Данные (поля) класса:

CLifeView* pView; //Указатель на активный вид

bool bEven, bEditMode, bScaleChanged, bEraseMode; //Флаги режимов четности шага, режима редактирования, изменения масштаба, режима стирания.

BYTE **F1, **F2, **fOld, **fNew; //Рабочиие поля (массивы точек)

//fOld и fNew - указатели на массивы F1 и F2

UINT uX, uY; //Размерность поля

UINT uTime, uTimerId; //Квант и ID таймера

UINT uScale; //Масштаб

COLORREF NewColor, OldColor, DiedColor; //Цвета состояний клетки жизни

Основной класс, обеспкечивающий отображение данных

class CLifeView : public CScrollView

Методы:

//метод, вызываемый при необходимости перерисовки данных

void CLifeView::OnDraw(CDC* pDC)

//обновление вида

void CLifeView::OnInitialUpdate()

//изменение состояния полос прокрутки

void CLifeView::ChangeScroll()

//непосредственное рисование клеток с заданным статусом

void CLifeView::DrawCells(CDC *pDC, LifeStatus s)

//получить и запомнить выбранную пользователем точку

void CLifeView::GrabPoint(CPoint point)

//инициализация вида

void CLifeView::InitView()

//получение координаты точки, выбранной пользователем с помощью мышы

void CLifeView::OnLButtonDown(UINT nFlags, CPoint point)

void CLifeView::OnLButtonUp(UINT nFlags, CPoint point)

void CLifeView::OnMouseMove(UINT nFlags, CPoint point)

//на каждом "тике" таймера вызывает обработчик (анализатор) шага эволюции

void CLifeView::OnTimer(UINT nIDEvent)

Данные (поля) класса:

CLifeDoc *pDoc; //Указатель на класс Документ

CBrush NewBr, OldBr, DiedBr; //Набор кистей для изображения цвета состояний

CPen pen; //Текущее перо

bool wasScroll; //признак использования полос(ы) прокрутки

3.2. Структура представления основных данных.

  1. Ожидание действий от пользователя

  2. Ввод данных (точек) мышью

  3. Установка параметров

  4. Чтение данных из файла

  5. Моделирование процесса развития колонии

  6. Результат окончания развития колонии

  7. Сохранение данных в файле