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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.08.2013, 22:59   #1
Dioklet
Новичок
Джуниор
 
Регистрация: 19.07.2013
Сообщений: 2
По умолчанию [C] цветной текст

Добрый день
надо сделать ввод текста и чтобы каждая буква была со случайным цветом и случайным фоном + рядом обозначение цвета и фона.
вроде как что то сделал но не знаю как привязать случайные цвета к вводу текста
Помогите пожалуйста
Код:
#include<conio.h>
#include <dos.h>
#include<windows.h>
#include<stdio.h>
#include <iostream>
#include <cstdlib>
#include <time.h>
#include <stdlib.h>
#define MAX 10
#define LEN 30
#define CLR_RESOLUTION 256
using namespace std;
enum ConsoleColor
{
        Black         = 0,
        Blue          = 1,
        Green         = 2,
        Cyan          = 3,
        Red           = 4,
        Magenta       = 5,
        Brown         = 6,
        LightGray     = 7,
        DarkGray      = 8,
        LightBlue     = 9,
        LightGreen    = 10,
        LightCyan     = 11,
        LightRed      = 12,
        LightMagenta  = 13,
        Yellow        = 14,
        White         = 15
}; 
 
void gotoxy(int xpos, int ypos)
{
  COORD scrn;    
 
  HANDLE hOuput = GetStdHandle(STD_OUTPUT_HANDLE);
 
  scrn.X = xpos; scrn.Y = ypos;
 
  SetConsoleCursorPosition(hOuput,scrn);
}
void SetColor(ConsoleColor text, ConsoleColor background)
{
    HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(hStdOut, (WORD)((background << 4) | text)); 
}
int main(void)
{
    char text[MAX][LEN];
    int t, i, j;
    
     int rand_ch,sum=0;
     srand(time(NULL));  
 
HANDLE handleConsole = GetStdHandle (STD_OUTPUT_HANDLE);
COORD cursorPosition;
short x=25 , y=5;
cursorPosition.X=x;
cursorPosition.Y=y;
SetConsoleCursorPosition(handleConsole, cursorPosition);
 
    HANDLE out_handle = GetStdHandle(STD_OUTPUT_HANDLE);
    COORD crd = {30, 10};
    SMALL_RECT src = {0, 0, crd.X-1, crd.Y-1};
    SetConsoleWindowInfo (out_handle, true, &src);
    SetConsoleScreenBufferSize (out_handle, crd);    
 
   gotoxy(0,0);
    for (int i=0;i<16;i++)
    {
         rand_ch = 0 + rand() %16;
         sum = rand_ch;
         i = sum;
        for (int j=0;j<16;j++)
        {
            rand_ch = 0 + rand() %16;
            sum = rand_ch;
            j = sum;
            SetColor(ConsoleColor(i),ConsoleColor(j));
        
                        printf("%d.%d",i,j);
        }
    }  
 
      
  for(t=0; t<MAX; t++) 
  {
    printf("", t);
 
    gets(text[t]);
  }
 
  for(i=0; i<t; i++) 
  {
    for(j=0; text[i][j]; j++)
        
        putchar(text[i][j]);
  }
 
return 0;
}
Dioklet вне форума Ответить с цитированием
Старый 01.08.2013, 23:46   #2
Marker21
Пользователь
 
Аватар для Marker21
 
Регистрация: 26.07.2013
Сообщений: 20
По умолчанию

Вместо
Цитата:
for (int i=0;i<16;i++)
{
rand_ch = 0 + rand() %16;
sum = rand_ch;
i = sum;
for (int j=0;j<16;j++)
{
rand_ch = 0 + rand() %16;
sum = rand_ch;
j = sum;
SetColor(ConsoleColor(i),ConsoleCol or(j));

printf("%d.%d",i,j);
}
}
Попробуй
Код:
srand(time(NULL));
for (int i=0;i<16;i++)
    {
         rand_ch =rand() %16;
        for (int j=0;j<16;j++)
        {
            sum =rand() %16;
            SetColor(ConsoleColor(rand_ch ),ConsoleColor(sum ));
        
                        printf("%d.%d",i,j);
        }
    }
Marker21 вне форума Ответить с цитированием
Старый 02.08.2013, 03:27   #3
Nuklon
Форумчанин
 
Аватар для Nuklon
 
Регистрация: 05.04.2012
Сообщений: 134
По умолчанию

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

#define F_COLOR(a, r, g, b) \
((FOREGROUND_INTENSITY*a)|(FOREGROUND_RED*r)|(FOREGROUND_GREEN*g)|(FOREGROUND_BLUE*b))

#define B_COLOR(a, r, g, b) \
((BACKGROUND_INTENSITY*a)|(BACKGROUND_RED*r)|(BACKGROUND_GREEN*g)|(BACKGROUND_BLUE*b))

#define RND(n) (rand() % n)




int  main(void) {
     HANDLE  hout = GetStdHandle(STD_OUTPUT_HANDLE); 

     char  s[128], ch;
     char* p = s;

     while((ch = getch()) != '\r') {
           SetConsoleTextAttribute(hout, F_COLOR(RND(2), RND(2), RND(2), RND(2)) |
                                            B_COLOR(RND(2), RND(2), RND(2), RND(2)));
           putch(ch); // echo
           if((p - s) < (sizeof(s) - 1))
                   *p++ = ch;
	}
        *p = '\0';

        SetConsoleTextAttribute(hout, F_COLOR(0,1,1,1) | B_COLOR(0,0,0,0));
        putch('\n');
        _cputs(s);
        _getch();
        return 0;
}
Nuklon вне форума Ответить с цитированием
Старый 04.08.2013, 11:13   #4
Dioklet
Новичок
Джуниор
 
Регистрация: 19.07.2013
Сообщений: 2
По умолчанию

спасибо за ответы
Dioklet вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
цветной текст (от новичка) skvor83 Microsoft Office Excel 1 11.02.2010 17:29
Цветной текст RichEdit KoBRaAndrey Общие вопросы Delphi 17 13.12.2009 17:52
Цветной текст в RichEdit - проблемы. Fezilk Общие вопросы Delphi 2 27.08.2009 12:06
Цветной текст ERASERROR Общие вопросы Delphi 4 25.01.2008 21:04