text color i spowalnianie, DevC, konsola

0

Witam!
Piszę w DevC programy konsolowe.
Wiecie może w jaki sposób zmienić kolor tekstu w oknie dos? Chodzi mi tylko o pewne elementy tekstu.
Szukam też pomysłu na jakiś zegar spowalniający.
Chodzi o to żeby wyświetlił się tekst a po np 10s (czas ustalam sam) Wyswietlała by się reszta tekstu.

Pozdrawiam.

0

Co do tego opóźnionego tekstu, to aplikacja musi wykonywać się w pętli (tak jak gry czy aplikacje okienkowe)

1
#include <windows.h>
#include <stdio.h>
#include <conio.h>

int main()
{
	HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
	printf("Ala ma ");
	SetConsoleTextAttribute(hOut, FOREGROUND_GREEN|FOREGROUND_INTENSITY);
	printf("zielonego");
	Sleep(10000); // 10 sekund
	SetConsoleTextAttribute(hOut, FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
	printf(" kota");
	_getch();
}

najlepiej zrobić jakąś ładną funkcję, np. set_text_color().

0

@Azarien Dziękuje ci bardzo wszystko chodzi :) A masz jakiś pomysł jak zrobić tą funkcje ale żeby w nawiasie podać atrybut set_text_color(RED) myślisz, że jest opcja czy lepiej zrobić sobie kilka funkcji każda na sztywno z kolorem.
Lubie to forum bo nigdy nie ma problemu z odpowiedzią na moje pytania :)

1
enum Colors { clRED=FOREGROUND_RED,clGREEN=FOREGROUND_GREEN,...};

albo inne podejście:

enum AppColors
  {
   clNormalText=FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE,
   clInputText=FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE|FOREGROUND_INTENSITY,
   clErrorText=FOREGROUND_RED|FOREGROUND_INTENSITY,
   ...
  };

Wtedy w jednym miejscu zmieniasz kolorowanie całego programu.
Można zastosować oba podejścia na raz, czyli w tym drugim użyć definicje z pierwszego.

boost ma timery, ale skoro już piszesz w WinAPI ( np: SetConsoleTextAttribute) to użyj typowego Sleep(1000) - 1000 milisekund.
Z tym że jeżeli chcesz aby program coś robił w trakcie tych kilku sekund to zastanów się nad CreateThread()

0

A tak z innej beczki bo nie chce zakładać nowego tematu. Czy jest jakaś możliwość na generowanie dźwięku innego niż \a albo czy można zmieniać częstotliwość dźwięku generowanego przez \a.

0
#include <iostream> 
#include <windows.h> // WinApi header 

using namespace std;

int main() 
{ 
    Beep(523,500); // 523 hertz (C5) for 500 milliseconds     
    cin.get(); // wait 
    return 0; 
}

Dzięki temu kodowi można generować dźwięk beep, można ustawiać częstotliwość i czas.
A w jaki sposób mogę zrobić taki myk, że będzie działał program a w tle będzie się odtwarzać moja muzyczka, jakoś nie mogę sobie tego zwizulizować w głowie.
Bo jak zapiszę swoja melodię jaką jakoś funkcję, to póki ta funkcja się nie skończy nie będę mógł wykonywać innych czynności.
Chciał bym np zrobić grę, za pomocą strzałek przemieszczam ludzika po dwuwymiarowej tablicy a w tle ciągle słychać moją muzyczkę, natrafiam na jakiś obiekt i muszę wpisać jakiś wyraz i cały czas leci moja muzyka. Jakieś pomysły?

0
#pragma comment(lib, "strmiids.lib")

#include <atlbase.h>
#include <dshow.h>

struct CCoInit
{ 
	CCoInit() { CoInitialize(NULL); }
	~CCoInit() { CoUninitialize(); }
};

int main()
{
	CCoInit init;
	CComPtr<IGraphBuilder> graph;
	graph.CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER);

	graph->RenderFile(L"Therion - Asgard.mp3", NULL); // HELL, YEAH!
	CComQIPtr<IMediaControl>(graph)->Run();

	LONG dummy;
	CComQIPtr<IMediaEvent>(graph)->WaitForCompletion(INFINITE, &dummy);
}
0

Ale co to ma być za muzyka? Chcesz odtwarzać jakiś plik mp3?

Jak plik mp3 to można skorzystać z funkcji mciSendString
http://msdn.microsoft.com/pl-pl/library/windows/desktop/dd757161%28v=vs.85%29.aspx

1 użytkowników online, w tym zalogowanych: 0, gości: 1