Курсовая: Вращение фигуры
Содержание
1 Руководство пользователя 2
1.1 Описание задания 2
1.2 Состав пакета прикладных программ 2
1.3 Системные требования 2
1.4 Описание программы 2
1.5 Диапазон допустимых значений 3
1.6 Таблица выходных данных 3
2 Руководство системного программиста 3
2.1 Описание функций 3
2.2 Листинг программы 4
2.3 Блок схема 30
1 Руководство пользователя
1.1 Описание задания
Заставить фигуру сделать оборот вокруг оси. С клавиатуры задаются следующие
параметры:
1. Длинна ребер;
2. Интенсивность мигания ребер;
3. Ось вращения (2 варианта значений);
Предусмотреть горячий выход по Esc, помощь и информацию об авторе.
После ввода значений необходимо вычислить и вывести на экран:
1. Количество раз выполнения основного цикла программы;
2. Время выполнения программы;
3. Количество байт на HDD;
4. Количество байт в памяти;
5. Заданные значения ребер;
1.2 Состав пакета прикладных программ
В пакет прикладных программ входят: исполняемый файл met.exe, текст исходного
кода программы mov1990.cpp, а так же русификатор keyrus.com.
1.3 Системные требования
Для корректной работы программы необходимы следующие системные требования:
- Процессор 186+;
- ОЗУ 8МБ+
- Графический адаптер VGA (4 бита);
1.4 Описание программы
Для установки программы необходимо запустить файл setup.exe и далее следовать
инструкциям на экране.
После запуска файла mov1990.exe пользователю предоставляется графическое
меню. Пункты меню содержат информацию об авторе, помощь и запуск основного
алгоритма. Передвижение по пунктам меню осуществляется функциональными
клавишами-стрелками. При входе в подменю Пуск пользователь должен ввести
значения ребер пирамиды частоту мерцания и ось вращения.
После выше указанных действий на экране появится пирамида вращающаяся вокруг
одной из осей рисунок 1.4.1 и рисунок 1.4.2.
Совершив поворот на 360 градусов, фигура останавливается. Далее на экран
выводятся величины вычисленные в ходе работы программы, описанные в задании.
Рисунок 1.4.1 Ц ось 1 Рисунок 1.4.2 Ц
ось 2
1.5 Диапазон допустимых значений
Ребра принимают значения в диапазоне от 50 до 225. Интенсивность мигания
может принимать значения от 1 до 10. Номер оси принимает значения 1 и 2 ,
соответственно первая и вторая ось.
№ | Ось | Цикл | Время | RAM | HDD | Интенсивность | Длинна ребер |
1 | 1 | 360 | 15.76923 | 39904 | 95444 | 1 | 100 | 100 | 100 |
2 | 1 | 360 | 15.21247 | 39904 | 95444 | 2 | 200 | 100 | 100 |
3 | 1 | 360 | 15.67182 | 39904 | 95444 | 4 | 100 | 100 | 200 |
4 | 2 | 360 | 15.38361 | 39904 | 95444 | 6 | 150 | 100 | 150 |
5 | 2 | 360 | 15.78237 | 39904 | 95444 | 8 | 225 | 50 | 225 |
6 | 2 | 360 | 15.89761 | 39904 | 95444 | 9 | 117 | 220 | 90 |
7 | 2 | 360 | 15.09383 | 39904 | 95444 | 10 | 225 | 225 | 225 |
1.6 Таблица выходных данных
2 Руководство системного программиста
2.1 Описание функций
Данная программа содержит ряд нестандартных функций полный перечень которых
следует далее (большинство этих функций не имеет параметров, если в функции
используются параметры их назначение будет указано):
1) menu() Ц функция предназначена для вывода внешнего интерфейса
программы. Данная функция является управляющей для всех остальных;
2) print() Ц функция для вывода файлов с результатами тестов;
3) input() Ц функция предназначена для ввода параметров вращения
фигуры;
4) file_in () Ц функция предназначена для записи результатов в файл
данных;
5) moving() Ц функция реализующая главный алгоритм программы Ц
вращение фигуры;
6) size_on_hdd() Ц функция для определения размера исполняемого
файла программы Ц mov1990.exe
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);
line(xd*x[5]+t,sd*y[5]+p,xd*x[6]+t,sd*y[6]+p);
line(xd*x[5]+t,sd*y[5]+p,xd*x[7]+t,sd*y[7]+p);
line(xd*x[7]+t,sd*y[7]+p,xd*x[8]+t,sd*y[8]+p);
line(xd*x[6]+t,sd*y[6]+p,xd*x[8]+t,sd*y[8]+p);
delay(40);
if (i<-29)
{
i++;
getch();
bios_time = biostime(0, 0L);
tm1=bios_time / CLK_TCK;
}
}
bios_time = biostime(0, 0L);
tm2=bios_time / CLK_TCK;
(data).timer=tm2-tm1;
if (ch!=27)
ch=getch();
}
void size_on_hdd()
{
long int hc;
hc = open("mov1990.exe", O_RDONLY);
(data).hdd = filelength(hc);
close(hc);
}
void about_mes()
{
int key=0;
while (key!=283)
{
setfillstyle(1,3);
bar(100,155,550,330);
setlinestyle(0,0,1);
THICK_WIDTH;
setcolor(11);
rectangle(99,154,551,331);
setcolor(0);
outtextxy(285,160,"Об авторе...");
NORM_WIDTH;
line(280,168,385,168);
outtextxy(150,180," Данная программа создана Нетупским ");
outtextxy(150,190," Олегом Игоревичем, студентом группы ");
outtextxy(150,200," ВВТ-207. В программе выпо-");
outtextxy(150,210," лняется вращение параллелепипеда по");
outtextxy(150,220," варианту задания номер 8.");
key=bioskey(0);
}
setfillstyle(1,1);
bar(99,154,551,331);
}
void prog_mes()
{
int key=0;
while (key!=283)
{
setfillstyle(1,3);
bar(100,155,550,330);
setlinestyle(0,0,1);
THICK_WIDTH;
setcolor(11);
rectangle(99,154,551,331);
setcolor(0);
outtextxy(285,160,"О программе...");
NORM_WIDTH;
line(280,168,385,168);
outtextxy(150,180," В программе выполняется вращение");
outtextxy(150,190," параллелепипеда по варианту задания номер 8.");
key=bioskey(0);
}
setfillstyle(1,1);
bar(99,154,551,331);
}
void help_mes()
{
int key=0;
while (key!=283)
{
setfillstyle(1,3);
bar(100,155,550,430);
setlinestyle(0,0,1);
THICK_WIDTH;
setcolor(11);
rectangle(99,154,551,431);
setcolor(0);
outtextxy(285,160,"Помощь");
NORM_WIDTH;
line(280,168,335,168);
outtextxy(150,180," 1. Клавиши управления");
outtextxy(150,190," Меню программы упраляется при помощи клавиш ");
outtextxy(150,200,"управления курсором (влево и вправо). Вход в ");
outtextxy(150,210,"выделенное меню осуществляется клавишей Enter.");
outtextxy(150,220," При вращении фигуры возможно досрочное за-");
outtextxy(150,230,"вершить этот процесс нажатием клавиши Esc");
outtextxy(150,250," 2. Меню прграммы");
outtextxy(150,260," В программе имеется 3 пункта меню. ");
outtextxy(150,270," Выбор выделенного пункта меню осуществля-");
outtextxy(150,280," ется нажатием клавиши <Enter>. Перемеще-");
outtextxy(150,290," по главному меню осуществляется клавишами-");
outtextxy(150,300," стрелками(влево,вправо), по пунктам подменю");
outtextxy(150,310," стрелками вверх и вниз. Возврат к предыдущему");
outtextxy(150,320," меню выполняется нажатием <Esc>. Информация ");
outtextxy(150,330," о выделенном пукте меню находитя в строке со-");
outtextxy(150,340," стояния.");
outtextxy(150,360," 3. Ввод данных ");
outtextxy(150,370,"После входа в меню Пуск, пользователю необходимо ");
outtextxy(150,380,"ввести длину ребер фигуры, ось вращения и часто-");
outtextxy(150,390,"мерцания. Диапазон допустимых значений для ребер");
outtextxy(150,400,"составляет [50 - 225], для оси [1-2], для частоты ");
outtextxy(150,410,"мерцания [1-10]. Если данные введены не верно, ");
outtextxy(150,420,"то потребуется ввести их снова. ");
key=bioskey(0);
}
setfillstyle(1,1);
bar(99,154,551,431);
}
void status_bar()
{
setcolor(10);
line(0,465,640,465);
line(0,479,640,479);
setfillstyle(1,5);
bar(0,466,640,478);
}
void submenu1()
{
setfillstyle(1,4);
bar(40,29,180,189);
setcolor(12);
rectangle(40,29,180,189);
setfillstyle(1,12);
bar(40,30,180,69);
setcolor(10);
outtextxy(60,44,"Пуск");
outtextxy(60,86,"Открыть");
outtextxy(60,126,"Сохранить");
outtextxy(60,168,"Очистить");
status_bar();
setcolor(11);
outtextxy(30,468,"Выполнить вращение фигуры");
int key1=0,keys1=1;
while (key1!=283)
{
key1=bioskey(0);
switch (key1)
{
//Esc
case 283:{
setfillstyle(1,1);
bar(40,29,180,189);
setcolor(9);
line(40,29,180,29);
line(40,30,180,30);
setcolor(15);
line(40,31,180,31);
setcolor(11);
status_bar();
outtextxy(30,468,"Для входа в меню Файл нажмите <Enter>");
break;
}
//стрелка вниз
case 20480:{
if (keys1==4) keys1=1;
else keys1++;
switch (keys1)
{
case 1:{
setcolor(10);
setfillstyle(1,4);
bar(41,149,179,188);
outtextxy(60,168,"Очистить");
setfillstyle(1,12);
bar(40,30,180,69);
outtextxy(60,44,"Пуск");
status_bar();
setcolor(11);
outtextxy(30,468,"Выполнить вращение фигуры");
break;
}
case 2:{
setcolor(10);
setfillstyle(1,4);
bar(41,30,179,69);
outtextxy(60,44,"Пуск");
setfillstyle(1,12);
bar(40,70,180,109);
outtextxy(60,86,"Открыть");
status_bar();
setcolor(11);
outtextxy(30,468,"Вывести на экран файл с результатами тестов");
break;
}
case 3:{
setcolor(10);
setfillstyle(1,4);
bar(41,70,179,109);
outtextxy(60,86,"Открыть");
setfillstyle(1,12);
bar(40,110,180,149);
outtextxy(60,126,"Сохранить");
status_bar();
setcolor(11);
outtextxy(30,468,"Сохранить результаты последнего теста в файл");
break;
}
case 4:{
setcolor(10);
setfillstyle(1,4);
bar(41,110,179,149);
outtextxy(60,126,"Сохранить");
setfillstyle(1,12);
bar(40,150,180,189);
outtextxy(60,168,"Очистить");
status_bar();
setcolor(11);
outtextxy(30,468,"Удалить всю информацию из файла тестов");
break;
}
}//switch
break;
}
//стрелка вверх
case 18432: {
if (keys1==1) keys1=4;
else keys1--;
switch (keys1)
{
case 1:{
setcolor(10);
setfillstyle(1,4);
bar(41,70,179,109);
outtextxy(60,86,"Открыть");
setfillstyle(1,12);
bar(40,30,180,69);
outtextxy(60,44,"Пуск");
status_bar();
setcolor(11);
outtextxy(30,468,"Выполнить вращение фигуры");
break;
}
case 2:{
setcolor(10);
setfillstyle(1,4);
bar(41,110,179,149);
outtextxy(60,126,"Сохранить");
setfillstyle(1,12);
bar(40,70,180,109);
outtextxy(60,86,"Открыть");
status_bar();
setcolor(11);
outtextxy(30,468,"Вывести на экран файл с результатами тестов");
break;
}
case 3:{
setcolor(10);
setfillstyle(1,4);
bar(41,149,179,188);
outtextxy(60,168,"Очистить");
setfillstyle(1,12);
bar(40,110,180,149);
outtextxy(60,126,"Сохранить");
status_bar();
setcolor(11);
outtextxy(30,468,"Сохранить результаты последнего теста в файл");
break;
}
case 4:{
setcolor(10);
setfillstyle(1,4);
bar(41,30,179,69);
outtextxy(60,44,"Пуск");
setfillstyle(1,12);
bar(40,150,180,189);
outtextxy(60,168,"Очистить");
status_bar();
setcolor(11);
outtextxy(30,468,"Удалить всю информацию из файла тестов");
break;
}
}//switch
break;
} //case:18432
//Enter
case 7181:{
switch(keys1)
{
case 1:{
size_on_hdd();
setfillstyle(1,0);
bar(1,1,640,480);
input();
moving();
menu();
break;
}
case 2:{
closegraph();
print();
menu();
break;
}
case 3:{
file_in();
setfillstyle(1,5);
bar(290,200,420,250);
setcolor(10);
rectangle(290,200,420,250);
outtextxy(300,220,"Файл сохранен!");
getch();
setfillstyle(1,1);
bar(290,200,420,250);
break;
}
case 4:{
remove("table.bin");
setfillstyle(1,5);
bar(290,200,400,250);
setcolor(10);
rectangle(290,200,400,250);
outtextxy(300,220,"Файл очищен!");
getch();
setfillstyle(1,1);
bar(290,200,400,250);
break;
}
}//switch(keys1)
break;
}//case 7181:
}
}//while
}
void submenu2()
{
setfillstyle(1,4);
bar(240,29,380,150);
setcolor(12);
rectangle(240,29,380,150);
setfillstyle(1,12);
bar(240,30,380,69);
setcolor(10);
outtextxy(260,44,"Об авторе");
outtextxy(260,86,"О программе");
outtextxy(260,126,"Инструкция");
status_bar();
setcolor(11);
outtextxy(230,468,"Просмотреть информацию о создателе программы");
int key1=0,keys1=1;
while (key1!=283)
{
key1=bioskey(0);
switch (key1)
{
//Esc
case 283:{
setfillstyle(1,1);
bar(240,29,380,150);
setcolor(9);
line(240,29,380,29);
line(240,30,380,30);
setcolor(15);
line(240,31,380,31);
setcolor(11);
status_bar();
outtextxy(30,468,"Для входа в меню Помощь нажмите <Enter>");
break;
}
//стрелка вниз
case 20480:{
if (keys1==3) keys1=1;
else keys1++;
switch (keys1)
{
case 1:{
setcolor(10);
setfillstyle(1,4);
bar(241,110,379,149);
outtextxy(260,126,"Инструкция");
setfillstyle(1,12);
bar(240,30,380,69);
outtextxy(260,44,"Об авторе");
status_bar();
setcolor(11);
outtextxy(30,468,"Просмотреть информацию о создателе программы");
break;
}
case 2:{
setcolor(10);
setfillstyle(1,4);
bar(241,30,379,69);
outtextxy(260,44,"Об авторе");
setfillstyle(1,12);
bar(240,70,380,109);
outtextxy(260,86,"О программе");
status_bar();
setcolor(11);
outtextxy(30,468,"Информация о программе");
break;
}
case 3:{
setcolor(10);
setfillstyle(1,4);
bar(241,70,379,109);
outtextxy(260,86,"О программе");
setfillstyle(1,12);
bar(240,110,380,149);
outtextxy(260,126,"Инструкция");
status_bar();
setcolor(11);
outtextxy(30,468,"Помощь в пользовании программой");
break;
}
}//switch
break;
}
//стрелка вверх
case 18432: {
if (keys1==1) keys1=3;
else keys1--;
switch (keys1)
{
case 1:{
setcolor(10);
setfillstyle(1,4);
bar(241,70,379,109);
outtextxy(260,86,"О программе");
setfillstyle(1,12);
bar(240,30,380,69);
outtextxy(260,44,"Об авторе");
status_bar();
setcolor(11);
outtextxy(30,468,"Просмотреть информацию о создателе программы");
break;
}
case 2:{
setcolor(10);
setfillstyle(1,4);
bar(241,110,379,149);
outtextxy(260,126,"Инструкция");
setfillstyle(1,12);
bar(240,70,380,109);
outtextxy(260,86,"О программе");
status_bar();
setcolor(11);
outtextxy(30,468,"Информация о программе");
break;
}
case 3:{
setcolor(10);
setfillstyle(1,4);
bar(241,30,379,69);
outtextxy(260,44,"Об авторе");
setfillstyle(1,12);
bar(240,110,380,149);
outtextxy(260,126,"Инструкция");
status_bar();
setcolor(11);
outtextxy(30,468,"Помощь в пользовании программой");
break;
}
}//switch
break;
} //case:18432
//Enter
case 7181:{
switch(keys1)
{
case 1:{
about_mes();
//submenu2();
//menu();
break;
}
case 2:{
prog_mes();
//submenu2();
//menu();
break;
}
case 3:{
help_mes();
//submenu2();
//menu();
break;
}
}//switch(keys1)
break;
}//case 7181:
}
}//while
}
void menu()
{
init_gr();
setfillstyle(1,1);
bar(1,1,640,480);
setfillstyle(1,9);
bar(5,5,635,30);
setcolor(15);
rectangle(3,3,636,31);
setfillstyle(1,5);
bar(68,6,124,28);
int obv0=15;
int obv=10;
setcolor(obv);
//setlinestyle(2,0,2);
rectangle(68,6,124,28);
settextstyle(0,0,1);
setcolor(11);
outtextxy(80,14,"Файл");
outtextxy(280,14,"Помощь");
outtextxy(500,14,"Выход");
setcolor(11);
status_bar();
outtextxy(30,468,"Для входа в меню Файл нажмите <Enter>");
int key=0,keys=1;
while (key!=283)
{
key=bioskey(0);
switch (key)
{
//вправо
case 19712:{
if (keys==3) keys=1;
else keys++;
switch (keys)
{ case 1:{
setfillstyle(1,9);
bar(485,6,555,28);
outtextxy(500,14,"Выход");
setfillstyle(1,5);
bar(68,6,124,28);
setcolor(obv);
rectangle(68,6,124,28);
settextstyle(0,0,1);
setcolor(11);
outtextxy(80,14,"Файл");
setcolor(11);
status_bar();
outtextxy(30,468,"Для входа в меню Файл нажмите <Enter>");
break;
}
case 2:{
setfillstyle(1,9);
bar(68,6,124,28);
outtextxy(80,14,"Файл");
setfillstyle(1,5);
bar(265,6,340,28);
setcolor(obv);
rectangle(265,6,340,28);
settextstyle(0,0,1);
setcolor(11);
outtextxy(280,14,"Помощь");
setcolor(11);
status_bar();
outtextxy(30,468,"Для входа в меню Помощь нажмите <Enter>");
break;
}
case 3:{
setfillstyle(1,9);
bar(265,6,340,28);
outtextxy(280,14,"Помощь");
setfillstyle(1,5);
bar(485,6,555,26);
setcolor(obv);
rectangle(485,6,555,26);
settextstyle(0,0,1);
setcolor(11);
outtextxy(500,14,"Выход");
setcolor(11);
status_bar();
outtextxy(30,468,"Для выхода из программы нажмите <Enter>");
break;
}
}
break;}
case 19200: {
if (keys==1) keys=3;
else keys--;
switch (keys)
{ case 1:{
setfillstyle(1,9);
bar(265,6,340,28);
outtextxy(280,14,"Помощь");
setfillstyle(1,5);
bar(68,6,124,28);
setcolor(obv);
rectangle(68,6,124,28);
settextstyle(0,0,1);
setcolor(11);
outtextxy(80,14,"Файл");
setcolor(11);
status_bar();
outtextxy(30,468,"Для входа в меню Файл нажмите <Enter>");
break;
}
case 2:{
setfillstyle(1,9);
bar(485,6,555,28);
outtextxy(500,14,"Выход");
setfillstyle(1,5);
bar(265,6,340,28);
setcolor(obv);
rectangle(265,6,340,28);
settextstyle(0,0,1);
setcolor(11);
outtextxy(280,14,"Помощь");
setcolor(11);
status_bar();
outtextxy(30,468,"Для входа в меню Помощь нажмите <Enter>");
break;
}
case 3:{
setfillstyle(1,9);
bar(68,6,124,28);
outtextxy(80,14,"Файл");
setfillstyle(1,5);
bar(485,6,555,26);
setcolor(obv);
rectangle(485,6,555,26);
settextstyle(0,0,1);
setcolor(11);
outtextxy(500,14,"Выход");
setcolor(11);
status_bar();
outtextxy(30,468,"Для выхода из программы нажмите <Enter>");
break;
}
} //case
break;}//case 19200
case 15104:{
if (key==15104)
help_mes();
break;
}
case 15360:{
if (key==15360)
{
file_in();
setfillstyle(1,5);
bar(290,200,420,250);
setcolor(10);
rectangle(290,200,420,250);
outtextxy(300,220,"Файл сохранен!");
getch();
setfillstyle(1,1);
bar(290,200,420,250);
}
break;
}
case 15616:{
if (key==15616)
{closegraph();
print();
menu();}
}
case 16896:{
if (key==16896)
{
remove("table.bin");
setfillstyle(1,5);
bar(290,200,400,250);
setcolor(10);
rectangle(290,200,400,250);
outtextxy(300,220,"Файл очищен!");
getch();
setfillstyle(1,1);
bar(290,200,400,250);
}
break;
}
case 17408:{
if (key==17408)
{
size_on_hdd();
setfillstyle(1,0);
bar(1,1,640,480);
input();
moving();
menu();
}
}
case 7181:{
if (keys==1){
submenu1();
}
if (keys==2){
submenu2();
}
if (keys==3)
{
exit(1);
}
break;
} //case 7181
break; }
}
}
void main()
{
proverka();
system("keyrus.com");
window(1,1,80,25);
textbackground(0);
clrscr();
menu();
}
2.3 Блок-схема