на тему рефераты Информационно-образоательный портал
Рефераты, курсовые, дипломы, научные работы,
на тему рефераты
на тему рефераты
МЕНЮ|
на тему рефераты
поиск
Сапер
p align="left">// Рисует заблокированую ячейку

void DrawBlockedCell(CDC * dc);

// Попадает ли точка, указанная в параметре, в область этой ячейки

bool HitToPoint(const CPoint & point);

// Рисует ячейку

virtual void Draw(CDC * dc) = 0;

// Выполняет действия при щелчке на эту ячейку

virtual int Click(CDC * dc) = 0;

// Возвращает, есть ли тут бомба.

// Необходимо для инициализации поля

virtual bool isBomb() const = 0;

// частные переменные в классе

private:

int cellX;

int cellY;

int cellState;

};

// Класс - указатель(умный указатель) на класс CMyCell

class CPMyCell

{

public:

CPMyCell();

CPMyCell(CMyCell * pMyCell);

void SetPointer(CMyCell * pMyCell);

CMyCell * GetPointer() const;

void Destroy();

operator CMyCell*();

CMyCell * operator->();

private:

CMyCell * pCell;

};

#endif

Mycell. cpp

// mycell. cpp

// Реализация класса CMyCell, т.е. класса ячейка

#include "stdafx. h"

#include "mycell. h"

CMyCell:: CMyCell(int x, int y, int state)

: cellX(x), cellY(y), cellState(state) // доступ к переменным

{

// cellX = x;

// cellY = y;

// cellState = state;

}

// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // /

CMyCell:: CMyCell(const CMyCell & copy)

: cellX(copy. GetX()), cellY(copy. GetY()), cellState(copy. GetState()) // копирующий уонструктор

{

}

// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // /

CMyCell:: ~CMyCell() // деструктор

{

}

int CMyCell:: GetX() const

{

return cellX; // возвращает значение x

}

// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // /

int CMyCell:: GetY() const

{

return cellY; // возвращает значение у

}

// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // /

int CMyCell:: GetState() const

{

return cellState; // возвращает значение позиции

}

// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // /

void CMyCell:: SetX(int x) // проверка на то, чтоб координата х была больше нуля

{

if (x >= 0)

cellX = x;

else

cellX = 0; // error

}

// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // /

void CMyCell:: SetY(int y) // проверка на то, чтоб координата у была больше нуля

{

if (y >= 0)

cellY = y;

else

cellY = 0; // error

}

// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // /

void CMyCell:: SetState(int state) // проверка на то, чтоб значение позиции было больше нуля

{

if (state >= 0)

cellState = state;

else

cellState = 0; // error

}

// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // /

bool CMyCell:: HitToPoint(const CPoint & point) // создание ячейки

// проверка положения ячейки

{ if ((point. x > 10 + GetY() * (SIZE + 2)) && (point. x < 10 + GetY() * (SIZE + 2) + SIZE) &&

(point. y > 10 + GetX() * (SIZE + 2)) && (point. y < 10 + GetX() * (SIZE + 2) + SIZE))

return true;

return false;

}

// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // /

void CMyCell:: DrawClosedCell(CDC * dc) // прорисовка закрытой ячейки

{

CPen pen(PS_SOLID, 1, RGB(0, 0, 0));

CBrush brush(RGB(204, 204, 204));

CPen * oldPen = dc->SelectObject(&pen);

CBrush * oldBrush = dc->SelectObject(&brush);

dc->Rectangle(10 + GetY() * (SIZE + 2), 10 + GetX() * (SIZE + 2),

10 + GetY() * (SIZE + 2) + SIZE, 10 + GetX() * (SIZE + 2) + SIZE);

dc->SelectObject(oldBrush);

dc->SelectObject(oldPen);

}

// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // /

void CMyCell:: DrawBlockedCell(CDC * dc) // прорисовка заблокированной ячейки

{

CPen pen(PS_SOLID, 1, RGB(0, 0, 0));

CBrush brush(RGB(204, 204, 204));

// CPen penBlock(PS_SOLID, 4, RGB(0, 0, 0));

CPen * oldPen = dc->SelectObject(&pen);

CBrush * oldBrush = dc->SelectObject(&brush);

dc->Rectangle(10 + GetY() * (SIZE + 2), 10 + GetX() * (SIZE + 2),

10 + GetY() * (SIZE + 2) + SIZE, 10 + GetX() * (SIZE + 2) + SIZE);

// CPen * oldBlockPen = dc->SelectObject(&penBlock);

dc->TextOutA(10 + GetY() * (SIZE + 2) + 6, 10 + GetX() * (SIZE + 2) + 3, "B", 1); // обозначение флажка

// dc->SelectObject(oldBlockPen);

dc->SelectObject(oldBrush); // указатель на обьект ячейки

dc->SelectObject(oldPen);

}

// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // /

