Quantcast
Channel: Tópicos
Viewing all articles
Browse latest Browse all 11336

C Windows Console SetTimer

$
0
0
Em suma o que eu pretendo e não consegui realizar em C após varias horas de pesquisa e tentativas é que o texto Mastermind mude de cor de 3 em 3 segundos sem afetar o funcionamento do jogo, permitindo ao utilizador usar o menu do jogo, pois o pretendido é que ao sair do menu o texto seja removido e o timer destruido. Boa noite, Estou a desenvolver um jogo simples em C para Windows que funcione na linha de comandos, no meu do jogo ao iniciar apresento uma tela de boas-vindas com o nome do jogo escrito em ASCII gerado neste site http://www.patorjk.com/software/taag/, eu gostaria que a cor do texto mudasse para uma cor aleatório de tantos em tantos segundos, no caso já tenho o código para mudar a cor a funcionar, no entanto não estou a conseguir criar um Timer para mudar a cor de tantos em tantos segundos. No caso estou a usar funções da biblioteca Windows.h para trabalhar com a linha de comandos. void CALLBACK changeWelcomeColor ( HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime ) { FillConsoleOutputAttribute ( hStdout, FOREGROUND_BLUE, cCharsWritten, ( COORD ) { 0, 0 }, NULL ); } void displayWelcome ( HANDLE hStdout ) { static const char asciiTitle [ ] = "\n\ __ __ _ _ _\n\ | \\/ | | | (_) | |\n\ | \\ / | __ _ ___| |_ ___ _ __ _ __ ___ _ _ __ __| |\n\ | |\\/| |/ _` / __| __/ _ \\ '__| '_ ` _ \\| | '_ \\ / _` |\n\ | | | | (_| \\__ \\ || __/ | | | | | | | | | | | (_| |\n\ |_| |_|\\__,_|___/\\__\\___|_| |_| |_| |_|_|_| |_|\\__,_|\n"; LPDWORD cCharsWritten; WriteConsole ( hStdout, asciiTitle, sizeof ( asciiTitle ), cCharsWritten, NULL ); SetTimer ( NULL, 0, 3 * 1000, changeWelcomeColor ); } Este é o código que tenho momento, o que eu pretendo é que a função FillConsoleOutputAttribute seja executada de 3 em 3 segundos, no entanto este timer não pode interferir com o funcionamento do programa pois o menu tem de funcionar enquanto o timer é executado, por esse motivo eu tentei usar a função SetTimer para não interferir com o restante funcionamento do programa. Nota que as variáveis hStdout e cCharsWritten da função FillConsoleOutputAttribute tem de ser passadas ao chamar o timer, algo que eu não consegui fazer, pesquisei varias formas de fazer isto mas a maioria das soluções são para C++ ou não funcionaram. A parte da questão das variáveis não estarem definidas ao chamar a função existe um outra problema, pois eu testei o timer escrevendo umas letras e parece que o timer não funcionou. Desde já agradeço o tempo disposto.

Viewing all articles
Browse latest Browse all 11336

Latest Images

Trending Articles



Latest Images