Форум программистов, компьютерный форум CyberForum.ru

Работа с экраном в текстовом режиме - C++

Восстановить пароль Регистрация
 
MrAleksej
 Аватар для MrAleksej
20 / 15 / 8
Регистрация: 05.12.2010
Сообщений: 251
Записей в блоге: 1
07.04.2011, 19:54     Работа с экраном в текстовом режиме #1
Ниже дана программа которая до нажатия Esc повторяет действия: случайным образом выбирает размеры (соотношение 25х80) и положение окна на экране закрашивает его в случайный цвет помещает в него двойную рамку и текст “Привет!” со случайным цветом и включает источник звука со случайной частотой Все окна полностью размещаются на экране Задание: после нажатия Esc программа модифицируется: Окно располагается в левой половине экрана и движется сверху вниз и затем обратно, а при повторном нажатии Esc прекращает свою работу

#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;
void doubleframe(); //функция формирования двойной рамки
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();
}
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<<'╝'; //правый нижний угол рамки
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.04.2011, 19:54     Работа с экраном в текстовом режиме
Посмотрите здесь:

C++ Как сделать прокрутку (в текстовом режиме) и менюшку в turbo c
C++ Работа с экраном в текстовом режиме
C++ РАБОТА С ЭКРАНОМ В ГРАФИЧЕСКОМ РЕЖИМЕ
ООП иерархия классов с выводом в текстовом режиме C++
Создание интерфейса пользователя в текстовом режиме C++
C++ Нарисовать мышью прямоугольник в текстовом режиме экрана
C++ Работа с экраном в текстовом режиме (вывод всех цветов фона, разделяя цвета паузой)
C++ Создание игр в текстовом режиме

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrAleksej
 Аватар для MrAleksej
20 / 15 / 8
Регистрация: 05.12.2010
Сообщений: 251
Записей в блоге: 1
28.06.2011, 16:40  [ТС]     Работа с экраном в текстовом режиме #2
Отбой тревоге))) Я её решил!!))) Можете пользоваться, если кому-нибудь похожая задача попадется!!!)))

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
#include<dos.h>
char text[]="Belkin";
unsigned int textlen=7, //размер текста
     pause=500, //задержка в мсек
     maxx=80, maxy=25, //гориз. и верт. размеры экрана
     x1, y1, x2, y2, background, color, setblink, freq, k=0, i=0, j=0, kol=0;
void doubleframe(); //функция формирования двойной рамки
void main()
{
  unsigned int minlen;
  minlen=textlen+6; //минимальный размер окна по горизонтали
  textbackground(0);
  clrscr();
  do{   //формирование окна
      if(kbhit()){k++;getch();}
      if(k<1){
      x1=1+random(maxx-minlen); //координата левого верхнего угла
      x2=minlen+random(maxx-x1-minlen);//горизонтальный размер окна
      y2=x2*maxy/maxx; //вертикальный размер окна
      y1=1+random(maxy-y2); //координата левого верхнего угла
      }
      if(k>=1&&k<2){
      x1=1; //координата левого верхнего угла
      x2=minlen+random(maxx-minlen);//горизонтальный размер окна
      y2=x2*maxy/maxx; //вертикальный размер окна
      y1+=1; //координата левого верхнего угла
      }
 
      if(k>=1&&(y1+minlen)==maxy){
      while(y1>0){
      x1=1; //координата левого верхнего угла
      x2=minlen+random(maxx-minlen);//горизонтальный размер окна
      y2=x2*maxy/maxx; //вертикальный размер окна
      y1-=1; //координата левого верхнего угла
      }           }
      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(k<2); //цикл до нажатия клавиши
  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<<'-'; //правый нижний угол рамки
}
Yandex
Объявления
28.06.2011, 16:40     Работа с экраном в текстовом режиме
Ответ Создать тему
Опции темы

Текущее время: 13:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru