• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

Графика

  • Автор темы Miller85
  • Дата начала
Статус
Закрыто для дальнейших ответов.
M

Miller85

Всем привет... Есть код программы надо неиного доработать... Не могу понять как... Короче программа выводит на экран окна разных размеров с надписью привет... Надо чтобы после нажатия клавиши esc Окно меняя размер дальше двигалось вниз а текст вверх...

Очень срочно надо...Завтра экзамен... Вот мой код
C++:
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
#include<dos.h>

char text[]="Привет!";
unsigned int textlen=7, //размер текста
pause=500, //задержка в мсек
maxx=80, maxy=25, //гориз. и верт. размеры экрана
x1, y1, x2, y2, background, color, setblink, freq, step;
void doubleframe(); //функция формирования двойной рамки

void main(void)
{
unsigned int minlen;
minlen=textlen+6; //минимальный размер окна по горизонтали
textbackground(0);
clrscr();
do{ //формирование окна
x1=1+random(maxx-minlen); //координата левого верхнего угла
x2=minlen+random(maxx-x1-minlen);//горизонтальный размер окна
y2=x2*maxy/maxx; //вертикальный размер окна
y1=1+random(maxy-y2); //координата левого верхнего угла
window(x1,y1,x1+x2-1,y1+y2-1);
background=random(8); //цвет фона
color=random(16); //цвет символов
setblink=random(2); //мигание
textbackground(background);
clrscr();
textcolor(color+setblink*128);
gotoxy((x2-textlen)/2+1,(y2-1)/2+1);
cout<<text;
doubleframe();
switch (background){ //частота звука связывается с цветом фона
case 0: freq=262;break; //До
case 1: freq=294;break; //Ре
case 2: freq=330;break; //Ми
case 3: freq=349;break; //Фа
case 4: freq=392;break; //Соль
case 5: freq=440;break; //Ля
case 6: freq=494;break; //Си
case 7: freq=524;break;}//До
sound(freq);
delay(pause);
nosound();
}while(!kbhit()); //цикл до нажатия клавиши Esc
getch();
//вторая часть программы: будем двигать окно вверх, а текст в окне вниз
//при этом текст не должен выходить за пределы окна
window(1,1,80,25); //полный размер экрана
textbackground(0);
textcolor(7);
clrscr(); //Очищаем экран
step=0;
do{
if(y1+step+y2<maxy) //будем двигать вниз пока не упремся
{
textbackground(0);
textcolor(7);
clrscr();
window(x1,y1+step,x1+x2-1,y1+step+y2-1);
textbackground(background);
clrscr();
textcolor(color+setblink*128);
if(step*2<y2)
{
gotoxy((x2-textlen)/2+1,y2-step*2);
cout<<text;
}
doubleframe();
step+=1;
}
delay(pause);

}while(!kbhit());
window(1,1,80,25); //полный размер экрана
textbackground(0);
textcolor(7);
clrscr();
}

void doubleframe() //формирование двойной рамки
{
int i;
gotoxy(2,1);
cout<<'г'; //левый верхний угол рамки
for(i=3;i<=x2-2;i++)cout<<'='; //верхняя часть рамки
cout<<'¬'; //правый верхний угол рамки
for(i=2;i<=y2-1;i++){
gotoxy(2,i);cout<<'¦'; //боковые
gotoxy(x2-1,i);cout<<'¦';} //части рамки
gotoxy(2,y2);cout<<'L'; //левый нижний угол рамки
for(i=3;i<=x2-2;i++)cout<<'='; //нижняя часть рамки
cout<<'-'; //правый нижний угол рамки
}

Добавлено: Всем спасибо!!! ;) Разобрался сам
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!