Информатика и технология программирования


         

Поскольку данный класс является промежуточным,


Поскольку данный класс является промежуточным, то его объекты на сообщения никак не реагируют.



// Класс "Видимая точка" ---------------------------

class PT : public OBJ
{ char sym; // Отображаемый символ

int x,y; // Координаты точки

public:
PT(char); // Конструктор

~PT(); // Деструктор

void on(); // Высветить

void off(); // Погасить

void up(); // Перемещения точки

void down();
void left();
void right();
void OnPlace(int,int); // Позиционирование точки

void HandleEvent(MS *); // Обработка сообщений

};
//--------------------------------------------------------------

PT::PT(char c) { sym = c; x = 0; y = 0; }

void PT::off() { gotoxy(x+1,y+1); putch(' '); }

void PT::on() { gotoxy(x+1,y+1); putch(sym); }

void PT::OnPlace(int xx, int yy) {off(); x = xx; y = yy; on(); }

void PT::left() { off(); if (x &#62 0) x--; on(); }

void PT::right() { off(); if (x &#60 79) x++; on(); }

void PT::up() { off(); if (y &#62 0) y--; on(); }

void PT::down() { off(); if (y &#60 24) y++; on(); }

PT::~PT() {off(); }

void PT::HandleEvent(MS *pm) {}



Курсор - это " видимая точка" , которая управляется с клавиатуры, поэтому этот объект выделяет сообщения от клавиатуры с соответствующими кодами и вызывает для них методы перемещения из класса " видимой точки" .



// Класс " Курсор - управляемый с клавиатуры"

class MOUSE : public PT
{ public:
void HandleEvent(MS *);
MOUSE();
~MOUSE();
};
//--------------------------------------------------------------

MOUSE::MOUSE() : PT('&#35') // Конструктор - сконструировать

{ OnPlace(40,12); } // точку " &#35" и установить ее на 40,12

void MOUSE::HandleEvent(MS *pm)
{
switch (pm-&#62code)
{ // Реакция курсора на сообщения от клавиатуры

case ms_KEYB:
switch(pm-&#62x)
{
case '8': up(); pm-&#62clear(); break;
case '2': down(); pm-&#62clear(); break;
case '4': left(); pm-&#62clear(); break;
case '6': down(); pm-&#62clear(); break;
case '0': pm-&#62clear(); SendEvent(ms_KILL,0,0,(void *)(OBJ *)this); break;

Содержание  Назад  Вперед