Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка_ООП_заочники.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
321.02 Кб
Скачать

Лабораторная работа n3.

Разработка простых классов.

Порядок выполнения работы (по занятиям):

  1. Ознакомление с заданием. Разработка алгоритма основной программы. Разработка класса(состав данных, перечень методов и их алгоритмы).

  2. Написание программы. Ввод программы. Тестирование программы

  3. Защита работы.

Разработать объектно-ориентированную программу на базе результатов лабораторной работы №1. Несколько объектов в виде заданного рисунка должны перемещаться по экрану в соответствии с индивидуальным заданием. Количество объектов и их параметры задаются пользователем в начале работы программы( задавать как динамические объекты). Ниже перечислены параметры, которыми могут отличаться объекты друг от друга в зависимости от варианта.

№ варианта

Параметры, которыми отличаются объекты

1

Количество точек смещения, через сколько секунд смещаться

2

Количество точек смещения, начальный цвет заполнения

3

Количество точек смещения, номер стиля линии, который надо исключить.

4

Количество точек смещения, клавиша, на которая управляет отсчетом времени.

5

Количество точек смещения, время обратного отсчета.

6

Количество точек смещения, координаты исходной точки.

7

Количество точек смещения, цвет, которым выводится системное время.

8

Количество точек смещения, количество секунд, которые перед выводом необходимо вычесть из времени работы программы.

9

Количество точек смещения, начальный цвет линии.

10

Количество точек смещения, клавиша которая управляет смещением.

11

Количество точек смещения, цвет, которым выводится время обратного отсчета.

12

Количество точек смещения, период времени смещения.

13

Количество точек смещения, исходная координата по вертикали в левой части экрана.

14

Количество точек смещения, клавиша, на которую реагирует фигура.

15

Количество точек смещения, фигура должна останавливаться после указанного количества циклов работы

16

Количество точек смещения, номер стиля заполнения, который надо исключить.

17

Количество точек смещения, граница в правой части экрана, до которой смещается фигура.

18

Количество точек смещения, клавиша, на количество нажатий которой надо подсчитать.

19

Количество точек смещения, время смещения.

20

Количество точек смещения, стиль заполнения, который должен использоваться при каждой второй перемене.

21

Количество точек смещения, дойдя до середины верхней части каждая фигура должна делать паузу в движении на свое количество секунд.

22

Количество точек смещения, цвет, которым выводится время.

23

Количество точек смещения, клавиша, на которую надо реагировать.

24

Количество точек смещения, значение обратного отсчета.

25

Количество точек смещения, координата начальной точки по горизонтали.

#include <stdio.h>

#include <stdlib.h>

#include <graphics.h>

#include <dos.h>

#include <conio.h>

class pfigura{

int x,x0,y0,v,c_l,style,t,f;

public:

pfigura()

{

c_l=1;

style=0;

t=0;

f=0;

printf("‚ўҐ¤ЁвҐ Є®®а¤Ё­ вл Ёб室­®© в®зЄЁ Ё бЄ®а®бвм ¤ўЁ¦Ґ­Ёп-");

scanf("%d%d%d",&x0,&y0,&v);

x=x0;

}

void draw()

{

char s[4];

setcolor(c_l);

moveto(x,y0); //в®зЄ  1

lineto(x+20,y0-10);//в®зЄ  2

lineto(x+50,y0-10);//в®зЄ  3

lineto(x+70,y0);//в®зЄ  4

lineto(x+50,y0+10);//в®зЄ  5

lineto(x+20,y0+10);//в®зЄ  6

lineto(x,y0);//в®зЄ  1

setfillstyle(style,GREEN);

floodfill(x+10,y0,c_l);

moveto(x+20,y0-4); //в®зЄ  1

setcolor(WHITE);

itoa(t,s,10);

outtext(s);

}

void move()

{

if(f) t++;

x+=v;

if((x+70>getmaxx())||(x<0))

{

c_l++;

if(c_l>14) c_l=1;

style++;

if(style>11) style=0;

v=-v;

if(x+70>getmaxx())

{

x=2*getmaxx()-x-2*70;// x=getmaxx()-(x+70-getmaxx())-70;

t=0;

f=1;

}

if(x<0)

{

x=x0;

}

}

}

};//end class

void main()

{

int N,i,GD=0,GM;

printf("Vvedite kolichectvo figur");

scanf("%d",&N);

pfigura *p=new pfigura[N];

initgraph(&GD,&GM,"");

struct time tm1,tm2;

gettime(&tm1);

for(;;)

{

cleardevice();

for(i=0;i<N;i++)

(p+i)->draw();

do

{

if(kbhit()) if(getch()==27)

{

closegraph();

delete []p;

return;

}

gettime(&tm2);

}while(tm1.ti_sec==tm2.ti_sec);

tm1=tm2;

for(i=0;i<N;i++)

(p+i)->move();

}

}