Вращение фигурыРефераты >> Программирование и компьютеры >> Вращение фигуры
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);