Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

Подписываем
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Предоплата всего
Подписываем
Контрольное задание #12
Студента первого курса заочного факультета группы Уи Калужских Михаила Юрьевича. Вариант #24
Тема: Работа с экраном в текстовом режиме.
Цель: Научиться работать с экраном в текстовом режиме.
Задание: Подкорректировать исходный код программы так, чтобы до нажатия клавиши Esc программа выполняла заданную задачу, после нажатия задача меняется на ту, которая дана в варианте (Текст движется по диагонали внутри окна, а затем обратно), при повторном нажатии клавиши Esc происходит выход из программы.
Блок-схема:
Исходный код:
#include <iostream.h>
#include <stdlib.h>
#include <conio.h>
#include <dos.h>
char text[]="Information";
unsigned int textlen=11, pause=500, maxx=80, maxy=25, x1, x2, y1, y2;
unsigned int background, color, setblink, freq;
unsigned int x, y, k, t, i;
void doubleframe ();
void doubleframetwo ();
void main ()
{
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 ());
window (1, 1, 80, 25);
textbackground (0);
textcolor (7);
clrscr ();
doubleframetwo ();
}
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 << 'И';
for (i=3; i<=x2-2; i++)
cout << 'Н';
cout << 'ј';
}
void doubleframetwo ()
{
textbackground (0);
clrscr ();
_setcursortype (_NOCURSOR);
x=1;
y=1;
k=1;
do
{
textcolor (RED);
for (t=0; t<23; t++)
{
clrscr ();
textbackground (random (3));
y=y+1;
x=x+3.52;
gotoxy (1, 1);
cout << 'Й';
for (i=1; i<=77; i++)
cout << 'Н';
cout << '»';
for (i=2; i<=24; i++)
{
gotoxy (1, i);
cout << 'є';
gotoxy (79, i);
cout << 'є';
}
gotoxy (1, 25);
cout << 'И';
for (i=1; i<=77; i++)
cout << 'Н';
cout << 'ј';
gotoxy (x-2, y);
cout << text;
delay (200);
}
for (t=0; t<23; t++)
{
clrscr ();
textbackground(random (3));
gotoxy (1, 1);
cout << 'Й';
for (i=1; i<=77; i++)
cout << 'Н';
cout << '»';
for (i=2; i<=24; i++)
{
gotoxy (1, i);
cout << 'є';
gotoxy (79, i);
cout << 'є';
}
gotoxy (1, 25);
cout << 'И';
for (i=1; i<=77; i++)
cout << 'Н';
cout << 'ј';
gotoxy (x-2, y);
cout << text;
y=y-1;
x=x-3;
delay (200);
}
}
while (!kbhit ());
window (1, 1, 80, 25);
textbackground (0);
clrscr ();
}
Таблица переменных:
Переменная |
Тип переменной |
x |
unsigned int |
y |
unsigned int |
k |
unsigned int |
t |
unsigned int |
i |
unsigned int |
x1 |
unsigned int |
x2 |
unsigned int |
y1 |
unsigned int |
y2 |
unsigned int |
pause |
unsigned int |
textlen |
unsigned int |
maxx |
unsigned int |
maxy |
unsigned int |
background |
unsigned int |
freq |
unsigned int |
color |
unsigned int |
setblink |
unsigned int |
text |
char |
Тестирование:
Тестирование прошло успешно. Программа выполняется по условию задачи.
D
while (!kbhit ())
Вывод текста
t
ывод символа ‘╝’
i
Вывод символа ‘═’
i=1; i<=77; i++
Вывод символа ‘╚’
i
Вывод символов ‘║’
i=2; i<=24; i++
Вывод символа ‘╗’
C
i
Вывод символа ‘═’
i=1; i<=77; i++
Вывод символа ‘╔’
y=y+1;
x=x+3.52;
t=0; t<=77; t++
do
void doubleframetwo ()
C
Вывод символа ‘╝’
i
Вывод символа ‘═’
i=3; i<=x2-2; i++
B
Вывод символов ‘║’
i=2; i<=y2-2; i++
Вывод символа ‘╗’
i
Вывод символа ‘═’
i=3; i<=x2-2; i++
Вывод символа ‘╔’
void doubleframe ()
Конец
void doubleframetwo ()
while (!kbhit ())
void doubleframe ()
A
A
Воспроизведение звуков в соответствии с цветом фона
Вывод текста
определение координат, формирование окна, определение цвета фона, символов.
do
void doubleframe() void doubleframetwo()
Объявление переменных
Начало
Вывод символа ‘╚’
i
B
y=y-1;
x=x-3;
Вывод текста
t
Вывод символа ‘╝’
i
Вывод символа ‘═’
E
E
i=1; i<=77; i++
Вывод символа ‘╚’
i
Вывод символов ‘║’
i=2; i<=24; i++
Вывод символа ‘╗’
i
Вывод символа ‘═’
i=1; i<=77; i++
Вывод символа ‘╔’
t=0; t<=77; t++
D