Вращение фигуры

7) about_mes() – функция для вывода информации о разработчике;

8) help_mes() – функция для вывода информации о пользовании программой;

9) init_gr() – функция для инициализации графического режима;

10) proverka() – функция для проверки легальности копии программы;

2.2 Листинг программы

#include <graphics.h> //работа с графикой

#include <stdlib.h>

#include <stdio.h> //работа с файлом

#include <conio.h>

#include <math.h>

#include <dos.h> //очистка и задержка экрана

#include <iostream.h> //работа с файлом

#include <time.h>

#include <bios.h>

#include <io.h>

#include <fcntl.h>

int x1,y1,x2,y2,x[8],y[8],xs[8],ys[8],xc,yc,p,col;

double k,sd,dd1,dd2,tm1,tm2;

long bios_time;

FILE *fc;

time_t t1,t2,ty1;

struct time tx1,tx2;

char ch=1;

struct param

{

int a;

int b;

int c;

int m;

int o;

double timer;

long hdd;

long unsigned ram;

} ;

void menu();

param data;

void init_gr()

{

int gdriver = DETECT, gmode, errorcode;

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{

printf("Ошыбка открытия графического режима: %s\n", grapherrormsg(errorcode));

getch();

exit(1);

}

}

void print()

{

fc=fopen("table.bin","rb");

clrscr();

fseek(fc,SEEK_SET,0);

int pos=0;

col=0;

gotoxy(1,1);

cout<<"#Опыта?";

gotoxy(8,1);

cout<<"Длина?";

gotoxy(14,1);

cout<<"Ширина?";

gotoxy(21,1);

cout<<"Высота?";

gotoxy(28,1);

cout<<"Ось?";

gotoxy(32,1);

cout<<"Мерц.?";

gotoxy(40,1);

cout<<"Время цикла ?";

gotoxy(56,1);

cout<<"HDD ?";

gotoxy(63,1);

cout<<"RAM ";

gotoxy(1,2);

cout<<"??????????????????????????????????????????????????????????????????????\n";

while(!feof(fc))

{

col++;

if (col>22){col=0; getch();}

fread(&data,24,1,fc);

if(feof(fc)) break;

pos++;

printf("%6.1d",pos);

cout<<"? ";

printf("%3.1d",(data).b);

cout<<" "<<"? ";

printf("%4.1d",(data).a);

cout<<" "<<"? ";

printf("%4.1d",(data).c);

cout<<" "<<"? ";

printf("%1.1d",(data).o);

cout<<" "<<"? ";

printf("%3.1d",(data).m);

cout<<" "<<"? ";

printf("%13.10f",(data).timer);

cout<<" "<<"? ";

printf("%5.1ld",(data).hdd);

cout<<" "<<"? ";

printf("%7.1ld",(data).ram);

cout<<"\n";

}

getch();

fclose(fc);

}

void input()

{

textcolor(15);

textbackground(0);

cleardevice();

cout<<"Введи длинну A [50 - 225]: \n";

cin>>(data).b;

cout<<"Введи ширину B [50 - 225]: \n";

cin>>(data).a;

cout<<"Введи высоту С [50 - 225]: \n";

cin>>(data).c;

cout<<"Введи ось [1 - 2]: \n";

cin>>(data).o;

cout<<"Введи период мерцания [1 - 10]: \n";

cin>>(data).m;

(data).ram=(_SS/16+_SP-_psp)*16;

if ( ((data).a>226) || ((data).b>226) || ((data).c>226)||

((data).a<50) || ((data).b<50) || ((data).c<50) ||(((data).o<1))

||(((data).o>2)) ||(((data).m>10)) || (((data).m<1)))

{

textcolor(12);

setbkcolor(0);

cleardevice();

gotoxy(1,1);

cout<<"Параметры фигуры заданы не верно!";

cout<<"\nВведи их снова .\n";

getch();

input();

}

}

void proverka()

{

FILE *f3;

double code,code1;

f3= fopen("c:\\windows\\system\\dxwin.vxd","r+b");

asm {int 11h

}

code=_AX;

if (f3==NULL)

{

textcolor(132);

clrscr();

gotoxy(20,10);

cout<<"В доступе отказано.";

cout<<"\n Обратитесь к разработчику.";

getch();

exit(1);

}

else {

fread(&code1,8,1,f3);

if (code1!=code)

{

textcolor(132);

clrscr();

gotoxy(20,10);

cout<<"В доступе отказано.";

cout<<"\n Обратитесь к разработчику.";

getch();

exit(1);

}

}

}

void file_in()

{

fc=fopen("table.bin","a+b");

if (fc==NULL)

{

cout<<"Ошыпка открытия файла";

getch();

exit(1);

}

fwrite(&data,24,1,fc);

fclose(fc);

}

void moving()

{

ch=1;

setlinestyle(0,0,3);

double xx,yy;

xx=0;

yy=0;

x1=320; y1=200;

x[1]=x1-((data).a)/2; y[1]=y1;

x[2]=x1+((data).a)/2; y[2]=y1;

x[3]=x[1]; y[3]=y[1]+((data).b);

x[4]=x[2]; y[4]=y[1]+((data).b);

if ((data).o==1)

{

xx=x[3];

yy=y[3];

}

if ((data).o==2)

{

xx=(x[1]+x[2])/2;

yy=(y[1]+y[3])/2;

}

setcolor(10);

for (int i=1;i<5;i++)

{

xs[i]=x[i]-xx;

ys[i]=y[i]-yy;

;

}

t1=time(NULL);

p=1;

for (i=-30;i<331;i++)

{

if (kbhit())

{ch=1;

ch=getch();}

if (ch==27) break;

t2=time(NULL);

if (t2-t1==((data).m))

{

t1=time(NULL);

if (p==16) p=1;

setcolor(p);

p++;

}

k=i*3.14/180;

for (int n=5;n>0;n--)

{

x[n]=(xs[n]*sin(k)-ys[n]*cos(k));

y[n]=(xs[n]*cos(k)+ys[n]*sin(k));

}

int t,p,pk;

double xd;

t=320;

p=300;

pk=10;

if ((data).o==1)

{

sd=0.1;

xd=1;

y[5]=y[1]-pk*(data).c; x[5]=x[1];

y[6]=y[2]-pk*(data).c; x[6]=x[2];

y[7]=y[3]-pk*(data).c; x[7]=x[3];

y[8]=y[4]-pk*(data).c; x[8]=x[4];

}

if ((data).o==2)

{

sd=1;

xd=0.1;

t=400;

p=240;

y[5]=y[1]; x[5]=x[1]-pk*(data).b;

y[6]=y[2]; x[6]=x[2]-pk*(data).b;

y[7]=y[3]; x[7]=x[3]-pk*(data).b;

y[8]=y[4]; x[8]=x[4]-pk*(data).b;

}

cleardevice();

line(xd*x[1]+t,sd*y[1]+p,xd*x[2]+t,sd*y[2]+p);

line(xd*x[1]+t,sd*y[1]+p,xd*x[3]+t,sd*y[3]+p);

line(xd*x[3]+t,sd*y[3]+p,xd*x[4]+t,sd*y[4]+p);

line(xd*x[2]+t,sd*y[2]+p,xd*x[4]+t,sd*y[4]+p);

line(xd*x[1]+t,sd*y[1]+p,xd*x[5]+t,sd*y[5]+p);

line(xd*x[2]+t,sd*y[2]+p,xd*x[6]+t,sd*y[6]+p);

line(xd*x[3]+t,sd*y[3]+p,xd*x[7]+t,sd*y[7]+p);

line(xd*x[4]+t,sd*y[4]+p,xd*x[8]+t,sd*y[8]+p);


Страница: