Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
 Аватар для MrAleksej
20 / 15 / 14
Регистрация: 05.12.2010
Сообщений: 256
Записей в блоге: 1

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

07.04.2011, 19:54. Показов 2522. Ответов 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<<'╝'; //правый нижний угол рамки
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.04.2011, 19:54
Ответы с готовыми решениями:

Работа с экраном в текстовом режиме
В меню с выбором пунктов Функциональными Клавишами по программе с клавиатуры в 1-е окно вводится текст с цифрами. Во 2-м окне...

Работа с экраном в текстовом режиме (вывод всех цветов фона, разделяя цвета паузой)
Пожалуйста подскажите, как сделать вывод всех цветов фона, разделяя цвета паузой. Задание: Дополнить меню функциональной клавишей F6:...

Работа с экраном в графическом режиме
Ребята, целый день решал никак не могу понять почему у меня график не правильно прорисовывается? Написать программу которая строит...

1
 Аватар для MrAleksej
20 / 15 / 14
Регистрация: 05.12.2010
Сообщений: 256
Записей в блоге: 1
28.06.2011, 16:40  [ТС]
Лучший ответ Сообщение было отмечено MrAleksej как решение

Решение

Отбой тревоге))) Я её решил!!))) Можете пользоваться, если кому-нибудь похожая задача попадется!!!)))

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<<'-'; //правый нижний угол рамки
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.06.2011, 16:40
Помогаю со студенческими работами здесь

Работа в текстовом режиме
В текстовом режиме символами 'ࡪ' нарисовать КОНТУР прямоугольника. А и В- длины его горизонтального и вертикального отрезков...

Работа в текстовом режиме видеоадаптера
Добрый вечер всем! Помогите, пожалуйста, разобраться с синтаксисом по данной теме именно в FASMе. Пробовал примеры из похожих тем на форуме...

Работа с мышью в текстовом режиме.
Срочно помогите! При нажатии левой кнопки мыши текстовые символы на экране, которые имеют такой же цвет, как и те где находится курсор,...

Работа с мышкой и видеопамятью в текстовом режиме
Огромная просьба помочь с задачей.Искала на многих сайтах и в разных книгах ,но сложно понять с чего начать Реализовать подпрограмму...

После логотипа виндовс комп зависает с черным экраном. В безопасном режиме все хорошо
Здравствуйте, вот собственно моя проблема. Выключил компьютер, пошел спать. Просыпаюсь, включаю компьютер и после логотипа виндовс...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru