6 / 6 / 0
Регистрация: 01.03.2013
Сообщений: 166
1

Бегущая строка в С++

01.03.2013, 17:47. Показов 16610. Ответов 5
Метки нет (Все метки)

Всем привет! Вчера столкнулся с трудностью: не получается написать код бегущей строки в MS VC++. Перепробовал кучу вариантов из того, что умею и знаю. Облазил инет, дали несколько ценных советов, но исправить "перевод каретки на новую строку" я не могу.

Суть задачи такова: пользователь вводит предложение до 256 символов, жмет Enter и строка, начиная от начала (координаты {0;10}), ползет вправо, и как только доходит до конца, должна посимвольно исчезнуть и появиться на ТОЙ ЖЕ СТРОКЕ, с которой начиналась ( у меня она переводится на новую строку и как только полностью перейдет - скачет вверх на свою строку и так бесконечно).

Дополнительным бонусом нужно заставить ее регулировать скорость СТРЕЛКАМИ (вправо - больше скорость, влево - меньше. Пробел или вверх - пауза/возобновление).

Вот такой код я имею на сейчас. Прошу, добрых людей откликнуться. Заранее благодарен.
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
#include "stdafx.h"
#include <iostream>
#include <locale>
#include <conio.h>
#include <windows.h>
#include <stdio.h>
#include <cstring>
using namespace std;
 
int _tmain()
{
char str1[256]; int a,b;
a=0;
b=10;
 
HANDLE hConsole;
hConsole=GetStdHandle (STD_OUTPUT_HANDLE);
setlocale(LC_ALL,".1251");//русский язык для диалога
 
cout<<"Введите предложение:"<<endl;
cin.getline(str1,256);
system("cls");
COORD x={0,10};//координаты начала предложения
SetConsoleCursorPosition(hConsole,x);
setlocale(LC_ALL,".866");//выводим русскоязычное послание в движимой строке
cout<<str1<<endl;
 
for (a=0;a<80;a++)
{ 
COORD d={a,b};
SetConsoleCursorPosition(hConsole,d);
cout<<str1;
Sleep(50);
system("cls");
}
while (a>=0)
{
for (a=0;a<79;a++)
{
COORD d={a,b};
SetConsoleCursorPosition(hConsole,d);
cout<<str1;
Sleep(50);
system("cls");
}
}
getch();
return 0;
}
Очень нужна помощь. Завтра, если код будет работать согласно задаче, хотел бы сдать его
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.03.2013, 17:47
Ответы с готовыми решениями:

Бегущая строка Borland Turbo C++
Доброе время суток, подскажите, пожалуйста, код для организации бегущий строки. Текст, допустим,...

Бегущая строка
Как сделать бегущую строку без мерцания с Canvas и чтобы резало примерно так: Бегущая строка ...

Бегущая строка
Бегущая строка Программа читает записанный в файле текст и выводит его в виде бегущей строки,...

Бегущая строка
Привет, подскажите, кто может, как в C++ (на самом деле надо на Perl, но д.б. очень похоже) можно...

5
...
1802 / 1267 / 934
Регистрация: 12.02.2013
Сообщений: 2,058
01.03.2013, 20:10 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
#include <stdio.h>
#include <unistd.h>
 
int main(int argc, const char* argv[])
{
   const char text[] = "Hello World";
 
   size_t i = 0, j;
 
   while (1)
   {
      for (j = i; j > 0; --j)
      {
         printf(" ");
      }
 
      printf("%.*s", 80-i-1, text);
 
      if (80 == ++i)
      {
         i = 0;
      }
 
      printf("%c", 13);
 
      usleep(100000);
   }
 
   return 0;
}
0
6 / 6 / 0
Регистрация: 01.03.2013
Сообщений: 166
02.03.2013, 12:57  [ТС] 3
anmartex, спасибо, но немного не то. Сегодня нам преподаватель сказал, что нужно 3 цикла. 1 отвечает за посимвольный вывод текста в начале строки, второй - за его перемещение по экрану, а третий - за посимвольное исчезновение.
0
33 / 33 / 6
Регистрация: 19.01.2013
Сообщений: 33
02.03.2013, 13:02 4
Можно при помощи stl
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <string>
#include <algorithm>
 
 
int main()
{
  std::string str = "Hello world!!! ";
  
  while(true){
   rotate(str.begin(),str.begin()+1,str.end());
   std::cout<<str;
   Sleep(100);
   system("cls");
  }
 
}
0
24 / 24 / 5
Регистрация: 21.11.2012
Сообщений: 106
02.03.2013, 22:25 5
Писал для винды, код конечно адский но рабочий)))
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
#include <iostream>
#include<Windows.h>
#include <locale>
using namespace std;
 
 
const int size = 256;
HANDLE hConsole;
void gotoxy( int column, int line )
  {hConsole=GetStdHandle(STD_OUTPUT_HANDLE);
  COORD coord;
  coord.X = column;
  coord.Y = line;
  SetConsoleCursorPosition(
    hConsole,
    coord
    );
  }
 
 
int main(){
    setlocale(LC_ALL,".1251");
    char runstr [size] = "Я бегущая строка я бегу, бегу, бегу, бегу, бегу, бегу, бегу, бегу, бегу, бегу, бегу!";
    int n=size-80;
    int m=0;
    
    label:
    while(n>=0)
    {
        while(m<80)
        {
            gotoxy(m,10);
            
            cout<<*(runstr+n+(m++));
            
        }
        if(n==0){
            
            m=80;
                        
            while(m>=0){
                gotoxy(0,10);
                cout<<"                                                                                 ";
                gotoxy(80-m,10);
                
                while(n<m){
                    cout<<runstr[n++];
                }
                m--;n=0;Sleep(50);if(m==0){n=size-80;goto label;}
            }
        }
 
    n--;
    m=0;
    Sleep(50);
    }
 
    system("pause");
    return 0;
}
0
6 / 6 / 0
Регистрация: 01.03.2013
Сообщений: 166
05.03.2013, 13:02  [ТС] 6
booker, я не пойму кода твоего. Спасибо. Я переделал его, чтобы пользователь вводил сообщение, но у меня стала появляться "дребедень". А если использовать чисто твой код, то бежит "пустота", то есть ничего не выводится.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.03.2013, 13:02
Помогаю со студенческими работами здесь

бегущая строка
Помогите пожалуйста что нужно прописать в кнопке чтобы при ее нажатии бегущая строка меняла свой...

Не правильная бегущая строка
Здравствуйте Уважаемые товарищи программисты! Помогите разобраться с такой проблемой. Сделал...

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

Бегущая строка моргает (label)
Хочу сделать бегущую строку. Создаю таймер. И по таймеру двигаю текст в label. Проблема в том что...

Бегущая строка. Нужно выполнить в форме (Form), с кнопками и т.п
40. Бегущая строка Программа читает записанный в файле текст и выводит его в виде бегущей строки,...

Апплет "бегущая строка", найти ошибку, строка не останавливается и бежит по второму кругу
Заранее извиняюсь если не туда написал, суть вопроса: у меня стоит задача написать апплет, в...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru