Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.07.2009, 21:18   #1
unicode
Форумчанин
 
Аватар для unicode
 
Регистрация: 16.04.2009
Сообщений: 162
По умолчанию Анимация символов

Здраствуйте, как можно сделать анимацию из символов в консоли? Это типа появляется символ "/", потом "--", потом "\", потом "|", и так оно повторяется.
Я начал думать про циклы ...
unicode вне форума Ответить с цитированием
Старый 21.07.2009, 21:51   #2
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию

можно в теле цикла это сделать. Я бы использовал символ возрата каретки "\r" - т.е. вы "место вывода" символов перемещаете на начало строки.
Дилетант широкого профиля.

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс
ROD вне форума Ответить с цитированием
Старый 21.07.2009, 21:57   #3
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Можно посмотреть на виндовую функцию Sleep и на виндовые же таймеры. Создаём таймер через SetTimer(NULL, 500, &TimerProc), где 500 - "скорость" таймера, а TimerProc - указатель на функцию-обработчик таймера. Там только придется, кажется, обрабатывать очередь сообщений виндовых: while (GetMessage()) и всё в этом духе. В общем проще всего цикл воткнуть. С таймерами в консоли какие-то нюансы есть, думаю, в яндексах всяких примеры найдутся.
pu4koff вне форума Ответить с цитированием
Старый 21.07.2009, 22:16   #4
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

у меня есть такое

Код:
#include <stdio.h>
#include<windows.h>

int main() 
{
char chars[] = "|/-\\";
int i, j;
for(i = 0, j = 0; i < 10000; i++)
{ 
fprintf(stderr, "%c", chars[j++]);
if(j == 5)
j = 0;
Sleep(1);
fprintf(stderr, "%c", 0x8);
}

return 0;
}
counter вне форума Ответить с цитированием
Старый 21.07.2009, 22:26   #5
unicode
Форумчанин
 
Аватар для unicode
 
Регистрация: 16.04.2009
Сообщений: 162
По умолчанию

спасибо, я уже немного подумал и так сделал:
Код:
#include <iostream>
using namespace std;

void main()
{
	int i;
	
	i = 1;
	while (i<5000)
	{
		cout << "\\r";
		cout << "|\r";
		cout << "/\r";
		cout << "--\r";
		++i;
	}
	cin.get();
}
правда оно не совсем так как надо работает ...

и еще как сделать что бы оно медленнее крутилось?
unicode вне форума Ответить с цитированием
Старый 21.07.2009, 22:46   #6
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

Код:
#include <iostream>
#include <windows.h>
using namespace std;

void main()
{
	int i;
	
	i = 1;
	while (i<5000)
	{
		cout << "\\\r";
		Sleep(70);
		cout << "|\r";
		Sleep(70);
		cout << "/\r";
		Sleep(70);
		cout << "-\r";
		Sleep(70);
		++i;
	}
	cin.get();
}
counter вне форума Ответить с цитированием
Старый 21.07.2009, 23:04   #7
unicode
Форумчанин
 
Аватар для unicode
 
Регистрация: 16.04.2009
Сообщений: 162
По умолчанию

все супер, спасибо ограмное !!!
unicode вне форума Ответить с цитированием
Старый 22.07.2009, 00:14   #8
unicode
Форумчанин
 
Аватар для unicode
 
Регистрация: 16.04.2009
Сообщений: 162
По умолчанию

Код:
#include <iostream>
#include <windows.h>
using namespace std;

void main()
{
	for (int i = 1; i<101; ++i)
	{
		cout << "Downloading " << "\\\r" << i;
		Sleep(200);
		cout << "Downloading " << "|\r" << i;
		Sleep(200);
		cout << "Downloading " << "/\r" << i;
		Sleep(200);
		cout << "Downloading " << "-\r" << i;
		Sleep(200);
	}
	cin.get();
}
число почему то выводится перед строкой, я думаю что это из-за "\r", попробовал поставить "\b" - не то, у кого какие мнения
unicode вне форума Ответить с цитированием
Старый 22.07.2009, 00:21   #9
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

Код:
#include <iostream>
#include <windows.h>
using namespace std;

int main()
{
	for (int i = 1; i<101; ++i)
	{
		cout << "\rDownloading " << "\\" << i;
		Sleep(200);
		cout << "\rDownloading " << "|" << i;
		Sleep(200);
		cout << "\rDownloading " << "/" << i;
		Sleep(200);
		cout << "\rDownloading " << "-" << i;
		Sleep(200);
	}
	cin.get();
	return 0;
}
profi вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
анимация shad0w Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 13.12.2020 11:02
Анимация в С++ Streb Общие вопросы C/C++ 28 07.06.2009 19:07
Анимация BuTeK1 Паскаль, Turbo Pascal, PascalABC.NET 0 19.01.2009 00:30
анимация волшебная Общие вопросы Delphi 0 17.12.2008 21:01
Анимация SanekIrk Общие вопросы Delphi 2 15.08.2008 21:57