C++ | Console aynı satırda birden fazla renkli yazı yazdırmak

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Seçkin Üye
Katılım
3 Mar 2020
Mesajlar
409
Çözümler
4
Tepki puanı
51
Ödüller
6
6 HİZMET YILI
Merhaba arkadaşlar birkaç proje üstünde çalışıyorum ve başlamadan önce sizlere bir yardımım dokunsun istedim

İlk önce ConsoleColor.h adında bir üst bilgi oluşturalım. Kodlar şu şekilde:

Kod:
#pragma once
#include <iostream>
#include <windows.h>

inline std::ostream& blue(std::ostream& s)
{
    HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(hStdout, FOREGROUND_BLUE
        | FOREGROUND_GREEN | FOREGROUND_INTENSITY);
    return s;
}

inline std::ostream& red(std::ostream& s)
{
    HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(hStdout,
        FOREGROUND_RED | FOREGROUND_INTENSITY);
    return s;
}

inline std::ostream& green(std::ostream& s)
{
    HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(hStdout,
        FOREGROUND_GREEN | FOREGROUND_INTENSITY);
    return s;
}

inline std::ostream& yellow(std::ostream& s)
{
    HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(hStdout,
        FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_INTENSITY);
    return s;
}

inline std::ostream& white(std::ostream& s)
{
    HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(hStdout,
        FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
    return s;
}

struct color {
    color(WORD attribute) :m_color(attribute) {};
    WORD m_color;
};

template <class _Elem, class _Traits>
std::basic_ostream<_Elem, _Traits>&
operator<<(std::basic_ostream<_Elem, _Traits>& i, color& c)
{
    HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(hStdout, c.m_color);
    return i;
}

Daha sonra tabiki kütüphanemize ekliyoruz.

Kod:
#include "ConsoleColor.h"
#include <windows.h>

Daha sonra bizim yapmamız gereken başka bir şey kalmıyor.

Kod:
    std::cout << white << "Author:" << yellow << " CommunityXS\n";
    std::cout << white << "Game:" << yellow << " Valor@nt\n";

Çıktı:

 
Seçkin Üye
Katılım
4 Ocak 2021
Mesajlar
311
Çözümler
1
Tepki puanı
36
Ödüller
4
Yaş
29
5 HİZMET YILI
İşe yarayacak eğlenceli bir bilgi teşekkür ederiz.
 
ÖLÜM ÖLÜM DEDİĞİN NEDİR Kİ GÜLÜM
Efsane Üye
Katılım
26 Şub 2016
Mesajlar
11,174
Çözümler
139
Tepki puanı
3,968
Ödüller
19
Yaş
27
10 HİZMET YILI
Güzel çalışma bu bilgileri bizle paylaştığın için teşekkürler.
 
Banlı Üye
Katılım
2 Ara 2020
Mesajlar
128
Çözümler
1
Tepki puanı
44
5 HİZMET YILI
C++:
#include <iostream>
#include <Windows.h>

class Color
{
public:
    Color(int desiredColor) {
        consoleHandle = GetStdHandle(STD_OUTPUT_HANDLE);
        color = desiredColor;
    }

    friend ostream& operator<<(ostream& ss, Color obj) {
        SetConsoleTextAttribute(obj.consoleHandle, obj.color);
        return ss;
    }
private:
    int color;
    HANDLE consoleHandle;
    /*
    0 = black
    1 = blue
    2 = green
    3 = light blue
    4 = red
    5 = purple
    6 = gold
    7 = white
    */
};
void printlogo()
{

    system("cls");
    std::cout << Color(4) << R"(
                                     __                     
\ \      / / () | _| |   ()    _| |        | | _   
 \ \ /\ / / '| | __/  \ |   | | ' \ /  \  | \ / /  / | | | | /  | '|
  \ V  V /| |  | | ||  / |__| | | | |  / |_ >  <  / (| || | || () | |
   _/_/ ||  ||__|__||| ||_|__//__|_|_,|___/||
        )";
    std::cout << "\n";
}

int main()
{
    printlogo();
}
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...