// Реализация класса CPMyCell // // // // // // // // // // // // // // // // // /

// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // /

CPMyCell:: CPMyCell()

: pCell (NULL) // конструктор по умолчанию

{

}

// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // /

CPMyCell:: CPMyCell(CMyCell * pMyCell)

: pCell (pMyCell)

{

}

// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // /

void CPMyCell:: SetPointer(CMyCell * pMyCell)

{

pCell = pMyCell; // конструктор копирования, установка указателя

}

// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // /

CMyCell * CPMyCell:: GetPointer() const

{

return pCell; // взятие указателя

}

// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // /

void CPMyCell:: Destroy() // удаление ячейки

{

if (pCell! = NULL)

delete pCell;

pCell = NULL;

}

// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // /

CPMyCell:: operator CMyCell *()

{

return pCell;

}

// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // /

CMyCell * CPMyCell:: operator - >()

{

return pCell;

}

Mycellbomb. h

#ifndef MYCELL_BOMB_H_

#define MYCELL_BOMB_H_

#include "mycell. h"

class CMyCellBomb: public CMyCell // ячейка с бомбой

{

public:

CMyCellBomb(int x = 0, int y = 0, int state = CLOSED); // задаем координаты ячейки с бомбо. изначальный вид - ячейка закрыта

CMyCellBomb(const CMyCellBomb & copy); // конструктор копирования

~CMyCellBomb();

// Рисует ячейку

virtual void Draw(CDC * dc);

// Выполняет действия при щелчке на эту ячейку

virtual int Click(CDC * dc);

// Возвращает значение, по которому определяется, есть ли тут бомба.

// Необходимо для инициализации поля

virtual bool isBomb() const;

};

#endif

Mycellbomb. cpp

// mycellbomb. cpp

// Реализация класса CMyCellBomb, т.е. ячейки с бомбой

#include "stdafx. h"

#include "mycellbomb. h"

CMyCellBomb:: CMyCellBomb(int x, int y, int state)

: CMyCell(x, y, state) // устанавливаем координаты ячейки, конструктор по умолчанию

{

}

// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // /

CMyCellBomb:: CMyCellBomb(const CMyCellBomb & copy)

: CMyCell(copy) // конструктор копирования

{

}

// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // /

CMyCellBomb:: ~CMyCellBomb() // деструктор

{

}

// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // /

void CMyCellBomb:: Draw(CDC * dc) // рисуем бомбы

{

if (GetState() == CLOSED) // если закрыто, то рисуем закрытую ячейку

CMyCell:: DrawClosedCell(dc);

else if (GetState() == BLOCK) // если стоит флажок, то рисуем флажок

CMyCell:: DrawBlockedCell(dc);

else

// рисуем бомбы

{

CPen pen(PS_SOLID, 1, RGB(0, 0, 0));

CBrush brush(RGB(255, 0, 0));

CBrush brushCircle(RGB(0, 0, 0));

CPen * oldPen = dc->SelectObject(&pen);

CBrush * oldBrush = dc->SelectObject(&brush);

dc->Rectangle(10 + GetY() * (SIZE + 2), 10 + GetX() * (SIZE + 2),

10 + GetY() * (SIZE + 2) + SIZE, 10 + GetX() * (SIZE + 2) + SIZE);

CBrush * oldBrushCircle = dc->SelectObject(&brushCircle);

dc->Ellipse(10 + GetY() * (SIZE + 2) + 4, 10 + GetX() * (SIZE + 2) + 4,

10 + GetY() * (SIZE + 2) + SIZE - 4, 10 + GetX() * (SIZE + 2) + SIZE - 4);

dc->SelectObject(oldBrushCircle);

dc->SelectObject(oldBrush);

dc->SelectObject(oldPen);

}

}

// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // /

int CMyCellBomb:: Click(CDC * dc) // проверка на щелчок

if (GetState() == BLOCK) // если стоит флажок, то ячейка не откроется при нажатии

return 0;

SetState(OPENED); // открытие ячейки

Draw(dc);

return REDRAW

// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // /

bool CMyCellBomb:: isBomb() const // есть ли это бомба

{

return true;

}

Mycellwob. h

#ifndef MYCELL_WOB_H_

#define MYCELL_WOB_H_

#include "mycell. h"

class CMyCellWob: public CMyCell // ячейка без бомбы

{

public:

CMyCellWob(int x = 0, int y = 0, int state = CLOSED, int val = 0); // задаем координаты ячейки и значение. начальное положение - закрытая ячейка

CMyCellWob(const CMyCellWob & copy); // копирующий конструктор

~CMyCellWob(); // деструктор

int GetValue() const; // передаем значения

void SetValue(int val);

// Рисует ячейку

virtual void Draw(CDC * dc);

// Выполняет действия при щелчке на эту ячейку

Страницы: 1, 2, 3, 4



© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент.